activeMQ例項在專案中的運用二【專案實戰系列】
上一篇我們已經介紹了activeMQ的伺服器端的開發和程式碼,那麼這一篇就介紹一下怎麼獲取對應的activeMQ裡面的資訊,並
通過websocket推送到前端。
首先來看一下接收端專案結構:
專案結構中主要的就是listener包裡面的內容,用於監聽MQ中的訊息,我們來看其中一個UserPushListener.java類:
其餘的2個和這個很相似,只是換了實體類的接收而已。package com.lwl.activemq.listener; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.TextMessage; import org.apache.log4j.Logger; import org.springframework.stereotype.Component; import com.alibaba.fastjson.JSON; import com.lwl.activemq.domain.User; import com.lwl.activemq.controller.websocket.WebsocketController; @Component("userPushListener") public class UserPushListener implements MessageListener { protected static final Logger logger = Logger.getLogger(UserPushListener.class); @Override public void onMessage(Message message) { logger.info("[UserPushListener.onMessage]:begin onMessage."); TextMessage textMessage = (TextMessage) message; try { //獲取資料 String jsonStr = textMessage.getText(); logger.info("[UserPushListener.onMessage]:receive message is,"+ jsonStr); if (jsonStr != null) { User info = JSON.parseObject(jsonStr, User.class); System.out.println("==============================接受到的使用者資訊 開始===================================="); System.out.println(info.toString()); System.out.println("==============================接受到的使用者資訊 結束===================================="); WebsocketController.broadcast("user", jsonStr); } } catch (JMSException e) { logger.error("[UserPushListener.onMessage]:receive message occured an exception",e); } logger.info("[UserPushListener.onMessage]:end onMessage."); } }
還記得我們在配置伺服器端使用的MQ的配置檔案嘛,當然在接收端也會使用相應的配置檔案:activemq_config.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:jms="http://www.springframework.org/schema/jms" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-3.0.xsd"> <!-- 內部統一使用的MQ地址 --> <bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="tcp://localhost:61616"/> </bean> <bean id="connectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop"> <property name="connectionFactory" ref="targetConnectionFactory"/> <property name="maxConnections" value="50"/> </bean> <!-- Spring提供的JMS工具類,它可以進行訊息傳送、接收等 --> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="connectionFactory"/> </bean> <!-- 推送給使用者資訊 --> <bean id="userPushListenerMQ" class="org.apache.activemq.command.ActiveMQQueue"> <constructor-arg> <value>user.service.queue</value> </constructor-arg> </bean> <!-- 推送給新聞資訊 --> <bean id="newsPushListenerMQ" class="org.apache.activemq.command.ActiveMQQueue"> <constructor-arg> <value>news.service.queue</value> </constructor-arg> </bean> <!-- 推送給客戶資訊 --> <bean id="clientPushListenerMQ" class="org.apache.activemq.command.ActiveMQQueue"> <constructor-arg> <value>client.service.queue</value> </constructor-arg> </bean> <!-- 使用者接受推送 --> <bean id="userPushListenerConsumer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="connectionFactory" /> <property name="destination" ref="userPushListenerMQ" /> <property name="messageListener" ref="userPushListener" /> </bean> <!-- 新聞接受推送 --> <bean id="newsPushListenerConsumer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="connectionFactory" /> <property name="destination" ref="newsPushListenerMQ" /> <property name="messageListener" ref="newsPushListener" /> </bean> <!-- 客戶接受推送 --> <bean id="clientPushListenerConsumer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="connectionFactory" /> <property name="destination" ref="clientPushListenerMQ" /> <property name="messageListener" ref="clientPushListener" /> </bean> </beans>
好了,資料接受端已經全部搞定了,就這麼簡單,沒什麼難度的。至於通過websocket推送到前端的功能,已經在我另一篇的
文章裡了:http://blog.csdn.net/lovelong8808/article/details/52212566 有興趣的可以看看,這2個是同一個專案使用,重在結合
知識和運用。
ActiveMQ的相關程式碼也已經提交到github上,有興趣的同學可以去看看 https://github.com/1181888200/activeMQ.git
相關推薦
activeMQ例項在專案中的運用二【專案實戰系列】
上一篇我們已經介紹了activeMQ的伺服器端的開發和程式碼,那麼這一篇就介紹一下怎麼獲取對應的activeMQ裡面的資訊,並 通過websocket推送到前端。 首先來看一下接收端專案結構: 專案結構中主要的就是listener包裡
如何在你的專案中整合 CAP【手把手視訊教程】
前言 之前錄製過一期關於CAP的視訊,但是由於當時是直播時錄製的視訊,背景音比較雜所以質量有點差。這次的視訊沒有直播,直接錄製的,視訊質量會好很多,第一遍錄製完成之後發現播放到一半沒有聲音,所以又重新錄製了一遍。 視訊簡介 CAP 2.3 版本釋出後,針對於一些介面做了一些調整,內部也做了很多修改,這一期的視
【演算法實戰系列】之兩數相加
給出兩個 非空 的連結串列用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。 如果,我們將這兩個數相加起來,則會返回一個新的連結串列來表示它們的和。 您可以假設除了數
【OpenStack實戰系列】OpenStack部署都有哪些方式
對於每一個剛接觸到OpenStack的新人而言,安裝無疑是最困難的,同時這也客觀上提高了大家學習OpenStack雲端計算的技術門檻。想一想,自己3年前網上偶然接觸到OpenStack時,一頭茫然,手動搭建一個多節點環境時居然用了3個星期。時至今日,真是感觸頗多
activeMQ例項在專案中的運用【專案實戰系列】
1.下載ActiveMQ 去官方網站下載:http://activemq.apache.org/ 2.執行ActiveMQ 解壓縮apache-activemq-5.14.0-bin.zip,然後雙擊apache-activemq-5.14.0\bin\activemq.
【備忘】Lucene從入門到專案中運用視訊
01_lucenc簡介和建立索引初步.avi 02_lucene簡介和搜尋初步.avi 03_lucene索引_建立_域選項.avi 04_lucene索引_的刪除和更新.avi 05_lucene索引_加權操作和Luke的簡單演示.avi 06_對日期和數字進行索引.av
【springboot】如何在自己的springboot專案中引用別的springboot專案jar
正好今天碰到了,就在這裡總結下,習慣了將公用的專案打包成jar,然後當做工具類引入到自己專案中,直接呼叫,感覺甚是方便... 但有沒有發現,平時我們引用的大部分情況下是一個maven專案,然後打包好的jar也是maven專案的結構,所以我們可以正常的引用和使用,但現在已經是springboot的
怎樣實際專案中運用責任鏈模式
1 模式概要 1.1 簡介 責任鏈模式為請求建立一個接收者物件鏈,每個接收者都包含對另一個接收者的引用,如果一個物件不能處理該請求,那麼它會把請求傳給下一個接收者,依此類推 責任鏈模式避免了請求的傳送者和接收者耦合在一起,讓多個物件都有可能接收請求,將這些物件連成一條鏈,並且沿著這條鏈傳遞請
在專案中運用rabbitmq
本章內容 解耦思維 例項解析 實現RPC功能 在專案開發中,我們談論最多的應該就是專案的可擴充套件性,解耦專案中的各模組就是解決擴充套件性的一種實現方式。為什麼要解耦?什麼樣的場景需要解耦呢? 解耦思維 &n
實際專案中運用責任鏈模式 | 併發程式設計網
1 模式概要 1.1 簡介 責任鏈模式為請求建立一個接收者物件鏈,每個接收者都包含對另一個接收者的引用,如果一個物件不能處理該請求,那麼它會把請求傳給下一個接收者,依此類推 責任鏈模式避免了請求的傳送者和接收者耦合在一起,讓多個物件都有可能接收請求,將這些物件連成一條鏈,並且沿著這條鏈傳遞請
Java Websocket例項【專案實戰系列】
現很多網站為了實現即時通訊,所用的技術都是輪詢(polling)。輪詢是在特定的的時間間隔(如每1秒),由瀏覽器對伺服器發 出HTTP request,然後由伺服器返回最新的資料給客服端的瀏覽器。這種傳統的HTTP request 的模式帶來很明顯的缺點 – 瀏 覽器需要
javaweb專案中退出系統【親測】
// 退出登入重定向到登入頁面 @RequestMapping("/logout") public String logout(HttpSession session) { //&nb
Vue專案中生成二維碼
本來是由後臺生成二維碼的,但是測試後不是很穩定,由於網路問題有時候會載入不過來。。。 之後就發現vue的兩個外掛:vue-qart和vue-qr。對比之後發現,vue-qr的配置更全一些,所以選擇了vue-qr vue-qart: 1、npm install vue-qart&nbs
Laravel專案中運用Travis持續整合和自動化測試
背景 在很多Github開源專案頁面的readme中,經常看到類似的圖示 這個 bulid passing,其實是 Travis 的構建狀態圖示。Travis 是一個結合 Github 使用的持續整合(CI:continuous integration)
【ASP.NET 系列】淺談緩存技術在ASP.NET中的運用
進行 喜歡 之間 framework cnblogs 磁盤 onf lin bug 本篇文章雖不談架構,但是Cache又是架構中不可或缺的部分,因此,在講解Cache的同時,將會提及到部分架構知識,關於架構部分,讀者可以不用理解,或者直接跳過涉及架構部分的內容, 你只
Java Spring MVC專案搭建(二)——專案配置
文章轉載自:https://www.cnblogs.com/eczhou/p/6287876.html 1、站點配置檔案web.xml 每一個Spring MVC 專案都必須有一個站點配置檔案web.xml,他的主要功能嗎....有一位大哥已經整理的很好,我借來了,大家看看: 引用部落格
【Spring Cloud 系列】:構建Eureka Client 專案
一. 構建 Eureka Client 端 1. 首先還是需要先看看官方文件是如何說明的,從文件中瞭解到,需要為專案引入Eureka-client 相關jar包 <dependency> <groupId>org.springframew
在一個專案中引用另一個專案中的類
在A專案上新增引用,比如你想呼叫B專案的一些類或方法, 在A專案上右鍵-->新增引用(add reference) 選擇本地專案,找到B專案後,新增引用. 程式中使用using B 這樣就可以使用B中的類和方法了.
Android 在專案中引入另一個專案作為依賴(引入Module)
文件背景介紹 最近寫一個專案引用了一個第三方庫,MPAndroidChart,要求做一個柱形圖,且點選和未點選呈現兩種顏色,經查詢發現,該庫無法直接設定選中後柱的顏色,只能嘗試修改原始碼,但是由於該庫為直接在gradle中匯入的,程式碼上鎖無法修改,因此該文
Maven專案中使用jetty啟動專案[今後會不定期更新矯正本文]
1. maven倉庫地址: 我寫本文的時候用的是如下倉庫: -->http://mvnrepository.com/artifact/org.eclipse.jetty/jetty-maven-plugin/9.4.0.v20161208 2.Jett