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  接收消息
        //queue 可以是队列, 也可以是exchange交换机
		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

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值