EMQX在发送共享订阅消息的时候并没有判断对端是否在线:
复现步骤:
- 创建2个客户端A和B,cleansession = false,订阅相同的共享订阅主题 「$share/g/topic123」;
- 使用另一个客户端C发送消息到主题 「topic123」,A或B其中一个能收到消息;
- 关闭客户端B,使用C继续发送消息,发现A无法接收到消息,客户端B重新连接才可收到消息 ;
已尝试多个共享订阅策略,EMQX在选择发送订阅者时都没有考虑对端是否在线;
EMQX在发送共享订阅消息的时候并没有判断对端是否在线:
复现步骤:
已尝试多个共享订阅策略,EMQX在选择发送订阅者时都没有考虑对端是否在线;
我理解是正常的,如果 cleansession = false 的话他会正常投递到“未连接但仍然有会话”的那个客户端。如果你用的是 random 或者 roundrobin 策略,他仍然会在 A 和 B 之间做分发。