Адаптер Eclipse Hono MQTT: сопоставление тем MQTT
Как события из произвольных тем mqtt, таких как "base/context/qualifier/subtopic", складываются в структуру тем адаптера Hono MQTT? Вы просто публикуете свое событие в теме: "событие" и используете тело сообщения, чтобы установить контекст из исходной темы?
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 для деталей.Если тема не может быть настроена на устройстве, вы все равно можете реализовать свой собственный адаптер 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