<!-- import outer proper

Similar documents
在Spring中使用Kafka:Producer篇

EJB-Programming-3.PDF

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc

EJB-Programming-4-cn.doc

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc

IoC容器和Dependency Injection模式.doc

将 MD5 的工具类拷贝到项目中 二 微服务模块的搭建 我们将权限的查询放到一个单独的模块中, 这个模块提供接口供给消费者远程调用 (RPC), 这次范例是微服开发的雏形, 在以后你使用 springcloud 的时候会使用到今天的概念 1 使用 maven 创建新的模块 (microboot-sh

2. AOP 底层技术实现 小风 Java 实战系列教程 关键词 : 代理模式 代理模型分为两种 : 1) 接口代理 (JDK 动态代理 ) 2) 子类代理 (Cglib 子类代理 ) 需求 :CustomerService 业务类, 有 save,update 方法, 希望在 save,updat

"+handlermethod.getbean().getclass().getname()); public void aftercompletion(httpservletrequest req, HttpServletResponse resp, Object handler, Excepti

Microsoft Word - ch04三校.doc

服务框架 HSF 使用与配置 一江更新时间 : 目录 HSF 常用 OPS 和开发工具介绍... 1 HSF 的使用和配置... 2 下载和安装 HSF... 2 服务开发与部署... 5 服务查询 服务调用 HSFUNIT 测试包的使用 HSF

Microsoft PowerPoint - ch6 [相容模式]

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

无类继承.key

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

epub83-1

RunPC2_.doc

untitled

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

拦截器(Interceptor)的学习

untitled

JBuilder Weblogic

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款

Chapter 9: Objects and Classes

untitled

new 进行创建对象, 是程序主动去创建依赖对象 ; 而 IoC 是有专门一个容器来创建这些对象, 即由 Ioc 容器来控制对象的创建 ; 谁控制谁? 当然是 IoC 容器控制了对象 ; 控制什么? 那就是主要控制了外部资源获取 ( 不只是对象包括比如文件等 ) 为何是反转, 哪些方面反转了 : 有

Microsoft Word - 01.DOC

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

4.1 AMI MQSeries API AMI MQI AMI / / AMI JavaC C++ AMI / AMI AMI - / /

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

weblogic

软件工程文档编制

Microsoft Word - Learn Objective-C.doc

1

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票

正文(新).indd

设计模式 Design Patterns

「西醫基層總額支付委員會《第28次委員會議紀錄

本章学习目标 小风 Java 实战系列教程 Shiro 核心功能 Shiro 的 Web 集成 Spring 与 Shiro 整合 SpringBoot 整合 Shiro 1. Shiro 核心功能 1.1. RBAC 模型 在 RBAC 的模型, 涉及到三个关键的元素 : 1) 用户 : 系统的使

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

Java

Stateless Session Beans(无状态bean)的学习

IOC

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

untitled

手说TTS开发指南

输入 project name 选择完成

FileMaker 16 ODBC 和 JDBC 指南

文档 3

IP505SM_manual_cn.doc

<313031A4C9BEC7C160BA5DB3E A457BAF4A4BDA769AAA9292E584C53>

nbqw.PDF

PowerPoint Presentation

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌

( 总 第 1073 期 ) 浙 江 省 人 民 政 府 主 办 2015 年 3 月 17 日 出 版 省 政 府 令 省 政 府 文 件 目 录 浙 江 省 大 型 群 众 性 活 动 安 全 管 理 办 法 ( 浙 江 省 人 民 政 府 令 第 333 号 ) (3) 浙 江 省 人 民 政

第03章 控制反转(Spring IoC)

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii

D C 93 2

Chapter 9: Objects and Classes

1.5招募说明书(草案)

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

AL-M200 Series

Microsoft PowerPoint - L17_Inheritance_v4.pptx

ebook140-8

《计算概论》课程 第十九讲 C 程序设计语言应用

c_cpp

TWLOM060929

