1. 程式人生 > 其它 >RabbitMQ 之stomp 高效率消費訊息

RabbitMQ 之stomp 高效率消費訊息

技術標籤:程式人生

官方文件: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