如题,使用emqx-5.3.2作服务器,MQTTX作client,发送主题为$share/group1/topic2或topic2的retain消息,之后其他client如果是共享订阅主题,就无法收到retain的消息。所以协议是不是有什么规定,希望大家指教,谢谢
补充一下,其他client共享订阅主题之后,再向topic2主题发布消息,client就可以收到。
你好,没太理解你的描述场景。
意思是
- 我们有2个客户端同时订阅了主题
$share/group1/topic2
- 现在,上线另外一个发布端,向
topic2
主题发布 retain 消息。 - 此时这个2个订阅客户端都接受不到消息么?
抱歉描述的不清楚。
我的顺序是:
1、 先上线一个发布端,向 topic2
主题发布 retain 消息。
2、再上线客户端,订阅共享主题 $share/group1/topic2
。
3、此时客户端就收不到retain的消息。
4、之后发布端再向topic2
主题发布消息,不管是不是retain,这时候客户端就可以收到消息了。
我想问的就是第三步,客户端为什么收不到retain的消息?
查阅了MQTT5.0协议,其中4.8.2节共享订阅中有说,
- 第一次订阅时,保留消息不发送给此会话。其他匹配的发布消息将发送给此会话。
因此第三步收不到保留消息是正常的。