我已经设置了一个Moquette MQTT代理并将其与eclipse Paho客户端连接(我将称之为paho1
)。订阅in/#
主题。
我创建了另一个Paho客户端(我将称之为paho2
),当然使用不同的客户端ID,并将其发布到具有in/device
主题的代理。
首先,数据包已成功发送。但是,当我断开paho2
并重新连接到代理并发送相同的数据包时,它不会传递给paho1
。
我想知道为什么会这样。我对Paho客户端的设置是qos = 0
(我也试过了1和2)。
MqttConnectOptions connOpts = new MqttConnectOptions();
connOpts.setCleanSession(false);
我正在查看经纪人的日志,结果如下。成功后,我的协议版本将打印到日志中。
答案 0 :(得分:0)
我建议尝试用不同的工具复制问题。在代理运行时,运行订阅客户端:
mosquitto_sub -h <hostname> -t in/# -v
然后单独进行发布:
mosquitto_pub -h <hostname> -t in/device -m message
这应该很快返回,你的mosquitto_sub实例应该打印in/device message
。重复发布,您应该看到同样的事情。
如果您没有看到重复的消息,则代理会出现问题。如果然后尝试使用例如mosquitto作为经纪人并重复你的代码。
如果您确实使用mosquitto_pub / sub看到了重复的消息,那么您的代码就会出现问题。您可以继续尝试不同的排列,直到您更好地了解问题所在 - 即使用mosquitto_pub + your sub,mosquitto_sub + your pub。