Hono命令和控制API未收到消息

时间:2019-01-25 15:14:36

标签: eclipse-hono

我正在尝试订阅控件主题。我订阅时,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
我发现了一些奇怪的东西。下面的屏幕快照从enmasse角度显示了指标: Enmasse view on connection

它表明一些消息已发布到队列中,但被Hono MQTT适配器拒绝。但是,尽管激活了SPRINT_PROFILE“ dev”,但在控制台中看不到这些消息的任何日志记录。

2 个答案:

答案 0 :(得分:0)

经过身份验证的设备必须使用主题过滤器control/+/+/req/#来订阅命令。如果设备未经身份验证,则将使用control/${tenant-id}/{device-id}/req/#

如果设备device-aloxy已通过身份验证,请订阅主题control/+/+/req/#并尝试发送命令。

答案 1 :(得分:0)

我认为您是发布错误的地址。还请记住,发送命令的应用程序不是发布到主题(即MQTT parlais),而是将AMQP消息发送到由地址。

也就是说,您的应用程序应该通过目标地址为control/tenant_aloxy/device-aloxy的发送方链接发送命令(请参阅https://www.eclipse.org/hono/api/command-and-control-api/#send-a-one-way-command的前提条件)。请注意,目标地址与设备预订的MQTT主题名称不同。

如果期望得到响应,则还需要打开一个接收器链接,并将接收器链接的源地址作为命令消息中 reply-to 属性的值(如{ {3}}。