使用 XFire 与 Spring 开发 Web Service 2 实现功能与特点 基于 J2EE 平台的 Web Service 服务 开发方便, 配置简单 设计接口 实现服务 配置暴露接口 XFire 将自动生成对应的 wsdl 支持高级详细配置 与 Spring 无缝集成 运行环境 JDK

目 录 第 一 部 分 档 案 局 概 况 一 主 要 职 责 二 部 门 决 算 单 位 构 成 第 二 部 分 档 案 局 2016 年 度 部 门 预 算 表 一 2016 年 度 市 级 部 门 收 支 预 算 总 表 二 2016 年 度 市 级 部 门 支 出 预 算 表 三 2016

2015 年 度 收 入 支 出 决 算 总 表 单 位 名 称 : 北 京 市 朝 阳 区 卫 生 局 单 位 : 万 元 收 入 支 出 项 目 决 算 数 项 目 ( 按 功 能 分 类 ) 决 算 数 一 财 政 拨 款 一 一 般 公 共 服 务 支 出 二

第一章 章标题-F2 上空24,下空24

untitled

國家圖書館典藏電子全文

1.2. Sql 映射配置 小风 Java 实战系列教程 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//dtd Mapper 3.0//EN" "

ebook71-13

59 1 CSpace 2 CSpace CSpace URL CSpace 1 CSpace URL 2 Lucene 3 ID 4 ID Web 1. 2 CSpace LireSolr 3 LireSolr 3 Web LireSolr ID

Microsoft PowerPoint - plan08.ppt

untitled

JavaIO.PDF

Struts2自定义类型转换.doc

使用MapReduce读取XML文件

在所有的项目开发中, 一定是多人协作的团队开发, 但是使用框架就会出现一个问题, 我们所 有的 Action 以及相关的路径都要求在我们的 struts.xml 文件中配置, 如果所有的人去修改一个 文件, 那么就会变得混乱, 而且有可能出现冲突, 那么在 struts.xml 文件中为了解决这个问


06-4.indd

res/layout 目录下的 main.xml 源码 : <?xml version="1.0" encoding="utf 8"?> <TabHost android:layout_height="fill_parent" xml

Servlet

ebook70-11

Oracle 4

2014春小学、幼儿园校本教研总结.doc

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指

基于ECO的UML模型驱动的数据库应用开发1.doc

设计模式 Design Patterns

Microsoft PowerPoint - 09Future

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF

K7VT2_QIG_v3

Guide to Install SATA Hard Disks

优迈科技教学大纲2009版本

Transcription:

概述 基于 Spring 支持的客户端编程, 包括发送方客户端 接收方客户端 发送方客户端代码 :jms-producer 接收方客户端代码 :jms-consumer 发送方客户端 这里基于 demo 进行说明 这个 demo 将往 example.queue 和 example.topic 各发一条信息 文件目录结构 1. src/main/resources/ 2. ---- jndi.properties 3. ---- spring-beans.xml 4. src/main/java/ 5. ---- cn.sinobest.asj.producer.springsupport.simple 6. ---- SimpleProducer.java # 发送测试类 7. pom.xml 文件内容 1.jndi.properties 1. java.naming.factory.initial=org.apache.activemq.jndi.activemqinitialcontextfactor y 2. 3. # use the following property to configure the default connector 4. java.naming.provider.url=tcp://localhost:61616 5. 6. # register some queues in JNDI using the form 7. # queue.[jndiname] = [physicalname] 8. queue.examplequeue=example.queue 9. 10. # register some topics in JNDI using the form 11. # topic.[jndiname] = [physicalname] 12. topic.exampletopic=example.topic 2.spring-beans.xml 1. <?xml version="1.0" encoding="utf-8"?> 2. <beans xmlns="http://www.springframework.org/schema/beans" 3. xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" 4. xmlns:context="http://www.springframework.org/schema/context" 5. xsi:schemalocation="http://www.springframework.org/schema/beans 6. http://www.springframework.org/schema/beans/spring-beans-4.2.xsd

