zoukankan      html  css  js  c++  java
  • ActiveMQ整合spring结合项目开发流程(生产者和消费者)总结

      1 一:生产者代码编写:
      2     1.配置pom.xml引入相关坐标
      3         <dependencies>
      4             <!-- spring开发测试 -->
      5             <dependency>
      6                 <groupId>junit</groupId>
      7                 <artifactId>junit</artifactId>
      8                 <version>4.12</version>
      9             </dependency>
     10             <dependency>
     11                 <groupId>org.springframework</groupId>
     12                 <artifactId>spring-core</artifactId>
     13                 <version>4.1.7.RELEASE</version>
     14             </dependency>
     15             <dependency>
     16                 <groupId>org.springframework</groupId>
     17                 <artifactId>spring-test</artifactId>
     18                 <version>4.1.7.RELEASE</version>
     19             </dependency>
     20             <!-- activemq -->
     21             <dependency>
     22                 <groupId>org.apache.activemq</groupId>
     23                 <artifactId>activemq-all</artifactId>
     24                 <version>5.14.0</version>
     25             </dependency>
     26             <!-- spring整合mq开发 -->
     27             <dependency>
     28                 <groupId>org.springframework</groupId>
     29                 <artifactId>spring-jms</artifactId>
     30                 <version>4.1.7.RELEASE</version>
     31             </dependency>
     32         </dependencies>
     33     2.配置applicationContext.xml文件
     34         <!-- ActiveMQ 连接工厂 -->
     35         <!-- 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供 -->
     36         <!-- 如果连接网络:tcp://ip:61616;未连接网络:tcp://localhost:61616 以及用户名,密码 -->
     37         <amq:connectionFactory id="amqConnectionFactory"
     38             brokerURL="tcp://localhost:61616" userName="admin" password="admin" />
     39         <!-- Spring Caching连接工厂 -->
     40         <!-- Spring用于管理真正的ConnectionFactory的ConnectionFactory -->
     41         <bean id="connectionFactory"
     42             class="org.springframework.jms.connection.CachingConnectionFactory">
     43             <!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory -->
     44             <property name="targetConnectionFactory" ref="amqConnectionFactory"></property>
     45             <!-- 同上,同理 -->
     46             <!-- <constructor-arg ref="amqConnectionFactory" /> -->
     47             <!-- Session缓存数量 -->
     48             <property name="sessionCacheSize" value="100" />
     49         </bean>
     50         <!-- 定义JmsTemplate的Queue类型 -->
     51         <bean id="jmsQueueTemplate" class="org.springframework.jms.core.JmsTemplate">
     52             <!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 -->
     53             <constructor-arg ref="connectionFactory" />
     54             <!-- 非pub/sub模型(发布/订阅),即队列模式 -->
     55             <property name="pubSubDomain" value="false" />
     56         </bean>
     57         <!-- 定义JmsTemplate的Topic类型 -->
     58         <bean id="jmsTopicTemplate" class="org.springframework.jms.core.JmsTemplate">
     59             <!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 -->
     60             <constructor-arg ref="connectionFactory" />
     61             <!-- pub/sub模型(发布/订阅) -->
     62             <property name="pubSubDomain" value="true" />
     63         </bean>
     64     3.编写生产者类
     65         //注入JmsTemplate对象
     66         @Autowired
     67         private JmsTemplate jmsTemplate;
     68         //编写方法生产消息队列(使用map集合存放消息队列)
     69         jmsTemplate.send("activeCode",new MessageCreator() {
     70             
     71             @Override
     72             public Message createMessage(Session session) throws JMSException {
     73                 MapMessage map = session.createMapMessage();
     74                 map.setString("telephone", model.getTelephone());//消息之一
     75                 map.setString("randomCode", randomCode);//消息之二
     76                 return map;
     77             }
     78         });
     79 二:消费者代码编写:
     80     1.配置web.xml中的spring监听器
     81         <!-- spring配置文件位置 -->
     82         <context-param>
     83             <param-name>contextConfigLocation</param-name>
     84             <param-value>classpath:applicationContext.xml</param-value>
     85         </context-param>
     86         <!-- spring核心监听器 -->
     87         <listener>
     88             <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
     89         </listener>
     90     2.配置applicationContext.xml文件
     91             <!-- ActiveMQ 连接工厂 -->
     92             <!-- 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供 -->
     93             <!-- 如果连接网络:tcp://ip:61616;未连接网络:tcp://localhost:61616 以及用户名,密码 -->
     94             <amq:connectionFactory id="amqConnectionFactory"
     95                 brokerURL="tcp://localhost:61616" userName="admin" password="admin" />
     96             <!-- Spring Caching连接工厂 -->
     97             <!-- Spring用于管理真正的ConnectionFactory的ConnectionFactory -->
     98             <bean id="connectionFactory"
     99                 class="org.springframework.jms.connection.CachingConnectionFactory">
    100                 <!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory -->
    101                 <property name="targetConnectionFactory" ref="amqConnectionFactory"></property>
    102                 <!-- Session缓存数量 -->
    103                 <property name="sessionCacheSize" value="100" />
    104             </bean>
    105             <!-- 扫描消费者类所在的包 -->
    106             <context:component-scan base-package="cn.itcast.activemq.consumer" />
    107             <!-- 定义Queue监听器 -->
    108             <jms:listener-container destination-type="queue"
    109                 container-type="default" connection-factory="connectionFactory"
    110                 acknowledge="auto">
    111                 <jms:listener destination="生产者定义的消息名称" ref="消费者类名首字母小写即可" />
    112             </jms:listener-container>
    113             <!-- 定义Topic监听器 -->
    114             <jms:listener-container destination-type="topic"
    115                 container-type="default" connection-factory="connectionFactory"
    116                 acknowledge="auto">
    117                 <jms:listener destination="生产者定义的消息名称" ref="消费者类名首字母小写即可" />
    118             </jms:listener-container>
    119     3.编写消费者类
    120         @Servicer
    121         public class 消费者 implements MessageListener(){
    122             //实现MessageListener中的方法
    123             public void onMessage(Message message) {
    124                 MapMessage mapMessage = (TextMessage) message;
    125                 try {
    126                     System.out.println("消费者消费的信息为:手机号:" 
    127                     + mapMessage.getString("telephone")
    128                     +",验证码信息是:"+ mapMessage.getString("msg"));
    129                 } catch (JMSException e) {
    130                     e.printStackTrace();
    131                 }
    132             }
    133         }
    134     4.配置pom.xml中的tomcat启动坐标
    135         //引入和生产者相同的jar包的坐标文件
    136         //配置启动端口号为9009
    137          <build>
    138             <plugins>
    139                 <plugin>
    140                     <groupId>org.codehaus.mojo</groupId>
    141                     <artifactId>tomcat-maven-plugin</artifactId>
    142                     <version>1.1</version>
    143                     <configuration>
    144                         <port>9009</port>
    145                     </configuration>
    146                 </plugin>
    147             </plugins>
    148           </build>
    149           //最好继承其他的父项目中的pom.xml以免造成不可估量的错误
  • 相关阅读:
    129. Sum Root to Leaf Numbers
    113. Path Sum II
    114. Flatten Binary Tree to Linked List
    112. Path Sum
    100. Same Tree
    300. Longest Increasing Subsequence
    72. Edit Distance
    自定义js标签库
    JS 实现Table相同行的单元格自动合并示例代码
    mysql 高版本only_full_group_by 错误
  • 原文地址:https://www.cnblogs.com/yshang/p/8080092.html
Copyright © 2011-2022 走看看