Адаптер Eclipse Hono MQTT: сопоставление тем MQTT - PullRequest
0 голосов
/ 15 января 2019

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

1 Ответ

0 голосов
/ 17 января 2019

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

  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.

...