7. http://www.springframework.org/schema/context 8. http://www.springframework.org/schema/context/spring-context-4.2.xsd"> 9. <!-- import outer properties file --> 10. <context:property-placeholder location="classpath:jndi.properties" /> 11. 12. <!-- create pooled connection factory --> 13. <bean id="pooledconnectionfactory" class="org.apache.activemq.pool.pooledconnect ionfactory"> 14. <property name="connectionfactory"> 15. <bean class="org.apache.activemq.activemqconnectionfactory"> 16. <property name="brokerurl" value="${java.naming.provider.url}" /> 17. <property name="closetimeout" value="60000" /> 18. </bean> 19. </property> 20. </bean> 21. 22. <!-- create queue destination --> 23. <bean id="examplequeue" class="org.apache.activemq.command.activemqqueue"> 24. <constructor-arg value="${queue.examplequeue}" /> 25. </bean> 26. 27. <!-- create topic destination --> 28. <bean id="exampletopic" class="org.apache.activemq.command.activemqtopic"> 29. <constructor-arg value="${topic.exampletopic}" /> 30. </bean> 31. 32. <!-- create template for send message --> 33. <bean id="jmstemplate" class="org.springframework.jms.core.jmstemplate"> 34. <!-- bind the connection factory --> 35. <property name="connectionfactory" ref="pooledconnectionfactory" /> 36. <!-- bind the default destination, but you can also appoint other destina tion when send --> 37. <property name="defaultdestination" ref="examplequeue" /> 38. </bean> 39. </beans> 说明 : JmsTemplate 提供了多个重载的 send 方法, 用于发送消息, 但是它依赖于 ConnectionFactory 资 源 在声明 ConnectionFactory 资源时, 我们使用 PooledConnectionFactory 包装 ActiveMQConnectionFactory [1], 这是为了有效的利用资源, 就像 JDBC 中的连接池 此外, 还声明了两个 Destination:exampleQueue 和 exampletopic, 并将 examplequeue 作 为 jmstemplate 的 defaultdestination 另一个 exampletopic, 将在 SimpleProducer.java 中使用 这里使用 ${java.naming.provider.url} 的方式引用的属性值, 都来自 jndi.properties 注 : 1. 在我参考的系列文章中, 还有使用 org.springframework.jms.connection.singleconnectionfactory 来包 装 ActiveMQConnectionFactory 的 另外, 我觉得直接使用 ActiveMQConnectionFactory 也可以 3.SimpleProducer.java

1. package cn.sinobest.asj.producer.springsupport.simple; 2. 3. import javax.annotation.resource; 4. import javax.jms.destination; 5. import javax.jms.jmsexception; 6. import javax.jms.message; 7. import javax.jms.session; 8. import javax.jms.textmessage; 9. 10. import org.junit.test; 11. import org.junit.runner.runwith; 12. import org.springframework.jms.core.jmstemplate; 13. import org.springframework.jms.core.messagecreator; 14. import org.springframework.test.context.contextconfiguration; 15. import org.springframework.test.context.junit4.springjunit4classrunner; 16. /** 17. * 单元测试类.<br> 18. * 基于 Spring 运行环境的测试. 19. * @author lijinlong 20. * 21. */ 22. @RunWith(SpringJUnit4ClassRunner.class) // 配置 spring 组件运行时 23. @ContextConfiguration("/spring-beans.xml") // 配置文件 24. public class SimpleProducer { 25. @Resource(name="exampleTopic") 26. private Destination exampletopic; 27. 28. @Resource(name="jmsTemplate") 29. private JmsTemplate jmstemplate; 30. 31. @Test 32. public void test() { 33. // 发送到默认的 destination - queue 34. jmstemplate.send(new MessageCreator() { 35. 36. public Message createmessage(session session) throws JMSException { 37. TextMessage msg = session.createtextmessage(); 38. msg.settext("this message is plan to the queue."); 39. return msg; 40. } 41. }); 42. 43. // 发送到指定的 destination - topic 44. jmstemplate.send(exampletopic, new MessageCreator() { 45. 46. public Message createmessage(session session) throws JMSException { 47. TextMessage msg = session.createtextmessage(); 48. msg.settext("this message is plan to the topic."); 49. return msg; 50. } 51. }); 52. } 53. } 说明 :

