Spring整合JMS-基于activeMQ实现(二)
public void onMessage(Message
message) {//这里我们知道生产者发送的就是一个纯文本消息。所以这里能够直接进行强制转换,或者直接把onMessage方法的參数改成Message的子类TextMessageTextMessage textMessage = (TextMessage)message;System. out.println( "接收到一个纯文本消息" );try {System. out.println( "消息内容是:" +
textMessage.getText());} catch (JMSException
e) {e.printStackTrace();}}}
xmlns:tx= "http://www.springframework.org/schema/tx" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"xmlns:context= "http://www.springframework.org/schema/context" xmlns:jms= "http://www.springframework.org/schema/jms"xsi:schemaLocation= "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsdhttp://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-3.1.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd ">
<bean id ="connectionFactory" class= "org.springframework.jms.connection.CachingConnectionFactory" ><property name ="targetConnectionFactory"><bean class= "org.apache.activemq.ActiveMQConnectionFactory" ><property name ="brokerURL"><value >tcp://localhost:61616 </value ></property ></bean ></property ><property name ="sessionCacheSize" value= "1" /></bean >
<!-- Spring jmsTemplate queue --><bean id ="jmsTemplate" class= "org.springframework.jms.core.JmsTemplate" ><property name ="connectionFactory" ref= "connectionFactory"></property ><property name ="defaultDestinationName" value= "subject"></property ><property name ="deliveryPersistent" value= "true"></property ><property name ="pubSubDomain" value="false"></ property> <!--
false p2p,true topic --><property name ="sessionAcknowledgeMode" value= "1"></property ><property name ="explicitQosEnabled" value= "true"></property ><property name ="timeToLive" value="604800000"></ property></bean ><!-- 配置Queue,当中value为Queue名称->start --><bean id = "testQueue" class = "org.apache.activemq.command.ActiveMQQueue" ><constructor-arg index = "0" value ="${pur.test.add}" /></bean ><bean id = "sessionAwareQueue" class = "org.apache.activemq.command.ActiveMQQueue" ><constructor-arg index = "0" value= "queue.liupeng.sessionaware" /></bean ><!-- 配置Queue,当中value为Queue名称->end --><!-- 注入AMQ的实现类属性(JmsTemplate和Destination) --><bean id = "amqQueueSender" class = "com.tuniu.scc.purchase.plan.manage.core.amq.AMQQueueSender" ><property name = "jmsTemplate" ref="jmsTemplate" ></property ><property name = "testQueue" ref="testQueue" ></property ><property name = "sessionAwareQueue" ref= "sessionAwareQueue"></property ></bean ><!-- 消息发送必用的发送类 --><bean id = "multiThreadAMQSender" class ="com.tuniu.scc.purchase.plan.manage.core.amq.MultiThreadAMQSender"init-method= "init"><property name = "jmsTemplate" ref="jmsTemplate" ></property ><property name = "multiThreadAMQExecutor" ref= "multiThreadAMQExecutor" ></property ></bean ><!-- 消息监听器->start --><bean id = "consumerMessageListener" class= "com.tuniu.scc.purchase.plan.manage.core.amq.ConsumerMessageListener" /><!-- 消息监听容器 --><bean id = "jmsContainer" class= "org.springframework.jms.listener.DefaultMessageListenerContainer" ><property name = "connectionFactory" ref= "connectionFactory" /><property name = "destination" ref= "testQueue" /> <!--
消费者队列名称,改动 --><property name = "messageListener" ref= "consumerMessageListener" /></bean ><bean id = "consumerSessionAwareMessageListener" class ="com.tuniu.scc.purchase.plan.manage.core.amq.ConsumerSessionAwareMessageListener" ><property name ="testQueue" ref="testQueue"/> <!--
接收消息后返回给testQueue队列 --></bean >< bean id= "sessionAwareListenerContainer" class= "org.springframework.jms.listener.DefaultMessageListenerContainer" ><property name ="connectionFactory" ref= "connectionFactory" /><property name ="destination" ref="sessionAwareQueue" /><property name ="messageListener" ref= "consumerSessionAwareMessageListener" /></bean ><!-- 消息监听器->end -->
</beans>
private AMQQueueSender amqQueueSender;
private static final Logger LOG =
LoggerFactory.getLogger(AMQController. class);
@UvConfig(method
= "testQueue", description = "測试AMQ")@RequestMapping(value
= "/testQueue", method = RequestMethod. POST)@TSPServiceInfo(name
= "PUR.NM.AMQController.testQueue" ,
description = "測试AMQ")public void testQueue(HttpServletRequest
request, HttpServletResponse response) {try {long beginTime
= System. currentTimeMillis();LOG.info( "发送開始");//amqQueueSender.sendMessage("test", StaticProperty.TEST_QUEUE);amqQueueSender.sendMessage( "test",
StaticProperty.TEST_SESSIONAWARE_QUEUE );LOG.info( "发送结束,耗时:" +(System.currentTimeMillis()-beginTime)+ "ms");} catch (InterruptedException
e) {LOG.error( "測试失败",
e);}}
private Destination testQueue; //返回消息目的队列@Overridepublic void onMessage(TextMessage
message, Session session) throws JMSException {System. out.println( "收到一条消息" );System. out.println( "消息内容是:" +message.getText());MessageProducer producer = session.createProducer( testQueue);Message txtMessage = session.createTextMessage("consumerSessionAwareMessageListener..." );producer.send(txtMessage);}public Destination
getTestQueue() {return testQueue;}public void setTestQueue(Destination
sessionAwareQueue) {this.testQueue =
sessionAwareQueue;}}
收到一条消息消息内容是:test接收到一个纯文本消息消息内容是:consumerSessionAwareMessageListener...
public void handleMessage(String
message) {System. out.println( "ConsumerListener通过handleMessage接收到一个纯文本消息。消息内容是:" +
message);}public void receiveMessage(String
message) {System.out.println("ConsumerListener通过receiveMessage接收到一个纯文本消息。消息内容是:" +
message);}}
- 方法一:
- 、public void sendMessage(Destination destination, final String message) {
- System.out.println("---------------生产者发送消息-----------------");
- System.out.println("---------------生产者发了一个消息:" + message);
- jmsTemplate.send(destination, new MessageCreator() {
- public Message createMessage(Session session) throws JMSException {
- TextMessage textMessage = session.createTextMessage(message);
- textMessage.setJMSReplyTo(responseDestination); //(省略编写其相应的监听器代码)
- return textMessage;
- }
- });
- }

