有没有办法在第一个订阅者收到 MQTT 消息后从其主题中删除该消息,以便其他订阅者无法读取它?
为了弄清楚这个奇怪的问题:
我必须处理四个 JBoss 实例(我必须承认我绝对不对该架构负责)。他们是彼此的镜子。因此,它们中的每一个都运行一项订阅特定主题的作业。来自该主题的消息保留在数据库中。我必须避免的是同一条消息被保留四次。所以我的想法是在这个主题上创建一个竞争条件。第一个读取该消息的作业将其删除,以便其他作业不会收到该消息。这可能吗?
排序答案 否,一旦发布消息,您就无法“删除”消息,经纪人将几乎立即发送给所有订阅者。
更长的答案,您正在寻找的是所谓的共享订阅。这允许一组客户端作为有效的单个单元订阅一个主题,并且消息仅传递到该组中的一个。这是为了负载平衡。共享订阅将作为 v5 的一部分添加到 MQTT 规范中。
目前,许多代理已经实现了此功能(每个代理的实现都略有不同,因此在 v5 之前您无法在代理实现之间无缝切换)作为增值功能。我相信以下经纪商有某些版本的共享订阅支持,可能还有更多:
归档时间: |
|
查看次数: |
2295 次 |
最近记录: |