1. 程式人生 > >6、ActiveMQ入門教程(六)Spring與ActiveMQ整合

6、ActiveMQ入門教程(六)Spring與ActiveMQ整合

在這一篇部落格分享一下消費者,使用監聽的實現方式。

1. pom.xml

2. 生產者

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

3. 消費者

  1. package org.ygy.mq.lesson04;  
  2. import javax.jms.JMSException;  
  3. import javax.jms.Message;  
  4. import javax.jms.MessageListener;  
  5. import javax.jms.TextMessage;  
  6. /** 
  7.  *  
  8.  * @author 於貴洋 
  9.  * @description 通過監聽的方式實現消費者 
  10.  * @time 2013-10-14 
  11.  * @version V1.0 
  12.  */
  13. publicclass Lesson4Consumer implements MessageListener {  
  14.     @Override
  15.     publicvoid onMessage(Message message) {  
  16.         TextMessage textMsg = (TextMessage) message;  
  17.         try {  
  18.             System.out.println("接收到了訊息,訊息內容是:" + textMsg.getText());  
  19.         } catch (JMSException e) {  
  20.             e.printStackTrace();  
  21.         }  
  22.     }  
  23. }  

4. 配置檔案

  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <beansxmlns="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.     <!-- 1.配置connectionFactory -->
  9.     <beanid="jmsFactory"class="org.apache.activemq.pool.PooledConnectionFactory"destroy-method="stop">
  10.         <propertyname="connectionFactory">
  11.             <beanclass="org.apache.activemq.ActiveMQConnectionFactory">
  12.                 <propertyname="brokerURL">
  13.                     <value>tcp://127.0.0.1:61616</value>
  14.                 </property>
  15.             </bean>
  16.         </property>
  17.         <propertyname="maxConnections"value="100"></property>
  18.     </bean>
  19.     <!-- 傳送訊息的目的地(一個佇列) -->
  20.     <beanid="destination"class="org.apache.activemq.command.ActiveMQQueue">
  21.         <!-- 設定訊息佇列的名字 -->
  22.         <constructor-argindex="0"value="queue_temp"></constructor-arg>
  23.     </bean>
  24.     <!-- 3.配置Spring JMS Template -->
  25.     <beanid="jmsTemplate"class="org.springframework.jms.core.JmsTemplate">
  26.         <!-- 3.1 注入jmsFactory -->
  27.         <propertyname="connectionFactory"ref="jmsFactory"></property>
  28.         <!-- 3.2 配置訊息目標 -->
  29.         <propertyname="defaultDestination"ref="destination"/>
  30.     </bean>
  31.     <!-- 4.配置生產者 -->
  32.     <beanid="lesson4Producer"class="org.ygy.mq.lesson04.Lesson4Producer">
  33.         <propertyname="jmsTemplate"ref="jmsTemplate"/>
  34.     </bean>
  35.     <!-- 5.配置消費者 -->
  36.     <beanid="lesson4Consumer"class="org.ygy.mq.lesson04.Lesson4Consumer"></bean>
  37.     <!-- 訊息監聽容器 -->
  38.     <beanid="jmsContainer"class="org.springframework.jms.listener.DefaultMessageListenerContainer">
  39.         <propertyname="connectionFactory"ref="jmsFactory"/>
  40.         <propertyname="destination"ref="destination"/>
  41.         <propertyname="messageListener"ref="lesson4Consumer"/>
  42.     </bean>
  43. </beans>

配置檔案的話,重點關注消費者的配置,將其配置在一個訊息監聽容器中。

這裡的監聽容器有多個,明天會分享或者,直接轉載一些文章。

5. 測試

  1. package org.ygy.mq.lesson04;  
  2. import org.springframework.context.ApplicationContext;  
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  4. /** 
  5.  * 配置了監聽容器 
  6.  *  
  7.  * 參考:http://haohaoxuexi.iteye.com/blog/1893038 
  8.  * @author Administrator 
  9.  * 
  10.  */
  11. publicclass Client4 {  
  12.     publicstaticvoid main(String[] args) {  
  13.         ApplicationContext applicationContext = new Cla