Wizzercn / MqttWk

Java + Netty 实现的高并发高可用MQTT服务broker,轻松支持10万并发(有群友实现了130万在线)
Apache License 2.0
644 stars 231 forks source link

开启集群功能时会发送两条消息造成重复 #3

Closed BEWINDOWEB closed 5 years ago

BEWINDOWEB commented 5 years ago

开启集群后: 1)Publish -> processPublish -> internalCommunication.internalSend(internalMessage); 会广播一条消息,然后Broker各自收到消息判断是否在自己节点,然后下发消息。 Publish -> processPublish -> this.sendPublishMessage 正常发送消息。

如果Client1和Client2连接到同一个Broker,开启集群,Client1发送Client2订阅的主题,Client2除了集群收到一条,还会本地收到一条,产生两条信息造成重复。

解决: InternalMessage增加BrokerId信息,判断是不是自己Broker 或者第二条send判断一下是否是集群模式,是就不发。