apache-camel - Apache Camel PAHO MQTT 组件断开连接后收不到消息
问题描述
我在这里看到了同样的问题,但不明白如何根据响应解决此问题。
是否可以在 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, q2, r1, m27, 'JUNK', ... (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" />
推荐阅读
- python - 无法使用python将数据“附加”到excel中的现有工作表
- java - 如何将 XWPFDocument 转换为 PDF
- c# - WPF:ManipulationStarting 未触发,但 MouseWheel 工作正常
- javascript - 如何从 dragover 事件中设置文本区域中的插入符号?
- java - 升级 Spring Security PasswordEncoder
- java - 使用消息属性从 Java 中的队列接收消息时出现 AWS SQS 错误
- json - 从 BigQuery 列中提取 Json 值
- android - 有没有办法根据我的设备尺寸设置 sizebox 的尺寸
- php - 获取mysql中平均列的平均值
- python - SageMaker 在本地模式下使用调试器