activemq java web spring 配置

来源:http://www.cnblogs.com/jianqiao/archive/2016/07/01/5633121.html
-Advertisement-
Play Games

activemq(消息列隊) 主要用於分散式應用,支持消息隊列,消息發佈/訂閱,主要用於非同步和伺服器交換數據 ...


properties 文件配置
1 # activeMq 地址 埠
2 jms_url = tcp://127.0.0.1:61616
3 
4 #隊列名稱
5 jms_test_monitor_data_queue = test_queue

spring xml 配置
 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"
 4        xmlns:amq="http://activemq.apache.org/schema/core"
 5        xmlns:jms="http://www.springframework.org/schema/jms"
 6        xsi:schemaLocation="http://www.springframework.org/schema/beans
 7         http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
 8         http://www.springframework.org/schema/jms
 9         http://www.springframework.org/schema/jms/spring-jms-4.1.xsd
10         http://activemq.apache.org/schema/core
11         http://activemq.apache.org/schema/core/activemq-core-5.9.0.xsd
12         ">
13         <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
14          <property name="locations">
15              <value>classpath:propertiesConfig/test.properties</value>
16          </property>
17     </bean>
18 
19     <bean id="amqConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
20         <constructor-arg index="0" value="${jms_url}"/>
21         <property name="useAsyncSend" value="true"/>
22     </bean>
23 
24     <bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
25         <constructor-arg ref="amqConnectionFactory"/>
26         <property name="sessionCacheSize" value="20" />
27     </bean>
28 
29     <!-- 定義JmsTemplate的Queue類型 -->
30     <bean id="jmsQueueTemplate" class="org.springframework.jms.core.JmsTemplate">
31         <constructor-arg ref="connectionFactory" />
32         <!-- 非pub/sub模型(發佈/訂閱),即隊列模式 -->
33         <property name="pubSubDomain" value="false" />
34     </bean>
35     
36     <!-- 定義JmsTemplate的Topic類型 -->
37     <bean id="jmsTopicTemplate" class="org.springframework.jms.core.JmsTemplate">
38         <constructor-arg ref="connectionFactory" />
39         <!-- pub/sub模型(發佈/訂閱) -->
40         <property name="pubSubDomain" value="true" />
41     </bean>
42 
43     <!-- 消息消費者 start-->
44     
45     <!-- 定義Queue監聽器  -->
46 <!--<bean id="testMessageReceiver" class="com.maven.project.web.jmsMessageOper.TestMonitorQueue"/>
47     <jms:listener-container destination-type="queue" container-type="default" connection-factory="connectionFactory" acknowledge="auto">
48         <jms:listener destination="${jms_test_monitor_data_queue}" ref="testMessageReceiver"/>
49     </jms:listener-container> -->
50     
51     <!-- 定義Topic監聽器  -->
52 <!--<jms:listener-container destination-type="topic" container-type="default" connection-factory="connectionFactory" acknowledge="auto">
53         <jms:listener destination="test.topic" ref="topicReceiver1"/>
54         <jms:listener destination="test.topic" ref="topicReceiver2"/>
55     </jms:listener-container> -->
56     
57     <!-- 定義activme 隊列監聽 -->
58     <!-- 對應的監聽類, com.maven.project.web.jmsMessageOper.TestMonitorQueue -->
60     <bean id="testMessageReceiver" class="com.maven.project.web.jmsMessageOper.TestMonitorQueue"/>  
61      <bean class="org.springframework.jms.listener.DefaultMessageListenerContainer">
62         <property name="connectionFactory" ref="connectionFactory"/>
63         <property name="destinationName" value="${jms_test_monitor_data_queue}"/>
64         <property name="messageListener" ref="testMessageReceiver"/>
65     </bean>
66     
67     <!-- 消息消費者 end -->
68 </beans>

 

activemq 監聽類

 1 package com.maven.project.web.jmsMessageOper;
 2 
 3 import javax.jms.JMSException;
 4 import javax.jms.Message;
 5 import javax.jms.MessageListener;
 6 import javax.jms.TextMessage;
 7 
 8 public class TestMonitorQueue implements MessageListener {
 9 
10     public void onMessage(Message message) {
11         if (message instanceof TextMessage) {
12             TextMessage textMessage = (TextMessage) message;
13             try {
14                 System.out.println("============"+textMessage.getText());
15             } catch (JMSException e) {
16                 e.printStackTrace();
17             }
18         }
19     }
20 }

 

activemq 消息發送類

 1 package com.maven.project.web.jmsMessageOper;
 2 
 3 import java.io.Serializable;
 4 import java.util.Map;
 5 
 6 import javax.jms.BytesMessage;
 7 import javax.jms.JMSException;
 8 import javax.jms.MapMessage;
 9 import javax.jms.Message;
