上文可见,JMS Native API使用起来不是特别方便。好在Spring提供了很好的JMS支持。

(一)配置ConnectionFactory 
如果使用连接池的话,不要忘记activemq-pool-5.6.0.jar

Xml代码  
  1. <bean id="connectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop">
  2. <property name="connectionFactory" ref="innerConnectionFactory" />
  3. </bean>
  4. <bean id="innerConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
  5. <property name="brokerURL" value="tcp://localhost:61616" />
  6. </bean>

(二)配置一个Destination作为默认投递目标

Xml代码  
  1. <bean id="defaultDestination" class="org.apache.activemq.command.ActiveMQQueue">
  2. <constructor-arg index="0" value="ztgame.amt.default.queue" />
  3. </bean>

(三)核心JmsTemplate

Xml代码  
  1. <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
  2. <property name="connectionFactory" ref="connectionFactory" />
  3. <property name="defaultDestination" ref="defaultDestination" />
  4. </bean>

(四)JMS事务

Xml代码  
  1. <bean id="jmsTransactionManager" class="org.springframework.jms.connection.JmsTransactionManager">
  2. <property name="connectionFactory" ref="connectionFactory" />
  3. </bean>
  4. <tx:annotation-driven transaction-manager="jmsTransactionManager" />

(五)编写消息驱动Bean,两个接口实现一个即可

  • javax.jms.MessageListener
  • org.springframework.jms.listener.SessionAwareMessageListener
Java代码  
  1. package com.ztgame.amt.jms.mdp;
  2. import javax.jms.JMSException;
  3. import javax.jms.Session;
  4. import javax.jms.TextMessage;
  5. import org.springframework.jms.listener.SessionAwareMessageListener;
  6. import org.springframework.stereotype.Component;
  7. @Component("defaultMessageHandler")
  8. public class DefaultMessageHandler implements SessionAwareMessageListener<TextMessage> {
  9. public void onMessage(TextMessage message, Session session)
  10. throws JMSException {
  11. String text = message.getText();
  12. if (text.length() == 0) {
  13. System.out.println("<empty>");
  14. } else {
  15. System.out.println(text);
  16. }
  17. }
  18. }

(六)配置消息驱动Bean

Xml代码  
  1. <!-- Message Driven POJOs -->
  2. <jms:listener-container connection-factory="connectionFactory">
  3. <jms:listener destination="ztgame.amt.default.queue" ref="defaultMessageHandler" />
  4. </jms:listener-container>

(七)编写测试代码

Java代码  
  1. package junit;
  2. import java.util.UUID;
  3. import javax.annotation.Resource;
  4. import javax.jms.JMSException;
  5. import javax.jms.Message;
  6. import javax.jms.Session;
  7. import org.junit.Test;
  8. import org.springframework.jms.core.JmsTemplate;
  9. import org.springframework.jms.core.MessageCreator;
  10. import org.springframework.test.context.ContextConfiguration;
  11. import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
  12. @ContextConfiguration({ "classpath:spring-beans.xml", "classpath:spring-jms.xml" })
  13. public class TestSomeService extends AbstractJUnit4SpringContextTests {
  14. @Resource
  15. private JmsTemplate jmsTempalte;
  16. @Test
  17. public void test() {
  18. jmsTempalte.send(new MessageCreator() {
  19. public Message createMessage(Session session) throws JMSException {
  20. return session.createTextMessage(UUID.randomUUID().toString());
  21. }
  22. });
  23. }
  24. }

  • spring-jms.zip (805 Bytes)
  • 下载次数: 58

