Адаптер Eclipse Hono MQTT: отображение тем MQTT

Как события из произвольных тем mqtt, таких как «основа / контекст / квалификатор / подтема», складываются в структуру тем адаптера Hono MQTT? Вы просто публикуете свое событие в теме: «событие» и используете тело сообщения для установки контекста из исходной темы?


person deemunk    schedule 15.01.2019    source источник


Ответы (2)


Доступно несколько вариантов.

  1. Если тема, в которой будет публиковаться устройство / клиент, настраивается, у вас есть два варианта:

    1.1. Опубликуйте в теме event (или просто e, чтобы сэкономить несколько байтов на сообщение) и включите всю соответствующую контекстную информацию в полезную нагрузку сообщения, чтобы потребитель мог выяснить цель сообщения из полезной нагрузки.

    1.2. Публикуйте в теме, которая выглядит как event/${tenant-id}/${device-id}/${custom-path}, где ${tenant-id} - это идентификатор клиента, которому принадлежит устройство, а ${device-id} - идентификатор устройства. ${custom-path} может быть любым произвольным сегментом пути по вашему выбору. Адаптер MQTT будет пересылать полезные данные сообщения MQTT в сообщении AMQP, для которого свойство address установлено на event/${tenant-id} и которое будет содержать свойство приложения с именем orig_address, которое будет содержать полный название темы, в которой изначально было опубликовано сообщение. Затем потребитель может использовать эту информацию для получения контекстной информации, такой как цель сообщения. См. руководство пользователя адаптера MQTT для подробностей.

  2. Если тема не может быть настроена на устройстве, вы все равно можете реализовать свой собственный адаптер MQTT. Это звучит сложнее, чем есть на самом деле, потому что большая часть требуемых функций уже доступна в базовом классе org.eclipse.hono.adapter.mqtt.AbstractVertxBasedMqttProtocolAdapter, от которого вы можете унаследовать и просто реализовать логику сопоставления тем. Адаптер Kura реализован именно так и состоит всего из нескольких строк кода. Просто взгляните на org.eclipse.hono.adapter.kura.KuraProtocolAdapter.

person Kai Hudalla    schedule 17.01.2019
comment
Большой! Это отлично работает! Оценивал использование Hono как жизнеспособный вариант подключения для нашего решения IoT. Это очень помогает! - person deemunk; 17.01.2019

Попытка использовать несколько вариантов темы MQTT, например

  • телеметрия / мой-тенант / org.acme: мое-устройство-1 / customPath
  • телеметрия / my-tenant / org.acme: my-device-1 / custom / path
  • телеметрия /// настраиваемый / путь

но для всех случаев свойства приложения AMQP установлены на orig_address -> t дополнительно могут видеть messageAnnotations "resource" -> telemetry/my-tenant/org.acme:my-device-1, но оно еще не содержит полной темы

Есть ли возможность получить полный путь к теме MQTT без реализации настраиваемого адаптера MQTT? используя eclipse/hono-adapter-mqtt-vertx:1.4.0

person Andrew    schedule 01.12.2020