`
dengwanchuan
  • 浏览: 46765 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java中间件JMS(三)之ActiveMQ整合spring(二)

阅读更多

原文链接:http://blog.csdn.net/dwc_fly/article/details/10834005    

对于让spring管理监听的实现方式有两种方法,一种是自己写监听器,然后交给spring的监听适配器管理,再由监听容器管理监听适配器,另一种是写一个实现MessageListener接口的类。第一种在第一章涉及到,但是没有交给spring托管.其实实现的方法很简单,在j2ee mvc模式中,用到spring的aop特性.这章讲第

二种方法,这样消费者可以时时接受到生产者的消息,订阅者可以时时接受到发布者的消息.不用循环接受。

 

1.Queue(点对点)方式

 

消费者QueueConsumerMessageListener类,具体如下:

 

[java] view plaincopy
 
  1. package jms.mq.spring;  
  2.   
  3. import javax.jms.JMSException;  
  4. import javax.jms.Message;  
  5. import javax.jms.MessageListener;  
  6. import javax.jms.TextMessage;  
  7.   
  8. public class QueueConsumerMessageListener implements MessageListener{  
  9.     public void onMessage(Message msg) {  
  10.         if(msg instanceof TextMessage){  
  11.             TextMessage textMessage = (TextMessage) msg;  
  12.             try {  
  13.                 System.out.println("--队列 MessageListener收到信息:"+textMessage.getText());  
  14.             } catch (JMSException e) {  
  15.                 e.printStackTrace();  
  16.             }  
  17.         }  
  18.     }  
  19. }  

 

 

2.Topic(发布/订阅)方式

订阅者实现类TopicSubscriberMessageListener类,具体如下:

[java] view plaincopy
 
  1. package jms.mq.spring;  
  2.   
  3. import javax.jms.JMSException;  
  4. import javax.jms.Message;  
  5. import javax.jms.MessageListener;  
  6. import javax.jms.TextMessage;  
  7.   
  8. public class TopicSubscriberMessageListener implements MessageListener{  
  9.     public void onMessage(Message msg) {  
  10.         if(msg instanceof TextMessage){  
  11.             TextMessage textMessage = (TextMessage) msg;  
  12.             try {  
  13.                 System.out.println("--订阅者 MessageListener收到信息:"+textMessage.getText());  
  14.             } catch (JMSException e) {  
  15.                 e.printStackTrace();  
  16.             }  
  17.         }  
  18.     }  
  19. }  



3.修改配置文件

 

[html] view plaincopy
 
  1. <!-- 实现接口的方式 -->  
  2.     <bean id="queueConsumerMessageListener" class="jms.mq.spring.QueueConsumerMessageListener">  
  3.     </bean>  
  4.     <!-- 新增一个队列地址名字不能跟上面的重复 -->  
  5.     <bean id="queueConsumerMessageListenerDest" class="org.apache.activemq.command.ActiveMQQueue">  
  6.         <constructor-arg index="0" value="myMessageListenerQueue" />  
  7.     </bean>  
  8.     <bean id="myMsgQueuelistenerContainer"  
  9.         class="org.springframework.jms.listener.DefaultMessageListenerContainer">  
  10.         <property name="connectionFactory" ref="connectionFactory" />  
  11.         <property name="destination" ref="queueConsumerMessageListenerDest" />  
  12.         <property name="messageListener" ref="queueConsumerMessageListener" />  
  13.         <property name="receiveTimeout" value="10000" />  
  14.     </bean>  
  15.   
  16.     <bean id="topicSubscriberMessageListener" class="jms.mq.spring.TopicSubscriberMessageListener"></bean>  
  17.     <bean id="topicSubscriberMessageListenerDest" class="org.apache.activemq.command.ActiveMQTopic">  
  18.         <constructor-arg index="0" value="myMessageListenerTopic" />  
  19.     </bean>  
  20.     <bean id="myMsgTopiclistenerContainer"  
  21.         class="org.springframework.jms.listener.DefaultMessageListenerContainer">  
  22.         <property name="connectionFactory" ref="connectionFactory" />  
  23.         <property name="destination" ref="topicSubscriberMessageListenerDest" />  
  24.         <property name="messageListener" ref="topicSubscriberMessageListener" />  
  25.         <property name="pubSubDomain" value="true" />  
  26.         <property name="receiveTimeout" value="10000" />  
  27.     </bean>  


顺便将上一章的配置也改一下

 

[html] view plaincopy
 
  1. <bean id="queueProducerService" class="jms.mq.spring.QueueProducerService">  
  2.         <property name="jmsTemplate" ref="jmsQueueTemplate" />  
  3.         <!--<property name="destination" ref="queueDest" /> -->  
  4.         <property name="destination" ref="queueConsumerMessageListenerDest" />  
  5.     </bean>  
  6.   
  7.     <bean id="queueConsumerService" class="jms.mq.spring.QueueConsumerService">  
  8.         <property name="jmsTemplate" ref="jmsQueueTemplate" />  
  9.         <property name="destination" ref="queueDest" />   
  10.     </bean>  
  11.   
  12.   
  13.     <bean id="topicPublisherService" class="jms.mq.spring.TopicPublisherService">  
  14.         <property name="jmsTemplate" ref="jmsTopicTemplate" />  
  15.         <!-- <property name="destination" ref="topicDest" /> -->  
  16.         <property name="destination" ref="topicSubscriberMessageListenerDest" />  
  17.     </bean>  
  18.   
  19.     <bean id="topicSubscriberService" class="jms.mq.spring.TopicSubscriberService">  
  20.         <property name="jmsTemplate" ref="jmsTopicTemplate" />  
  21.         <property name="destination" ref="topicDest" />  
  22.     </bean>  

 

注意是修改 bean id为queueProducerService和的topicPublisherService的destination

 

4.运行

Queue(点对点)方式,只运行QueueProducerTest.java,结果如下

 

Topic(发布/订阅)方式,只运行TopicPublisherTest.java,结果如下

 

ok,如果Queue(点对点)方式和Topic(发布/订阅)方式运行的结果如上图所示,说明你成功了.

0
1
分享到:
评论

相关推荐

    ActiveMQ整合spring的Demo

    通过这个Demo,开发者可以学习到如何在实际项目中整合Spring和ActiveMQ,从而利用消息中间件提升系统的可伸缩性和可靠性。在理解这些核心概念后,你可以根据项目需求进行更复杂的配置和优化,例如使用Spring Boot...

    activemq与spring整合发送jms消息入门实例

    在Java世界中,ActiveMQ和Spring的整合是企业级应用中常见的消息中间件解决方案,用于实现JMS(Java Message Service)消息传递。本教程将深入探讨如何将这两个强大的工具结合在一起,以创建一个简单的发送JMS消息的...

    activeMq整合spring所需jar包

    1. **ActiveMQ**: ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它遵循Java Message Service (JMS) 规范,提供可靠的消息传递服务,支持多种协议,如OpenWire、AMQP、STOMP等。在Spring框架中整合ActiveMQ...

    activemq与spring整合源代码

    Spring还提供了丰富的模块,如数据访问、Web、测试等,其中Spring JMS模块专门用于集成消息中间件,使得与ActiveMQ的整合变得简单。 三、ActiveMQ与Spring的整合 1. 添加依赖:首先,在项目中引入ActiveMQ和Spring...

    activemq与spring的整合案例

    将ActiveMQ与Spring进行整合,可以方便地在Spring应用中使用消息队列功能。 本案例主要展示了如何在Spring应用中集成ActiveMQ,实现消息的发送和接收。首先,我们需要在项目中引入ActiveMQ的相关依赖。在Maven工程...

    activeMQ+spring整合

    ActiveMQ作为Apache软件基金会的一个项目,是一款开源的消息中间件,支持多种协议,如AMQP、STOMP、MQTT等,并且与Java平台紧密结合。Spring框架则是一个广泛使用的Java企业级应用开发框架,提供了一整套的解决方案...

    ActiveMQ与spring整合封装

    首先,ActiveMQ与Spring的整合主要基于Spring的JMS(Java Message Service)支持。Spring通过`ConnectionFactory`和`Destination`接口来抽象JMS提供者的具体实现,使得我们能够轻松地更换消息中间件,而无需修改大量...

    消息中间件ActiveMQ及Spring整合JMS.docx

    【ActiveMQ和Spring整合JMS】的文档主要介绍了消息中间件的基本概念,特别是重点讨论了ActiveMQ和JMS的相关知识。消息中间件是用于不同分布式系统之间数据交流的工具,通过消息传递机制来扩展进程间的通信。ActiveMQ...

    spring整合jms+activemq

    在IT行业中,Spring框架是Java领域最广泛应用的轻量级框架之一,而JMS(Java Message Service)则是一种标准接口,用于在分布式系统中进行异步消息传递。ActivemQ是Apache软件基金会的一个项目,它实现了JMS规范,...

    java中间件之activemq

    Java中间件领域的ActiveMQ是一款由Apache开发的开源消息中间件,它为企业级应用提供高效、可扩展、稳定且安全的消息通信服务。ActiveMQ的核心目标是实现标准的、面向消息的集成,支持多语言环境,确保不同平台之间的...

    activemq整合spring完整实例代码(内含所有相关jar包)

    Apache ActiveMQ是开源的、高性能的消息中间件,它支持多种消息协议,如OpenWire、AMQP、STOMP等。在企业级应用中,ActiveMQ常被用来实现应用程序间的异步通信,提高系统的响应速度和并发处理能力。Spring框架是Java...

    spring整合JMS-居于ActiveMQ实现

    Spring整合JMS基于ActiveMQ实现是一项常见的企业级应用开发任务,它涉及到Spring框架、Java消息服务(JMS)以及ActiveMQ消息中间件的使用。在本文中,我们将深入探讨这三个关键概念,以及如何将它们有效地结合在一起...

    ActiveMQ整合Spring(多消费者)

    ActiveMQ是Apache软件基金会开发的一个开源消息中间件,它支持多种消息协议,如OpenWire、AMQP、STOMP等,能够很好地与Java平台以及其他语言环境集成。而Spring框架是Java应用开发的首选框架,它提供了丰富的功能,...

    ActiveMQ整合spring、SpringBoot完整源码

    首先,ActiveMQ整合Spring涉及到的是Spring的JMS(Java Message Service)模块。Spring对JMS提供了一套抽象层,简化了与消息中间件的交互。在配置中,我们需要在Spring的XML配置文件或Java配置类中定义一个...

    jms Spring+ActiveMQ 5.4.2

    标题 "jms Spring+ActiveMQ 5.4.2" 涉及的是Java消息服务(JMS)在Spring框架中的应用,以及ActiveMQ作为消息代理的使用。在这个主题下,我们将深入探讨JMS的基本概念、Spring对JMS的支持以及ActiveMQ 5.4.2版本的...

    activemq5.5.1 Spring模板

    《ActiveMQ 5.5.1与Spring模板的深度整合》 在当今的企业级应用开发中,消息中间件起着至关重要的作用,它能够有效地解耦应用程序,提高系统的可扩展性和可靠性。Apache ActiveMQ作为开源社区中最受欢迎的消息...

    spring 与ACTIVEMQ整合

    在IT行业中,Spring框架是Java领域最常用的轻量级应用框架之一,而ActiveMQ则是Apache组织开发的一款开源消息中间件,常用于实现应用程序间的异步通信。本文将深入探讨如何将Spring与ActiveMQ进行整合,以提升系统的...

    JMS+ActiveMQ+Spring 完整样例代码

    在这个"JMS+ActiveMQ+Spring 完整样例代码"中,我们将会探讨如何将这三者结合起来,实现一个简单的消息传递系统。以下是关键的知识点: 1. **JMS接口** JMS定义了两种主要的消息模型:点对点(Point-to-Point,P2P...

    JMS_ActiveMQ_Spring.rar

    《JMS、ActiveMQ与Spring整合的深度解析》 Java消息服务(Java Message Service,简称JMS)是Java平台中用于在分布式环境中交换异步消息的标准API。它为应用程序提供了创建、发送、接收和阅读消息的接口,允许应用...

Global site tag (gtag.js) - Google Analytics