如何订阅MQTT服务器历史消息,mqtt集群订阅如何只消费一个(一次)消息?

在MQTT集群环境中,为避免每个服务重复消费消息,可以使用共享订阅策略。共享订阅允许在多个订阅者之间实现负载均衡,确保消息仅被一个订阅者消费。以EMQ X为例,配置共享订阅包括开启该功能,设置均衡策略,并在订阅时使用$share/前缀。发布和订阅的主题需遵循特定规则,确保消息正确路由。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

共享订阅

在实践中我们的业务系统集成是集群存在,对于mqtt消息,如果没有做特殊处理,那么集群中每个服务只要订阅了mqtt中的一个主题,那么每台服务器都会进行消费。不仅浪费资源,还限制了服务的处理上限。

因此,有不少朋友在问这类问题:走MQTT协议,两个订阅者都订阅同一个topic,向该topic发布一个消息,怎么只让其中的订阅者消费?

针对这个问题,笔者经过实践发现,可以通过broker共享订阅机制来解决此问题。

什么是共享订阅

共享订阅是在多个订阅者之间实现负载均衡的订阅方式:

[subscriber1] got msg1

msg1, msg2, msg3 /

[publisher] ----------------> "$share/g/topic" -- [subscriber2] got msg2

\

[subscriber3] got msg3

上图中,共享 3 个 subscriber 用共享订阅的方式订阅了同一个主题 $share/g/topic,其中topic 是它们订阅的真实主题名,而 $share/g/ 是共享订阅前缀。EMQ X 支持两种格式的共享订阅前缀:

a38cc46347c9a62cce43dec7a6443643.png

如何实现共享订阅

以emqx为例,可通过三方面来进行配置:

第一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值