如何解决断开连接后,Apache Camel PAHO MQTT组件不会收到消息
我在这里看到了相同的问题,但不了解如何根据响应来解决此问题。
Camel PAHO routes not receiving offline messages while connecting back
在paho端点上是否可能接收脱机消息,如果可以,怎么办?这需要修改源代码吗?
我已验证我从命令行使用mosquitto_sub接收了脱机消息。
这是我的端点配置:
<from uri="paho:JUNK?brokerUrl=tcp://localhost:1883?cleanSession=false&qos=2&clientId=camel_test" />
更多细节。看来,在断开骆驼客户端的连接时,客户端首先要取消订阅,这阻止了客户端在重新连接时收到脱机消息。
Sep 21 06:33:40 me mosquitto.mosquitto[1290]: 1600684420: camel_test JUNK
Sep 21 06:33:40 me mosquitto.mosquitto[1290]: 1600684420: Sending UNSUBACK to camel_test
Sep 21 06:33:40 me mosquitto.mosquitto[1290]: 1600684420: Received DISCONNECT from camel_test
Sep 21 06:33:40 me mosquitto.mosquitto[1290]: 1600684420: Client camel_test disconnected.
mosquitto_sub命令行客户端不会取消订阅断开连接,因此能够在重新连接时接收脱机消息。
Sep 21 06:33:21 me mosquitto.mosquitto[1290]: 1600684400: Client ns_consumer disconnected.
Sep 21 06:42:23 me mosquitto.mosquitto[1290]: 1600684943: New client connected from ::1 as ns_consumer (p2,c0,k60).
Sep 21 06:42:23 me mosquitto.mosquitto[1290]: 1600684943: Sending CONNACK to ns_consumer (1,0)
Sep 21 06:42:23 me mosquitto.mosquitto[1290]: 1600684943: Sending PUBLISH to ns_consumer (d0,q2,r0,m26,'JUNK',... (189 bytes))
Sep 21 06:42:23 me mosquitto.mosquitto[1290]: 1600684943: Received SUBSCRIBE from ns_consumer
Sep 21 06:42:23 me mosquitto.mosquitto[1290]: 1600684943: ns_consumer 2 JUNK
Sep 21 06:42:23 me mosquitto.mosquitto[1290]: 1600684943: Sending SUBACK to ns_consumer
Sep 21 06:42:23 me mosquitto.mosquitto[1290]: 1600684943: Sending PUBLISH to ns_consumer (d0,r1,m27,... (189 bytes))
Sep 21 06:42:23 me mosquitto.mosquitto[1290]: 1600684943: Received PUBREC from ns_consumer (Mid: 26)
Sep 21 06:42:23 me mosquitto.mosquitto[1290]: 1600684943: Sending PUBREL to ns_consumer (m26)
Sep 21 06:42:23 me mosquitto.mosquitto[1290]: 1600684943: Received PUBREC from ns_consumer (Mid: 27)
Sep 21 06:42:23 me mosquitto.mosquitto[1290]: 1600684943: Sending PUBREL to ns_consumer (m27)
Sep 21 06:42:23 me mosquitto.mosquitto[1290]: 1600684943: Received PUBCOMP from ns_consumer (Mid: 26,RC:0)
Sep 21 06:42:23 me mosquitto.mosquitto[1290]: 1600684943: Received PUBCOMP from ns_consumer (Mid: 27,RC:0)
解决方法
问题在端点配置中的语法不正确,因此cleanSession从未通过参数设置并且默认为true。
<from uri="paho:JUNK?brokerUrl=tcp://localhost:1883?cleanSession=false&qos=2&clientId=camel_test" />
应该是
<from uri="paho:JUNK?brokerUrl=tcp://localhost:1883&cleanSession=false&qos=2&clientId=camel_test" />
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。