zoukankan      html  css  js  c++  java
  • ActiveMQ与Spring整合-MessageListener

    消费者,使用监听的实现方式。

    1. pom.xml 

    2. 生产者

     
     
    1. package org.ygy.mq.lesson04;  
    2.   
    3. import javax.jms.JMSException;  
    4. import javax.jms.Message;  
    5. import javax.jms.Session;  
    6.   
    7. import org.springframework.jms.core.JmsTemplate;  
    8. import org.springframework.jms.core.MessageCreator;  
    9.   
    10. /** 
    11.  *  
    12.  * @author 于贵洋 
    13.  * @description 生产者 
    14.  * @time 2013-10-14 
    15.  * @version V1.0 
    16.  */  
    17. public class Lesson4Producer {  
    18.     private JmsTemplate jmsTemplate;  
    19.   
    20.     public JmsTemplate getJmsTemplate() {  
    21.         return jmsTemplate;  
    22.     }  
    23.   
    24.     public void setJmsTemplate(JmsTemplate jmsTemplate) {  
    25.         this.jmsTemplate = jmsTemplate;  
    26.     }  
    27.       
    28.     //使用JMSTemplate发送消息  
    29.     public void send(final String msg) {  
    30.         jmsTemplate.send(new MessageCreator() {  
    31.             public Message createMessage(Session session) throws JMSException {  
    32.                 return session.createTextMessage(msg);  
    33.             }  
    34.         });  
    35.     }  
    36.   
    37. }  

    3. 消费者

     
     
    1. package org.ygy.mq.lesson04;  
    2.   
    3. import javax.jms.JMSException;  
    4. import javax.jms.Message;  
    5. import javax.jms.MessageListener;  
    6. import javax.jms.TextMessage;  
    7.   
    8. /** 
    9.  *  
    10.  * @author 于贵洋 
    11.  * @description 通过监听的方式实现消费者 
    12.  * @time 2013-10-14 
    13.  * @version V1.0 
    14.  */  
    15. public class Lesson4Consumer implements MessageListener {  
    16.   
    17.     @Override  
    18.     public void onMessage(Message message) {  
    19.         TextMessage textMsg = (TextMessage) message;  
    20.         try {  
    21.             System.out.println("接收到了消息,消息内容是:" + textMsg.getText());  
    22.         } catch (JMSException e) {  
    23.             e.printStackTrace();  
    24.         }  
    25.     }  
    26.   
    27. }  

    4. 配置文件

     
    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" xmlns:context="http://www.springframework.org/schema/context"  
    4.     xsi:schemaLocation="http://www.springframework.org/schema/beans   
    5.         http://www.springframework.org/schema/beans/spring-beans-2.5.xsd   
    6.         http://www.springframework.org/schema/context   
    7.         http://www.springframework.org/schema/context/spring-context-2.5.xsd">  
    8.   
    9.   
    10.     <!-- 1.配置connectionFactory -->  
    11.     <bean id="jmsFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop">  
    12.         <property name="connectionFactory">  
    13.             <bean class="org.apache.activemq.ActiveMQConnectionFactory">  
    14.                 <property name="brokerURL">  
    15.                     <value>tcp://127.0.0.1:61616</value>  
    16.                 </property>  
    17.             </bean>  
    18.         </property>  
    19.         <property name="maxConnections" value="100"></property>  
    20.     </bean>  
    21.       
    22.     <!-- 2.定义消息目标 -->  
    23.     <bean id="destination" class="org.apache.activemq.command.ActiveMQQueue">  
    24.         <constructor-arg index="0" value="queue_temp"></constructor-arg>  
    25.     </bean>  
    26.       
    27.   
    28.     <!-- 3.配置Spring JMS Template -->  
    29.     <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">  
    30.         <!-- 3.1 注入jmsFactory -->  
    31.         <property name="connectionFactory" ref="jmsFactory"></property>  
    32.           
    33.         <!-- 3.2 配置消息目标 -->  
    34.         <property name="defaultDestination" ref="destination" />  
    35.     </bean>  
    36.       
    37.     <!-- 4.配置生产者 -->  
    38.     <bean id="lesson4Producer" class="org.ygy.mq.lesson04.Lesson4Producer">  
    39.         <property name="jmsTemplate" ref="jmsTemplate"/>  
    40.     </bean>  
    41.       
    42.     <!-- 5.配置消费者 -->  
    43.     <bean id="lesson4Consumer" class="org.ygy.mq.lesson04.Lesson4Consumer"></bean>  
    44.       
    45.     <!-- 消息监听容器 -->    
    46.     <bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">   
    47.         <property name="connectionFactory" ref="jmsFactory" />    
    48.         <property name="destination" ref="destination" />    
    49.         <property name="messageListener" ref="lesson4Consumer" />    
    50.     </bean>  
    51.   
    52. </beans>  


    配置文件的话,重点关注消费者的配置,将其配置在一个消息监听容器中。

    这里的监听容器有多个,明天会分享或者,直接转载一些文章。

    5. 测试

     
     
      1. package org.ygy.mq.lesson04;  
      2.   
      3. import org.springframework.context.ApplicationContext;  
      4. import org.springframework.context.support.ClassPathXmlApplicationContext;  
      5.   
      6. /** 
      7.  * 配置了监听容器 
      8.  *  
      9.  * 参考:http://haohaoxuexi.iteye.com/blog/1893038 
      10.  * @author Administrator 
      11.  * 
      12.  */  
      13. public class Client4 {  
      14.       
      15.     public static void main(String[] args) {  
      16.         ApplicationContext applicationContext = new ClassPathXmlApplicationContext("lesson4.xml");  
      17.           
      18.         Lesson4Producer producer = (Lesson4Producer) applicationContext.getBean("lesson4Producer");  
      19.           
      20.         producer.send("你在哪里啊?");  
      21.         producer.send("嗨,你好吗?");  
      22.           
      23.     }  
      24. }  
  • 相关阅读:
    dt7.0中在sitemap.txt地图中新增热门搜索关键词记录
    dt7.0中加入站点地图(sitemap.txt)功能输出
    Spring基本功能-IOC
    Linux常见系统命令与文件操作
    Linux界面交互与目录结构
    Linux入门介绍
    学习Zookeeper需要了解的专业名词
    Zookeeper概述和基本概念
    使用Java操作MongoDB
    MongoDB的分布式部署
  • 原文地址:https://www.cnblogs.com/wangshouchang/p/8474129.html
Copyright © 2011-2022 走看看