• SpringMVC整合ActiveMQ


    spring activeMq 配置

     1      <!-- ActiveMQ 连接工厂 -->    
     2         <!-- 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供-->    
     3             <!-- 如果连接网络:tcp://ip:61616;未连接网络:tcp://localhost:61616 以及用户名,密码-->    
     4         <amq:connectionFactory id="amqConnectionFactory"    
     5             brokerURL="tcp://127.0.0.1:61616" userName="admin" password="admin"  />   
     6       
     7     <!-- spring caching连接工厂 -->  
     8     <!-- spring用于管理真正的Connectionfactory的connectionFactory -->  
     9     <bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">  
    10         <!-- 目标ConnectionFacory对应真实的可以产生JMS Connection的ConnectionFactory -->  
    11         <property name="targetConnectionFactory" ref="amqConnectionFactory"></property>  
    12         <!-- Session缓存数量 -->  
    13         <property name="sessionCacheSize" value="100"></property>  
    14     </bean>  
    15       
    16     <!-- Spring JmsTemplate的消息生产者 start -->  
    17       
    18     <!-- 定义JmsTemplate的Queue类型 -->  
    19     <bean id="jmsQueueTemplate" class="org.springframework.jms.core.JmsTemplate">  
    20         <!-- 这个connectionFactory对应的是我们定义的spring提供的那个ConnectionFactory对象 -->  
    21         <constructor-arg ref="connectionFactory"></constructor-arg>  
    22         <!-- 非pub/sub模型(发布/订阅),即队列模式 -->    
    23         <property name="pubSubDomain" value="false"></property>  
    24     </bean>  
    25       
    26     <!-- 定义JmsTemplate的Topic类型 -->  
    27     <bean id="jmsTopicTemplate" class="org.springframework.jms.core.JmsTemplate">  
    28         <constructor-arg ref="connectionFactory"></constructor-arg>  
    29         <!-- pub/sub模型(发布/订阅) -->  
    30         <property name="pubSubDomain" value="true"></property>  
    31     </bean>  
    32       
    33     <!-- Spring JmsTemplate 的消息生产者end-->  
    34       
    35     <!-- 消息消费者 start -->  
    36       
    37     <!-- 定义Queue监听器 -->  
    38     <jms:listener-container destination-type="queue" container-type="default" connection-factory="connectionFactory" acknowledge="auto">  
    39         <jms:listener destination="test.queue" ref="queueReceiver1"></jms:listener>  
    40         <jms:listener destination="test.queue" ref="queueReceiver1"></jms:listener>  
    41     </jms:listener-container>  
    42       
    43     <!-- 定义Topic监听器 -->  
    44     <jms:listener-container destination-type="topic" container-type="default" connection-factory="connectionFactory" acknowledge="auto">  
    45         <jms:listener destination="test.topic" ref="topicReceiver1"/>    
    46                 <jms:listener destination="test.topic" ref="topicReceiver2"/>  
    47     </jms:listener-container>  
    48       
    49     <!-- 消息消费者end -->  

    消息生产者:

     1 @Service
     2 public class ProducerService {
     3 
     4     private final Logger LOG = LoggerFactory.getLogger(ProducerService.class);
     5 
     6     @Resource(name = "jmsTemplate")
     7     private JmsTemplate jmsTemplate;
     8 
     9     /**
    10      * 向指定队列发送消息
    11      */
    12     public void sendMessage(Destination destination, final String msg) {
    13         System.out.println("向队列" + destination.toString() + "发送了消息------------" + msg);
    14         jmsTemplate.send(destination, new MessageCreator() {
    15             @Override
    16             public Message createMessage(Session session) throws JMSException {
    17                 return session.createTextMessage(msg);
    18             }
    19         });
    20     }
    21 
    22 }

    消息消费者(不设置消息监听时):

     1 @Service
     2 public class ConsumerService {
     3     
     4     private final Logger LOG = LoggerFactory.getLogger(ConsumerService.class);
     5 
     6     @Resource(name="jmsTemplate")
     7     private JmsTemplate jmsTemplate;
     8      
     9     /**
    10      * 接收消息
    11      */
    12     public TextMessage receive(Destination destination) {
    13         TextMessage tm = (TextMessage) jmsTemplate.receive(destination);
    14         try {
    15             System.out.println("从队列" + destination.toString() + "收到了消息:	"
    16                     + tm.getText());
    17         } catch (JMSException e) {
    18             e.printStackTrace();
    19         }
    20         
    21         return tm;
    22         
    23     }
    24 }

    java activeMq监听器:

     1     package com.css.cn.consumer;  
     2       
     3     import javax.jms.JMSException;  
     4     import javax.jms.Message;  
     5     import javax.jms.MessageListener;  
     6     import javax.jms.TextMessage;  
     7       
     8     import org.springframework.beans.factory.annotation.Autowired;  
     9     import org.springframework.stereotype.Component;  
    10       
    11     import com.css.cn.dao.ActiveInsertDao;  
    12       
    13     /** 
    14      * 点对点消息队列监听器 
    15      * @ClassName: QueueReceiver1  
    16      * @author zyj  
    17      * @date 2016年11月30日 下午3:17:46  
    18      *  
    19      * @version V1.0 
    20      */  
    21     @Component  
    22     public class QueueReceiver1 implements MessageListener{  
    23           
    24         @Autowired  
    25         private ActiveInsertDao activeInsert;  
    26       
    27         @Override  
    28         public void onMessage(Message message) {  
    29             // TODO Auto-generated method stub  
    30             try {  
    31                 String text = ((TextMessage) message).getText();  
    32                 System.out.println("点对点QueueReceiver1监听器"+text);  
    33                 activeInsert.insertValue(text);  
    34             } catch (Exception e) {  
    35                 // TODO Auto-generated catch block  
    36                 e.printStackTrace();  
    37             }  
    38         }  
    39       
    40           
    41     }  
  • 相关阅读:
    List 与 Array 的相互转化及 List、Array、Set转为 String
    Java 序列化介绍及 Redis 序列化方式
    SpringBoot 整合 redis 实现 token 验证
    SpringBoot 整合 Redis 使用
    Map 某 value 为 对象数组,转为 ArrayList 对象集合
    JWT 基本使用
    Spring session + redis 实现 session共享入门
    HttpServletRequest + Filter 添加 header
    Git ahead(超前) 又behind(落后)
    web应用中路径跳转问题-相对路径、绝对路径
  • 原文地址:https://www.cnblogs.com/zq-boke/p/8515834.html
Copyright © 2020-2023  润新知