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 ...
随机推荐
- 【c语言】统计一个数二进制中的1的个数
// 统计一个数二进制中的1的个数 #include <stdio.h> int count(int a) { int count = 0; while (a) { count++; a ...
- 5350.support
3G6200N3G6200NL3G300MAIR3GIIALL02393GALL0256NALL5002ALL5003ARGUS_ATP52B,ASL26555AWM002EVBAWAPN2403BC ...
- Oracle 12C 简介
2013年6月26日,Oracle Database 12c版本正式发布,首先发布的版本号是12.1.0.1.0,率先提供下载的平台有Linux和Solaris: Oracle官方下载地址: http ...
- Core Data 和 sqlite3的性能对比【图】3gs,iPhone4,4s,5的性能测试。
demo 和源码再此下载 :http://download.csdn.net/detail/hherima/5603797
- Codeforces 474B Worms 二分法(水
主题链接:http://codeforces.com/contest/474/problem/B #include <iostream> #include <cmath> #i ...
- 用Python对体积较大的CSV文件进行比较的经验
用Python对体积较大的CSV文件进行比较的经验 » 进化的测试 | 进化的测试 用Python对体积较大的CSV文件进行比较的经验 python Add comments 八 032010 ...
- leetcode回文子串拆分-最小拆分次数
转载请注明来自souldak,微博:@evagle 上一篇是要输出所有的可能拆分,这回是要输出拆分次数最少的切割次数. 如果直接按照上一篇那么做的话,就会超时,因为我们在判断s[i][j]是否是回文的 ...
- 10 个迅速提升你 Git 水平的提示(转)
最近我们推出了两个教程:熟悉Git的基本功能和 让你在开发团队中熟练的使用Git . 我们所讨论的命令足够一个开发者在Git使用方面游刃有余.在这篇文章中,我们试图探索怎样有效的管理你的时间和充分的使 ...
- 手机装linux系统
第一步: 首先 , 你的手机需要获取root权限. 如果不知道如何获取, 可以到电脑上搜索一下安卓手机root教程. 不同品牌的手机root的方法不同. 也可以到机锋论坛上寻找root的具体方法. 第 ...
- 深入理解Tomcat系列之一:系统架构(转)
前言 Tomcat是Apache基金组织下的开源项目,性质是一个Web服务器.下面这种情况很普遍:在eclipse床架一个web项目并部署到Tomcat中,启动tomcat,在浏览器中输入一个类似ht ...