Адаптер Eclipse Hono MQTT: сопоставление тем MQTT

Как события из произвольных тем mqtt, таких как "base/context/qualifier/subtopic", складываются в структуру тем адаптера Hono MQTT? Вы просто публикуете свое событие в теме: "событие" и используете тело сообщения, чтобы установить контекст из исходной темы?

1 ответ

Решение

Есть несколько доступных вариантов.

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

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

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

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

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

  • телеметрия / мой-тенант /org.acme: мое-устройство-1/customPath
  • телеметрия / мой-тенант /org.acme: мое-устройство-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

Другие вопросы по тегам