ActiveMQ学习笔记(二) JMS与Spring相关推荐

  1. ActiveMQ学习笔记(2)——JMS消息模型

    2019独角兽企业重金招聘Python工程师标准>>> 1.1 JMS模型简介 JMS支持两种消息通信模型: 点对点模型(Point to Point,P2P) 发布者/订阅者模型( ...

  2. Spring Boot 框架学习笔记(二)(配置文件与数据注入 yaml基本语法 JSR303数据验证 多环境切换 )

    Spring Boot 框架学习笔记(二) 六.appliaction.properties配置与数据注入 6.1 `@Value`注解 测试注入数据 读取输入流 6.2 读取配置文件数据注入 单文件 ...

  3. Spring Security技术栈学习笔记(十三)Spring Social集成第三方登录验证开发流程介绍

    开发第三方登录,我们必须首先要了解OAuth协议(本文所讲述的OAuth协议指的是OAuth2协议),本文首先简单介绍OAuth协议,然后基于Spring Social来阐述开发第三方登录需要做哪些准 ...

  4. motan学习笔记 二 motan架构分析

    motan学习笔记 一 微博轻量级RPC框架Motan motan学习笔记 二 motan架构分析 motan学习笔记 三 motan Demo 分析 motan学习笔记 四 motan Demo 之 ...

  5. ActiveMQ学习笔记07 - 优缺点

    2019独角兽企业重金招聘Python工程师标准>>> 优点: 可以用JDBC 虽然使用JDBC会降低ActiveMQ的性能,但是数据库一直都是开发人员最熟悉的存储介质.将消息存到数 ...

  6. Spring Security技术栈学习笔记(八)Spring Security的基本运行原理与个性化登录实现

    正如你可能知道的两个应用程序的两个主要区域是"认证"和"授权"(或者访问控制).这两个主要区域是Spring Security的两个目标."认证&qu ...

  7. 码匠社区学习笔记(二)

    所需资料 教程视频地址 Bootstrap spring模板 elasticsearch中文社区(想模仿的效果) 码云aAuth 获取授权用户的资料 github第三方授权文档 码匠社区学习笔记(二) ...

  8. springmvc学习笔记二:重定向,拦截器,参数绑定

    springmvc学习笔记二:重定向,拦截器,参数绑定 Controller方法返回值 返回ModelAndView controller方法中定义ModelAndView对象并返回,对象中可添加mo ...

  9. qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)

    原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7851 ...

最新文章

  1. php汉字的截取,php汉字截取
  2. Confluence 6 中样式化字体
  3. 两个tplink路由器有线桥接_tplink和腾达路由器有线桥接设置图解
  4. 量子计算机具有天热的,量子绝热计算
  5. 【算法系列之一】二叉树最小深度
  6. 躺枪实惨!与新冠病毒“重名”,这款墨西哥国民啤酒宣布暂停生产...
  7. ios 给网页传值_iOS开发—页面传值汇总
  8. swift 引用其他类_浅谈swift中闭包修饰符 weak?unowned? 或什么都不用
  9. Python3常用字符串操作
  10. [WARNING]考前必读?!
  11. java azure blobs sas_仅使用SAS令牌连接到Azure存储帐户?
  12. select2多选设置select多选,select2取值和赋值
  13. js案例:动态生成表格
  14. office2003安装包下载,专业版完整版官方原版!
  15. Python心法:numpy命令关于axis=0,axis=1,axis=2
  16. 加密与解密(一) -- 壳、加壳
  17. mac地址修改_全球首款支持电脑名称和MAC地址修改的浏览器 VMLogin超级防关联指纹浏览器 同时支持模拟真人输入,支持自定义经纬度...
  18. 护眼灯到底有没有护眼的效果?带你了解市面上的护眼灯真的护眼吗
  19. grasemonkey ajax页面,Greasemonkey 中使用 GM_xmlhttpRequest 如何在 https 页面中加载 http 资源?...
  20. 百度地图API实现 地址经纬度 互相转换

热门文章

  1. 解决Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误
  2. windows防火墙命令
  3. [刷题]Counting Bits
  4. H5学习系列之Communication API
  5. Codeforces Round #323 (Div. 2) C. GCD Table
  6. Graphite在centeros 6下安装
  7. .NET设计模式(2):单件模式(Singleton Pattern)
  8. #100天计划# 2013年10月1日
  9. 从IEEE754标准谈C语言浮点数据类型
  10. C#调用浏览器的原理及实现浅析