Mosquitto每个主题只开一个

时间:2018-05-12 14:34:04

标签: mqtt mosquitto libmosquitto

我在网络上使用mosquitto实现了一个MQTT消息代理。我有一个Web应用程序向代理发布内容和几个订阅相同主题的服务器。所以我有一个冗余场景。

我的问题是,单独使用mosquitto,有没有办法将其配置为仅在第一个订阅者上发布数据?否则,所有人都会做同样的事情。

2 个答案:

答案 0 :(得分:1)

我认为不可能。

但你可以这样做。

让第一个订阅者程序在收到消息后立即响应通道上的确认,并让冗余程序在初始消息之后的一小段时间内查找确认。

如果收到确认,则冗余不应该做任何事情。

因此,如果第一个订阅者获取并使用该消息,那么即使他们收到消息,其他订户也不会做任何事情。

答案 1 :(得分:1)

目前暂不通过mosquitto这是不可能的(如另一个答案所述,没有2个用户之间的通信)。

对于新版本的MQTT规范(v5)*,有一种名为"共享订阅"的新模式。这允许多个客户端订阅单个主题,并且消息将通过循环传递到每个客户端。这更适用于负载平衡而不是主/从故障转移。

*有一些代理(HiveMQ,IBM MessageSight)已经在MQTT v3.1.1上支持某些版本的共享订阅,但它们以稍微不同的方式(不同的主题前缀)实现它,因此它们不是交叉兼容的。