当前位置:   article > 正文

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

java 走mqtt协议,两个订阅者都订阅同一个topic,向该topic发布一个消息,怎么只让其

共享订阅

在实践中我们的业务系统集成是集群存在,对于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为例,可通过三方面来进行配置:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/42868
推荐阅读
相关标签
  

闽ICP备14008679号