vue 使用消息隊列進行數據通信 Rabbit MQ
@
概念:
1.是一種應用程序對應用程序的通信方法。應用程序通過讀寫出入隊列的消息(針對應用程序的數據)來通信,而無需專用連接來鏈接它們
2.舉個例子,假如你想投遞一封郵件,你可以將郵件投遞到某個郵箱,然后郵遞員從郵箱中獲取郵件,並將郵件交付到接收方,在這個過程中,RabbitMQ就 類似於郵箱 、郵局和郵遞員,RabbitMQ是一個消息隊列,它可以接收程序發送的消息,然后放入到相應的消息隊列中,另外一些程序可以從消息隊列中獲取數據,以此完成程序之間的通信.

-RabbitMQ官方文檔
1.參考這個鏈接 解釋的很細
2.RabbitMQ消息隊列(一): Detailed Introduction 詳細介紹
注意 上述文件主要解釋概念,理解清楚,使用很簡單
第一種.本地測試
Windows下RabbitMQ的安裝
下載Erlang,地址:http://www.erlang.org/download/otp_win32_R15B.exe ,雙擊安裝即可(首先裝)
下載RabbitMQ,地址:http://www.rabbitmq.com/releases/rabbitmq-server/v3.3.4/rabbitmq-server-3.3.4.exe ,雙擊安裝即可
下載rabbit-client.jar ,Java代碼時需要導入。地址:http://www.rabbitmq.com/releases/rabbitmq-java-client/v3.3.4/rabbitmq-java-client-bin-3.3.4.zip
安裝完成后,在RabbitMQ的安裝目錄的sbin先會有:rabbitmq-server.bat

第二種.直接有個服務器 跑起來,進入查看 像這樣:

WEB接入代碼顯示
1.首先安裝依賴文件
// 先安裝stompjs
npm install stompjs
2.我選擇的是單頁面引入
import Stomp from "stompjs";
export const MQTT_SERVICE = 'ws://192.168.0.17:15674/ws' // mqtt服務地址
export const MQTT_USERNAME = 'username' // 連接用戶名
export const MQTT_PASSWORD = 'passward' // 連接密碼
export const Virtual_host = 'bx' // 偵聽器端口
export default {
data() {
return {
client: Stomp.client(MQTT_SERVICE)
};
},
created() {
this.connect();
},
methods: {
// 消息隊列獲取
mqtthuoquMsg() {
//初始化連接
const headers = {
login: MQTT_USERNAME,
passcode: MQTT_PASSWORD
};
//進行連接
this.client.connect(headers.login, headers.passcode, this.onConnected, this.onFailed, Virtual_host);
},
onConnected: function () {
//訂閱頻道
const topic = localStorage.getItem('personId');
this.client.subscribe(topic, this.responseCallback, this.onFailed);
},
onFailed: function (frame) {
console.log("MQ Failed: " + frame);
this.$message.error('連接失敗')
},
// 回傳消息
responseCallback: function (frame) {
console.log("MQ msg=>" + frame.body);
//接收消息處理
},
// 斷開相應的連接
close:function(){
this.client.disconnect(function() {
console.log("已退出賬號");
})
}
}
};
注意:
首先連接的時候 默認的登錄的用戶名 guest 密碼 guest 但是也可以自己創建
默認端口: 15674

更注意:

這個是偵聽器端口,一般在使用RabbitMQ的時候,盡量都是新創建一個新的賬號,所以都是要在高級配置文件里面進行修改 一下是官網的介紹

拓展:
這個在使用的時候,會在控制台console 一直打印相關的連接信息 哐哐的打印 好多 ,解決辦法就是把那個配置文件修改
在node_modules中

