繁体   English   中英

重新启动时,MQTT客户端重复上一条消息

[英]MQTT Client repeating last message, when restarted

每当我重新启动运行MQTT客户端的WAR项目时,我都会收到客户端收到的最后一条消息,从而导致重复。 可能是什么导致了这个? 客户代码? 服务器配置?

客户端

操作系统 :Debian GNU / Linux 8.2(jessie); Java :java版“1.7.0_91”,OpenJDK运行时环境(IcedTea 2.6.3)(7u91-2.6.3-1~deb8u1),OpenJDK 64位服务器VM(内置24.91-b01,混合模式)

Apache Tomcat / 8.0.14(Debian)

使用以下依赖关系从https://repo.eclipse.org/content/repositories/paho-releases/ Maven存储库获取MQTT库:

    <dependency>
        <groupId>org.eclipse.paho</groupId>
        <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
        <version>1.0.1</version>
    </dependency>

使用此存根接收消息,实现org.eclipse.paho.client.mqttv3.MqttCallback:

@Override
public void messageArrived(String topic, MqttMessage msg) throws Exception {}

我看到还有另一种方法可以覆盖,但我没有考虑:

@Override
public void deliveryComplete(IMqttDeliveryToken token) {
    // TODO Auto-generated method stub

}

我还应该提供什么?

这是按设计工作的。

问题不在于订阅结束,而是由发布者引起的。

正在发布消息,并将保留位设置为true。

有保留的消息的hivemq网站上的一个很好的说明在这里 ,但基本上保留位告诉经纪人存储与标志上一次发布的消息,对于给定的主题,在他们订阅的话题点提供这种到任何客户端。 这包括客户端重新连接时。 用例是确保客户端始终拥有最新数据。

仅在发布消息时调用deliveryComplete函数(客户端库确认消息已根据QOS级别保留其控制权)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM