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以免造成不可估量的錯誤

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM