RocketMQ-消费模式

一、消费模式
集群消费:当使用集群消费模式时,消息队列MQ认为任意一条消息只需要被集群内的任意一个消费者处理即可。
广播消费:当使用广播消费模式时,消息队列MQ会将每条消息推送给集群内所有注册过的消费者,保证消息至少被每个消费者消费一次。

二、问题描述

当前项目浏览器与服务器通过WebSocket实现一个通知功能,但该通知消息不稳定、刷新浏览器有时会不显示,问题根源在于部署两台带WebSocket的服务器、两台服务器有相同的GroupID来消费同一个RocketMQ,导致浏览器连接的服务器可能没有消费到MQ消息

三、解决方案
方案1
两台服务器使用不同的Group ID

方案2
两台服务器采用广播消费模式消费MQ消息

方案3
WebSocket从原项目分离出来、只部署一台

方案4
不使用RocketMQ了、整体换方案

四、方案2实践结果
场景1
服务1启动、会消费
服务2启动、会消费
rocketmq-console-ng中对应消息trackType显示的是NOT_ONLINE

场景2
服务1启动、会消费
服务2关闭、再启动、不会消费

场景3
服务1关闭、先启动、会消费
服务2关闭、再启动、不会消费

场景4
服务1关闭、再启动、不会消费
服务2关闭、先启动、会消费

广播模式下,服务端不维护消费进度
广播模式下,消息队列 MQ 保证每条消息至少被每台客户端消费一次,但是并不会重投消费失败的消息
广播模式下,客户端每一次重启都会从最新消息消费。客户端在被停止期间发送至服务端的消息将会被自动跳过

文章仅作为个人学习整理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值