Hono 命令和控制 API 未收到消息
Hono command and control API not receiving messages
我正在尝试订阅控制主题。当我订阅时,mqtt 适配器显示以下日志记录:
14:28:47.933 [vert.x-eventloop-thread-0] DEBUG o.e.h.a.m.i.VertxBasedMqttProtocolAdapter - created subscription [tenant: tenant_aloxy, device: device-aloxy, filter: control/tenant_aloxy/device-aloxy/req/#, requested QoS: AT_MOST_ONCE, granted QoS: AT_MOST_ONCE]
当我向 control/tenant_aloxy/device-aloxy/req//alp 发布消息时,设备没有收到消息,而且我在 hono mqtt 适配器中没有收到任何错误记录。但是,当我自己使用以下命令订阅主题时:qb message receive control/tenant_aloxy/device-aloxy/req/# -b amqp://user:secret@hostname:5672
,我收到了消息。知道去哪里看吗?
我目前使用的 Hono 版本来自提交 https://github.com/eclipse/hono/commit/78979346212446dc6cf8b8b3255f048e19e81210
更新
我将 Hono 更新到 0.9-M2 版本,但仍然有同样的问题。订阅时的日志记录如下:
12:21:02.407 [vert.x-eventloop-thread-0] INFO o.e.h.s.m.LoggingConnectionEventProducer - Connected - ID: device_interface_client_b24704c9-ed11-41af-a0e0-ba90264a7362, Protocol Adapter: hono-mqtt, Device: device [device-id: device-aloxy, tenant-id: tenant_aloxy], Data: null
12:21:02.515 [vert.x-eventloop-thread-0] DEBUG o.e.h.client.impl.AbstractHonoClient - receiver open [source: control/tenant_aloxy/device-aloxy]
12:21:02.515 [vert.x-eventloop-thread-0] DEBUG o.e.hono.client.CommandConsumer - successfully created command consumer [control/tenant_aloxy/device-aloxy]
12:21:02.517 [vert.x-eventloop-thread-0] DEBUG o.e.h.a.m.i.VertxBasedMqttProtocolAdapter - created subscription [tenant: tenant_aloxy, device: device-aloxy, filter: control/+/+/req/#, requested QoS: AT_MOST_ONCE, granted QoS: AT_MOST_ONCE]
我将消息发布到队列 control/tenant_aloxy/device-aloxy/req//alp
更新 2
我发现了一些奇怪的事情。以下屏幕截图从整体角度显示了指标:
显示有几条消息已发布到队列,但被 Hono MQTT 适配器拒绝。但是,尽管 SPRINT_PROFILE "dev" 已激活,但我没有在控制台中看到这些消息的任何日志记录。
经过身份验证的设备必须使用主题过滤器 control/+/+/req/#
来订阅命令。如果设备未经身份验证,则使用 control/${tenant-id}/{device-id}/req/#
。
如果设备 device-aloxy
已通过身份验证,则订阅主题 control/+/+/req/#
并尝试发送命令。
我认为您发布到错误的地址。另请记住,发送命令的应用程序不是发布到主题(即 MQTT parlais),而是将 AMQP 消息发送到由 [=19= 标识的远程节点]地址.
也就是说,您的应用程序应该通过目标地址为 control/tenant_aloxy/device-aloxy
的发件人 link 发送命令(请参阅 https://www.eclipse.org/hono/api/command-and-control-api/#send-a-one-way-command 的先决条件)。注意目标地址与设备订阅的MQTT主题名称不同。
如果您希望收到回复,那么您还需要打开一个接收方 link 并将接收方 link 的源地址作为 回复的值命令消息中的 属性(如 https://www.eclipse.org/hono/api/command-and-control-api/#send-a-request-response-command 中所述)。
我正在尝试订阅控制主题。当我订阅时,mqtt 适配器显示以下日志记录:
14:28:47.933 [vert.x-eventloop-thread-0] DEBUG o.e.h.a.m.i.VertxBasedMqttProtocolAdapter - created subscription [tenant: tenant_aloxy, device: device-aloxy, filter: control/tenant_aloxy/device-aloxy/req/#, requested QoS: AT_MOST_ONCE, granted QoS: AT_MOST_ONCE]
当我向 control/tenant_aloxy/device-aloxy/req//alp 发布消息时,设备没有收到消息,而且我在 hono mqtt 适配器中没有收到任何错误记录。但是,当我自己使用以下命令订阅主题时:qb message receive control/tenant_aloxy/device-aloxy/req/# -b amqp://user:secret@hostname:5672
,我收到了消息。知道去哪里看吗?
我目前使用的 Hono 版本来自提交 https://github.com/eclipse/hono/commit/78979346212446dc6cf8b8b3255f048e19e81210
更新
我将 Hono 更新到 0.9-M2 版本,但仍然有同样的问题。订阅时的日志记录如下:
12:21:02.407 [vert.x-eventloop-thread-0] INFO o.e.h.s.m.LoggingConnectionEventProducer - Connected - ID: device_interface_client_b24704c9-ed11-41af-a0e0-ba90264a7362, Protocol Adapter: hono-mqtt, Device: device [device-id: device-aloxy, tenant-id: tenant_aloxy], Data: null
12:21:02.515 [vert.x-eventloop-thread-0] DEBUG o.e.h.client.impl.AbstractHonoClient - receiver open [source: control/tenant_aloxy/device-aloxy]
12:21:02.515 [vert.x-eventloop-thread-0] DEBUG o.e.hono.client.CommandConsumer - successfully created command consumer [control/tenant_aloxy/device-aloxy]
12:21:02.517 [vert.x-eventloop-thread-0] DEBUG o.e.h.a.m.i.VertxBasedMqttProtocolAdapter - created subscription [tenant: tenant_aloxy, device: device-aloxy, filter: control/+/+/req/#, requested QoS: AT_MOST_ONCE, granted QoS: AT_MOST_ONCE]
我将消息发布到队列 control/tenant_aloxy/device-aloxy/req//alp
更新 2
我发现了一些奇怪的事情。以下屏幕截图从整体角度显示了指标:
显示有几条消息已发布到队列,但被 Hono MQTT 适配器拒绝。但是,尽管 SPRINT_PROFILE "dev" 已激活,但我没有在控制台中看到这些消息的任何日志记录。
经过身份验证的设备必须使用主题过滤器 control/+/+/req/#
来订阅命令。如果设备未经身份验证,则使用 control/${tenant-id}/{device-id}/req/#
。
如果设备 device-aloxy
已通过身份验证,则订阅主题 control/+/+/req/#
并尝试发送命令。
我认为您发布到错误的地址。另请记住,发送命令的应用程序不是发布到主题(即 MQTT parlais),而是将 AMQP 消息发送到由 [=19= 标识的远程节点]地址.
也就是说,您的应用程序应该通过目标地址为 control/tenant_aloxy/device-aloxy
的发件人 link 发送命令(请参阅 https://www.eclipse.org/hono/api/command-and-control-api/#send-a-one-way-command 的先决条件)。注意目标地址与设备订阅的MQTT主题名称不同。
如果您希望收到回复,那么您还需要打开一个接收方 link 并将接收方 link 的源地址作为 回复的值命令消息中的 属性(如 https://www.eclipse.org/hono/api/command-and-control-api/#send-a-request-response-command 中所述)。