大规模传感器网络MQTT主题设计疑问:是否需拆分请求响应主题?
MQTT主题拆分:请求/响应分离是最优解
完全应该将主题拆分为请求/响应两类,这是解决你当前问题最直接、易维护的方案,具体原因和落地方式如下:
彻底消除自收消息问题
让传感器仅订阅/cell/{id}/request/#,Master仅订阅/cell/{id}/response/#:- Master下发指令时,发布到
/cell/1/request/ping,传感器收到后回复到/cell/1/response/ping - 双方的订阅主题和发布主题完全不重叠,不会再收到自身发送的无关消息,无需额外过滤逻辑。
- Master下发指令时,发布到
主题职责更清晰,便于扩展
拆分后可以把不同类型的消息做明确区分:- 传感器主动上报的业务数据(温度、速度)保留原主题:
/cell/1/temperature、/cell/1/speed - Master指令统一走
/cell/{id}/request/[指令名] - 传感器回复统一走
/cell/{id}/response/[指令名]
后续新增指令或数据类型时,直接按规则扩展即可,不会出现主题混乱。
- 传感器主动上报的业务数据(温度、速度)保留原主题:
简化设备端消息处理
不需要在代码里判断消息是否为自身发送,减少无效的消息处理流程,降低代码复杂度和出错概率。
内容的提问来源于stack exchange,提问作者TheBestPlayer
相关产品推荐
相关产品推荐

