带有负载均衡器应用程序服务器的 MQTT

MQTT with load balanced applicaiton server

我有两个 tomcat 服务器 运行 相同的 Web 应用程序。这两个 Web 应用程序都订阅了 MQTT 服务器中的主题 1。每当在主题 1 中收到消息时,两个应用程序都会收到消息。但我只希望一台服务器来处理请求,而不是同时处理请求。最坏的情况是我必须对两个 Web 应用程序进行条件检查以允许一次性处理。对这种情况有什么建议吗?

您需要使用支持共享订阅的 MQTT 代理1

此功能允许您让多个客户端订阅同一主题,代理将以循环方式将它们传送给所有客户端(例如,第一条消息发送给客户端 1,第二条消息发送给客户端 2,第三条消息发送给客户端1, 4th 到客户 2...)

1 共享订阅是许多代理在 v3 中实现的功能,但具有不同的机制,因此它们并不总是兼容,从 MQTT 规范的 v5 开始,共享订阅是一个经纪人可以支持的可选组件,所有实施该功能的经纪人都应该表现相同。