webman里面使用了mqttClient插件,在自定义进程里面做了mqtt的订阅接收,自定义进程数量设置到2个以上的时候,同一个主题会收到多个相同的数据,这个情况怎么处理呢?mqtt服务器是EMQX。
要么用分布式锁 谁先抢到谁执行 要么 直接订阅子topic
mqtt 机制就是广播吧。 如果只想要一次通知,只让一个进程订阅这个消息就好了。 比如A进程订阅A主题,B进程订阅B主题。进程id可以用$worker->id来获取,用来区分当前是哪个进程。
我们的设备ID都是纯数字的,之前尝试过采用“设备ID % 2 == $woker->id” 的方式来处理。
要么用分布式锁 谁先抢到谁执行 要么 直接订阅子topic
mqtt 机制就是广播吧。
如果只想要一次通知,只让一个进程订阅这个消息就好了。
比如A进程订阅A主题,B进程订阅B主题。进程id可以用$worker->id来获取,用来区分当前是哪个进程。
我们的设备ID都是纯数字的,之前尝试过采用“设备ID % 2 == $woker->id” 的方式来处理。