Spring整合JMS-基于activeMQ实现(二)的更多相关文章
- spring整合JMS - 基于ActiveMQ实现
一. 开篇语 继上一篇apache ActiveMQ之初体验后, 由于近期一直在复习spring的东西, 所以本文就使用spring整合下JMS. 二. 环境准备 1. ActiveMQ5.2.0 ( ...
- Spring整合JMS(一)——基于ActiveMQ实现
1.1 JMS简介 JMS的全称是Java Message Service,即Java消息服务.它主要用于在生产者和消费者之间进行消息传递,生产者负责产生消息,而消费者负责接收消息.把它应用到 ...
- Spring整合JMS(一)——基于ActiveMQ实现 (转)
*注:别人那复制来的 1.1 JMS简介 JMS的全称是Java Message Service,即Java消 息服务.它主要用于在生产者和消费者之间进行消息传递,生产者负责产生消息,而消费者 ...
- 消息中间件ActiveMQ及Spring整合JMS
一 .消息中间件的基本介绍 1.1 消息中间件 1.1.1 什么是消息中间件 消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成.通过提供消息传递和消息排 ...
- Spring整合JMS(二)——三种消息监听器
原文地址:http://haohaoxuexi.iteye.com/blog/1893676 1.3 消息监听器MessageListener 在Spring整合JMS的应用中我们在定义消息监 ...
- Spring整合JMS(二)——三种消息监听器(转)
*注:别人那复制来的 1.3 消息监听器MessageListener 在Spring整合JMS的应用中我们在定义消息监听器的时候一共可以定义三种类型的消息监听器,分别是MessageList ...
- ActiveMQ (三) Spring整合JMS入门
Spring整合JMS入门 前提:安装好了ActiveMQ ActiveMQ安装 Demo结构: 生产者项目springjms_producer: pom.xml <?xml versio ...
- Spring整合JMS(四)——事务管理
原文链接:http://haohaoxuexi.iteye.com/blog/1983532 Spring提供了一个JmsTransactionManager用于对JMS ConnectionFact ...
- Spring整合JMS——事务管理
Spring提供了一个JmsTransactionManager用于对JMS ConnectionFactory做事务管理.这将允许JMS应用利用Spring的事务管理特性.JmsTransactio ...
随机推荐
- PySide——Python图形化界面
PySide——Python图形化界面 PySide——Python图形化界面入门教程(四) PySide——Python图形化界面入门教程(四) ——创建自己的信号槽 ——Creating Your ...
- 与众不同 windows phone (2) - Control(控件)
原文:与众不同 windows phone (2) - Control(控件) [索引页][源码下载] 与众不同 windows phone (2) - Control(控件) 作者:webabcd介 ...
- C++ operator overload -- 操作符重载
C++ operator overload -- 操作符重载 2011-12-13 14:18:29 分类: C/C++ 操作符重载有两种方式,一是以成员函数方式重载,另一种是全局函数. 先看例子 # ...
- Git权威指南学习笔记(二)Git暂存区
例如以下图所看到的: 左側为工作区,是我们的工作文件夹. 右側为版本号库,当中: index标记的是暂存区(stage),所处文件夹为.git/index,记录了文件的状态和变更信息. master标 ...
- HTML事件
Media 事件
- WebSocket是一种协议
WebSocket,并非HTML 5独有,WebSocket是一种协议.只是在handshake的时候,发送的链接信息头和HTTP相似.HTML 5只是实现了WebSocket的客户端.其实,难点在于 ...
- 《转》如何成为一个牛逼的C/C++程序员?
原地址:http://blog.csdn.net/langeldep/article/details/6333562 这个题目的噱头太大,要真的写起来, 足够写一本书了. 本人是过来人, 结合自身的体 ...
- Fragment总结
一.总体工程图: 二.main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android& ...
- Android照片墙完整版,的完美结合LruCache和DiskLruCache
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/34093441 在上一篇文章其中,我们学习了DiskLruCache的概念和基本使用 ...
- grep命令参数和使用方法
功能说明:查找符合串的条件的文件. 语言 法国:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>] ...