0

我已经设置了一个 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);

我正在查看经纪人的日志,它如下所示。成功后,我的协议版本将打印到日志中。

成功时

失败的

4

1 回答 1

1

我建议尝试使用不同的工具来复制问题。在代理运行的情况下,运行一个订阅客户端:

mosquitto_sub -h <hostname> -t in/# -v

然后分别做发布:

mosquitto_pub -h <hostname> -t in/device -m message

这应该会很快返回,并且您的 mosquitto_sub 实例应该 print in/device message。重复发布,您应该会看到相同的内容。

如果您没有看到重复的消息,则代理有问题。如果会尝试使用例如 mosquitto 作为代理并重复您的代码。

如果您确实使用 mosquitto_pub/sub 看到重复的消息,那么您的代码在某种程度上有问题。您可以继续尝试不同的排列,直到您更好地了解问题所在 - 即使用 mosquitto_pub+your sub,mosquitto_sub+your pub。

于 2015-05-20T08:01:18.163 回答