10 import javax.jms.Session;
11 import javax.jms.StreamMessage;
12 
13 import org.springframework.beans.factory.annotation.Autowired;
14 import org.springframework.jms.core.JmsTemplate;
15 import org.springframework.jms.core.MessageCreator;
16 import org.springframework.stereotype.Controller;
17 
18 @Controller
19 public class MessageSender {
20 
21     @Autowired
22     private JmsTemplate jmsQueueTemplate;
23 
24     public void sendTextMessage(final String queueName, final String txtMessage) {
25         jmsQueueTemplate.send(queueName, new MessageCreator() {
26             public Message createMessage(Session session) throws JMSException {
27                 return session.createTextMessage(txtMessage);
28             }
29         });
30     }
31 
32     public void sendObjectMessage(final String queueName, final Object objectMessage) {
33         jmsQueueTemplate.send(queueName, new MessageCreator() {
34             public Message createMessage(Session session) throws JMSException {
35                 return session.createObjectMessage((Serializable) objectMessage);
36             }
37         });
38     }
39 
40     public void sendMapMessage(final String queueName, final Map<String, Object> mapMessage) {
41         jmsQueueTemplate.send(queueName, new MessageCreator() {
42             @SuppressWarnings("unchecked")
43             public Message createMessage(Session session) throws JMSException {
44                 MapMessage mapMessage = session.createMapMessage();
45                 for (Map.Entry<String, Object> entry : ((Map<String, Object>) mapMessage).entrySet()) {
46                     mapMessage.setObject(entry.getKey(), entry.getValue());
47                 }
48                 return mapMessage;
49             }
50         });
51     }
52 
53     public void sendByteMessage(final String queueName, final byte[] message) {
54         jmsQueueTemplate.send(queueName, new MessageCreator() {
55             public Message createMessage(Session session) throws JMSException {
56                 BytesMessage bytesMessage = session.createBytesMessage();
57                 bytesMessage.writeBytes(message);
58                 return bytesMessage;
59             }
60         });
61     }
62 
63     public void sendStreamMessage(final String queueName, final Object message) {
64         jmsQueueTemplate.send(queueName, new MessageCreator() {
65             public Message createMessage(Session session) throws JMSException {
66                 StreamMessage streamMessage = session.createStreamMessage();
67                 streamMessage.writeObject(message);
68                 return streamMessage;
69             }
70         });
71     }
72 }

 

消息發送調用

 1 package com.maven.project.web.action;
 2 
 3 import javax.servlet.http.HttpServletRequest;
 4 import javax.servlet.http.HttpServletResponse;
 5 
 6 import org.springframework.beans.factory.annotation.Autowired;
 7 import org.springframework.stereotype.Controller;
 8 import org.springframework.web.bind.annotation.RequestMapping;
 9 13 import com.maven.project.tools.utils.SenderMessageQueueName;
14 import com.maven.project.web.jmsMessageOper.MessageSender;
15 
16 @Controller
17 @RequestMapping("/user")
18 public class UserLoginAction {
19     
20     @Autowired
21     private MessageSender messageSender;
22     
32     @RequestMapping("/login")
33     public void login(HttpServletRequest request,HttpServletResponse response){
35         messageSender.sendTextMessage("test_queue","消息發送內容"); // test_queue 消息隊列名稱
37     }
38 }

 

maven pom 配置

1         <!-- activemq相關依賴 -->
2         <dependency>
3             <groupId>org.apache.activemq</groupId>
4             <artifactId>activemq-core</artifactId>
5             <version>5.7.0</version>
6         </dependency>

 

activemq server download

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、客戶端腳本安全 (1)跨站腳本攻擊(XSS): XSS攻擊,通常指黑客通過“html註入” 篡改了網頁,插入了惡意的腳本,從而在用戶瀏覽網頁的時候,控制用戶瀏覽器的一種攻擊。 最常見的XSS攻擊就是通過讀取瀏覽器的Cookie對象,從而發起“cookie劫持”,當前用戶的登錄憑證存儲於伺服器的s ...
  • 題目:輸入一個整形數組,數組裡有正數也有負數。組中連續的一個或多個整數組成一個子數組,每個子數組都有一個和。求所有子數組的和的最大值。要求時間複雜度為O(n)。 思路:當我們加上一個正數時,和會增加;當我們加上一個負數時,和會減少。如果當前得到的和是個負數,那麼這個和在接下來的累加中應該拋棄並重新清 ...
  • 一、HTTP協議 HTTP協議是一個無狀態協議,伺服器無法判斷若幹個請求是否來自同一個瀏覽器,無法與瀏覽器進行會話。 二、HTTP會話控制:Cookie Cookie技術是使用在瀏覽器端的一種緩存技術, 在瀏覽器第一次向伺服器發出請求,在伺服器端會創建Cookie對象,並以鍵值對的形式在響應頭中返回 ...
  • import java.text.DateFormat;import java.text.ParsePosition;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;/** * * @ ...
  • 一、為什麼要使用資料庫連接池? 資料庫連接資源是非常昂貴的,特別是訪問資料庫需要通過網路的時候,更能體現。單純的物理連接,會造成性能低下。 所以引入了資料庫連接池的概念,連接池儘可能的重用了資源,大大節省了記憶體。提高了程式的性能。 同時也可以對資料庫連接池實現更加個性化的管理。 二、資料庫連接池? ...
  • 做著項目突然SVN報Previous operation has not finished; run 'cleanup' if it was interrupted,進度又要繼續,煩。百度一下發現很多解決方案,自己馬上嘗試的解決,還有點意思,記錄一下。 1.下載sqlite3.exe 2.找到你項目 ...
  • 1 template模版文件uploadfile.html 特別註意的是,只有當request方法是POST,且發送request的<form>有屬性enctype="multipart/form-data"時,request.FILES中包含文件數據,否則request.FILES為空。 2 視圖 ...
  • 題目:輸入n個整數,找出其中最小的K個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,。 思路1:我們通過快排找到第k個數,然後比他的小的都在左邊,比他大的都在右邊。 思路2:應對大數據的情況,首先取數組中前k個數字建立大根堆,建立堆之後,從第k+1個元素開始 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...