使用 RunWith 注解, 为单元测试类指定 Spring 运行环境, 就可以在单元测试类中接受依赖的注 入 使用 ContextConfiguration 注解, 进一步指定 spring beans 的配置文件 test 方法是测试方法, 它使用不同的重载的 send 方法, 分别向默认的 Destination exampletopic destination 发送消息 MessageCreator 是一个消息创建器, 在消息的接收方式和消息的筛选一 文,SendTemplate.java 提供的抽象方法 createmessage(session) 与之是相似的思路 JmsTemplate 的 send 方法 : send(string destinationname, MessageCreator messagecreator):void 将 messagecreator 创建的消息, 发送到 destinationname 指定的目的地 destinationname: 目的地的名称, 具体按照 queue 还是 topic 解析, 需要另外的参数指定 [1] ; 默认情况应该是按照 queue 来解析的 messagecreator: 回调接口, 提供回调方法, 基于 Session 创建消息 send(destination destination, MessageCreator messagecreator):void 将 messagecreator 创建的消息, 发送到指定的 Destination send(messagecreator messagecreator):void 将 messagecreator 创建的消息, 发送到默认的 Destination 注 : 1. 应该是在声明 JmsTemplate bean 时, 指定 pubsubdomain 属性 :false - Queues;true - Topics 4.pom.xml 这里仅记录添加的依赖, 完整的内容可以参考 pom.xml 1. <!-- import org.apache.activemq.pool.pooledconnectionfactory using in spring-bean s.xml --> 2. <dependency> 3. <groupid>org.apache.activemq</groupid> 4. <artifactid>activemq-pool</artifactid> 5. <version>5.13.2</version> 6. </dependency> 7. <!-- import for unit test --> 8. <dependency> 9. <groupid>junit</groupid> 10. <artifactid>junit</artifactid> 11. <version>4.12</version> 12. </dependency> 13. <!-- import spring support --> 14. <dependency> 15. <groupid>org.springframework</groupid> 16. <artifactid>spring-context</artifactid> 17. <version>4.2.4.release</version> 18. </dependency> 19. <dependency> 20. <groupid>org.springframework</groupid> 21. <artifactid>spring-jms</artifactid>

22. <version>4.2.4.release</version> 23. </dependency> 24. <dependency> 25. <groupid>org.springframework</groupid> 26. <artifactid>spring-test</artifactid> 27. <version>4.2.4.release</version> 28. </dependency> 接收方客户端 这里基于 demo 进行说明 这个 demo 将接收 example.queue 和 example.topic 的消息 文件目录结构 1. src/main/resources/ 2. ---- jndi.properties 3. ---- spring-beans.xml 4. src/main/java/ 5. ---- cn.sinobest.asj.consumer.util 6. ---- Hold.java # 提供 pause 功能 7. ---- cn.sinobest.asj.consumer.springsupport.simple 8. ---- SimpleConsumer.java # 单元测试类 9. pom.xml 文件内容 1.jndi.properties 1. java.naming.factory.initial=org.apache.activemq.jndi.activemqinitialcontextfactor y 2. 3. # use the following property to configure the default connector 4. java.naming.provider.url=tcp://localhost:61616 5. 6. # register some queues in JNDI using the form 7. # queue.[jndiname] = [physicalname] 8. queue.examplequeue=example.queue 9. 10. # register some topics in JNDI using the form 11. # topic.[jndiname] = [physicalname] 12. topic.exampletopic=example.topic 2.spring-beans.xml 1. <?xml version="1.0" encoding="utf-8"?> 2. <beans xmlns="http://www.springframework.org/schema/beans" 3. xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" 4. xmlns:context="http://www.springframework.org/schema/context" 5. xmlns:jms="http://www.springframework.org/schema/jms"

6. xsi:schemalocation="http://www.springframework.org/schema/beans 7. http://www.springframework.org/schema/beans/spring-beans-4.2.xsd 8. http://www.springframework.org/schema/context 9. http://www.springframework.org/schema/context/spring-context-4.2.xsd 10. http://www.springframework.org/schema/jms 11. http://www.springframework.org/schema/jms/spring-jms-4.2.xsd"> 12. <!-- import outer properties file --> 13. <context:property-placeholder location="classpath:jndi.properties" /> 14. 15. <!-- create pooled connection factory --> 16. <bean id="pooledconnectionfactory" class="org.apache.activemq.pool.pooledconnect ionfactory"> 17. <property name="connectionfactory"> 18. <bean class="org.apache.activemq.activemqconnectionfactory"> 19. <property name="brokerurl" value="${java.naming.provider.url}" /> 20. <property name="closetimeout" value="60000" /> 21. </bean> 22. </property> 23. </bean> 24. 25. <bean id="simpleconsumer" class="cn.sinobest.asj.consumer.springsupport.simple.s impleconsumer" /> 26. 27. <!-- config listener container for queues --> 28. <jms:listener-container connection-factory="pooledconnectionfactory"> 29. <jms:listener destination="${queue.examplequeue}" ref="simpleconsumer" 30. method="onmessagefromqueue" /> 31. </jms:listener-container> 32. 33. <!-- config listener container for topics --> 34. <jms:listener-container connection-factory="pooledconnectionfactory" 35. destination-type="topic"> 36. <jms:listener destination="${topic.exampletopic}" ref="simpleconsumer" 37. method="onmessagefromtopic" /> 38. </jms:listener-container> 39. </beans> 说明 : 这里声明了两个 listener-container, 这是我们分析配置的起点 listener-container 用于管理 listener:listener-container 的 connection-factory 依赖于 ConnectionFactory 实例,destination-type 标识 listener 监听的 destination 的类型, 默认为 queue listener 配置监听器 :destination 配置监听的目的地,ref method 分别配置消息处理 bean 和方法 监听器收到消息之后, 会调用对应的 bean 方法 [1] simpleconsumer 作为消息处理 bean, 对于这个类本身没有特殊的要求 这里使用 ${java.naming.provider.url} 的方式引用的属性值, 都来自 jndi.properties 注 : 1. 要求配置的方法的参数只有一个, 且类型和 Message 中封装的数据类型兼容 比如 Message 是 一个 TextMessage, 那么 String 类型足以满足 ; 如果 Message 是一个 ObjectMessage, 且封装的 Object 是字符串数组类型, 那就要提供一个可以兼容字符串数组的参数类型 提供重载的方 法,Spring 会在类型兼容的前提下, 选择一个最接近的方法调用

基于 bean 的配置 这是另外一种异步接收的配置方式 : 1. <bean id="messagecontainer" 2. class="org.springframework.jms.listener.defaultmessagelistenercontainer"> 3. <property name="connectionfactory" ref="connectionfactory" /> 4. <property name="destination" ref="destination" /> 5. <property name="messagelistener" ref="messagelistener" /> 6. </bean> 两种配置的比较 基于 listener-container 的配置 一个 container 可以配置多个 listener 配置消息处理类来接收消息, 且对这个类没 有类型的要求 对 Message 进行了预处理 : 根据接收到的 Message 的类型进行解封, 根据解封的类型选 择一个兼容的处理方法调用 基于 bean 的配置 一个 container 只能配置一个 listener 用 messagelistener 属性配置消息监听器, 要 求实现 javax.jms.messagelistener 接口 没有对 Message 进行预处理 同步接收方式 JmsTemplate 同样提供了一系列 receive 方法来接受消息 参考前文发送方客户端发送方客户端中配置 JmsTemplate 的方式, 然后调用 receive 方法进行同步接收 receive 系列方法, 只是单纯的接收, 返回的结果是 javax.jms.message 类型 receiveselected 系列方法, 在 receive 系列方法的基础上加入了选择器 receiveandconvert 系列方法, 接收并转换, 返回的是 Object 类型 ( 实际类型是 Message 内部 封装的类型 ) receiveselectedandconvert 系列方法, 在 receiveandconvert 系列方法的基础上加入了选择 器 3.Hold.java 1. package cn.sinobest.asj.consumer.util; 2. /** 3. * 防止程序立即退出.<br> 4. * @author lijinlong 5. * 6. */ 7. public class Hold { 8. /** 9. * 防止程序立即退出, 直到用户输入 Enter 键. 10. */ 11. public static void hold() { 12. @SuppressWarnings("resource")

13. java.util.scanner scanner = new java.util.scanner(system.in); 14. System.out.println(" 按 Enter 键退出 :"); 15. scanner.nextline(); 16. } 17. } 基于异步的接收方式, 需要防止主线程执行完毕后退出 4.SimpleConsumer.java 1. package cn.sinobest.asj.consumer.springsupport.simple; 2. 3. import org.junit.test; 4. import org.junit.runner.runwith; 5. import org.springframework.test.context.contextconfiguration; 6. import org.springframework.test.context.junit4.springjunit4classrunner; 7. 8. import cn.sinobest.asj.consumer.util.hold; 9. 10. @RunWith(SpringJUnit4ClassRunner.class) 11. @ContextConfiguration("/spring-beans.xml") 12. public class SimpleConsumer { 13. @Test 14. public void test() { 15. Hold.hold(); 16. } 17. 18. public void onmessagefromqueue(string message) { 19. System.out.println(" 从 queue 收到消息 :" + message); 20. } 21. 22. public void onmessagefromtopic(string message) { 23. System.out.println(" 从 Topic 收到消息 :" + message); 24. } 25. } 5.pom.xml 这里仅记录添加的依赖, 完整的内容可以参考 pom.xml 1. <!-- import org.apache.activemq.pool.pooledconnectionfactory using in spring-bean s.xml --> 2. <dependency> 3. <groupid>org.apache.activemq</groupid> 4. <artifactid>activemq-pool</artifactid> 5. <version>5.13.2</version> 6. </dependency> 7. <!-- import for unit test --> 8. <dependency> 9. <groupid>junit</groupid> 10. <artifactid>junit</artifactid> 11. <version>4.12</version> 12. </dependency> 13. <!-- import spring support -->

14. <dependency> 15. <groupid>org.springframework</groupid> 16. <artifactid>spring-context</artifactid> 17. <version>4.2.4.release</version> 18. </dependency> 19. <dependency> 20. <groupid>org.springframework</groupid> 21. <artifactid>spring-jms</artifactid> 22. <version>4.2.4.release</version> 23. </dependency> 24. <dependency> 25. <groupid>org.springframework</groupid> 26. <artifactid>spring-test</artifactid> 27. <version>4.2.4.release</version> 28. </dependency> 测试 1. 启动 ActiveMQ 2. 以 JUnit 的方式运行 SimpleConsumer.java 3. 以 JUnit 的方式运行 SimpleProducer.java 4. 在 SimpleConsumer 的控制台可以看到接收到的消息 附录 参考文章 1. Apache-ActiveMQ 整合 Spring 使用 JmsTemplate 发送消息, 基于 bean 的消息接收配置,JUnit 集成 Spring 的单元测试 2. ActiveMQ 使用示例 基于 listener-container 的消息接收配置, 使用 PooledConnectionFactory 配置连接池 3. Spring Support

ActiveMQ 官方文档