API командования и управления 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]
Я публикую свои сообщения в очереди управления /tenant_aloxy/device-aloxy/req//alp
ОБНОВЛЕНИЕ 2
Я обнаружил что-то странное. На следующем скриншоте показаны метрики с большой точки зрения:
Это показывает, что несколько сообщений были опубликованы в очереди, но были отклонены адаптером Hono MQTT. Тем не менее, я не вижу никаких журналов для этих сообщений в консоли, хотя SPRINT_PROFILE "dev" активирован.
2 ответа
Я думаю, что вы публикуете не по адресу. Также имейте в виду, что приложения, отправляющие команды, не публикуют тему (это MQTT parlais), а вместо этого отправляют сообщение AMQP на удаленный узел, который идентифицируется по адресу.
Тем не менее, ваше приложение должно отправить команду по ссылке отправителя с целевым адресом control/tenant_aloxy/device-aloxy
(см. Предварительные условия https://www.eclipse.org/hono/api/command-and-control-api/). Обратите внимание, что целевой адрес отличается от имени темы MQTT, на которое подписывается устройство.
Если вы ожидаете ответа, вам также необходимо открыть ссылку на получателя и включить исходный адрес ссылки получателя в качестве значения свойства reply-to в командном сообщении (как описано в https://www.eclipse.org/hono/api/command-and-control-api/).
Устройство, прошедшее проверку подлинности, должно использовать фильтр тем control/+/+/req/#
подписаться на команды. Если устройство не аутентифицировано, то control/${tenant-id}/{device-id}/req/#
использоваться.
Если устройство device-aloxy
авторизован, тогда подпишитесь на тему control/+/+/req/#
и попробуйте отправить команды.