RabbitMQ 之stomp 高效率消費訊息
阿新 • • 發佈:2021-01-22
技術標籤:程式人生
官方文件:https://www.rabbitmq.com/web-stomp.html
我這裡是直接消費mq佇列的訊息。 也可以在服務端程式碼傳送訊息給stomp的。
第一步首先在rabbitmq 伺服器啟動外掛: 無需重啟伺服器
rabbitmq-plugins enable rabbitmq_stomp
rabbitmq-plugins enable rabbitmq_web_stomp
js :
https://www.bootcdn.cn/stomp.js/
https://cdn.bootcss.com/sockjs-client/1.1.4/sockjs.js
第二步: 前端程式碼:
var client = null; var mqurl = "ws://IP:15674/ws"; //埠有15674, 呼叫如下連線和關閉方法就行了。 //連線 function connectClient() { var ws = new WebSocket(mqurl); client = Stomp.over(ws); //連線 var on_connect = function(x) { console.log("連線s成功!"); // queue 代表隊列, exchange代表交換機 // pdtgps:pdt:gps.pos-ksh-2 代表隊列名, 會自動建立 // subscribe 接收訊息 client.subscribe('/queue/pdtgps:pdt:gps.pos-ksh-2', function (data) { //console.log(data.body); //changePdtPosition 處理訊息的方法名 changePdtPosition(JSON.parse(data.body)); //x-message-ttl ttl }, {durable:true,'auto-delete':false,'x-message-ttl':30000,exclusive:false}); }; var on_error = function(err) { console.log("連線s錯誤: " + err); } //admin-pdt 新建的使用者, 預設的是guest, pdt是虛擬空間 client.connect('admin-xx','admin-xx' , on_connect, on_error, 'pdt'); } //關閉連線 function closeClient() { client.disconnect(function(){ console.log("關閉s連線!"); }); }
如圖是連線成功了。 如果報錯就根據報錯資訊解決, 預設使用者為 guest, 虛擬空間 為 /
我碰到兩個錯誤: 1: 使用其他使用者沒有許可權, 拒絕登入。 2: 對列在mq中已存在。 佇列會自動建立的。
stomp.js 134行這裡會列印收到的資訊。 很煩, 把這個message 去掉就好了。
參考部落格:
https://blog.csdn.net/weixin_40461281/article/details/81806921
https://www.cnblogs.com/selwynHome/p/9609298.html
https://blog.csdn.net/m0_37542889/article/details/83750665