GatewayWorker模式下是否支持MQTT的多个订阅者订阅同一TOPIC,而不重复订阅?

梦如江月

背景

worker,您好,最近在做一个物联网项目,使用的是MQTT协议的sub订阅/pub发布模式,自建了MQTT服务器,物联设备上报消息,然后MQTT客户端服务器订阅设备上报的消息并发布返回/指令消息。

问题描述

当MQTT客户端服务器(订阅者)连接数超载需要用到分布式时,能否使用GatewayWorker的方式,以MOTT客户端服务器作为Worker服务和Gateway服务器通信?
如果可以应该要如何实现,能否提供一些实现思路。

为此你搜索到了哪些方案及不适用的原因

有查询到MQTT客户端服务器(订阅者)分布式方案:可以使用共享订阅的方式来解决多个订阅者订阅同一个topic的方案。
现在想了解下能否用GatewayWorker这种模式实现多个订阅者订阅同一个topic,而不重复订阅的方法。

863 2 1
2个回答

何烈山

GatewayWorker是一个基于Workerman开发的高性能、异步事件驱动的网关服务框架,支持TCP/UDP长连接和WebSocket长连接协议,可用于构建高性能的网络应用。但是,GatewayWorker本身并不支持MQTT协议,所以无法直接使用GatewayWorker来实现MQTT客户端服务器的分布式。

对于MQTT客户端服务器的分布式,您可以使用MQTT协议本身提供的共享订阅机制。共享订阅机制允许多个订阅者订阅同一个topic,并且每个消息只会被其中一个订阅者接收到,从而实现订阅者之间的负载均衡。您可以将多个MQTT客户端服务器(订阅者)连接到同一个MQTT服务器上,并使用共享订阅的方式订阅同一个topic,就可以实现MQTT客户端服务器的分布式了。

另外,如果您想使用GatewayWorker来实现MQTT协议的服务,您可以考虑使用MQTT协议的PHP实现库,例如phpMQTT等,并结合GatewayWorker进行开发。但是,这种方式需要您进行额外的开发和适配,相对较为复杂。

walkor

没看出来你的需求哪里需要gatewayWorker了。如果需要mqtt客户端服务器分布式,原来单机的,再部署几套然后订阅改成共享订阅就好了。 mqtt客户端 https://www.workerman.net/doc/workerman/components/workerman-mqtt.html

年代过于久远,无法发表回答
🔝