Eclipse Hono MQTT 适配器:MQTT 主题映射
Eclipse Hono MQTT adapter: MQTT topic mapping
来自任意 mqtt 主题(例如 "base/context/qualifier/subtopic")的事件如何折叠到 Hono MQTT 适配器主题结构中?您是否只是将事件发布到主题:"event" 并使用消息正文设置原始主题的上下文?
有几个选项可用。
如果 device/client 将发布到的主题是可配置的,那么您有以下两个选项:
1.1。发布到主题 event
(或仅 e
以节省每条消息的几个字节)并在消息负载中包含所有相关的上下文信息,以便消费者可以从负载中找出消息的目的。
1.2。发布到一个类似于 event/${tenant-id}/${device-id}/${custom-path}
的主题,其中 ${tenant-id}
是设备所属租户的标识符,${device-id}
是设备的标识符。 ${custom-path}
可以是您选择的任意路径段。 MQTT 适配器将在 AMQP 消息中转发 MQTT 消息的有效负载,该消息的 地址 属性 设置为 event/${tenant-id}
并且将包含应用程序-属性 称为 orig_address,它将包含消息最初发布到的完整主题名称。然后,消费者可以使用此信息来获取上下文信息,例如消息目的。详见MQTT adapter user guide
如果主题无法在设备上配置,那么您仍然可以实现自己的自定义 MQTT 适配器。这听起来比实际更难,因为所需的大部分功能已经在 org.eclipse.hono.adapter.mqtt.AbstractVertxBasedMqttProtocolAdapter
基础 class 中可用,您可以从中派生并仅实现主题映射逻辑。 Kura 适配器就是以这种方式实现的,并且只包含几行代码。看看 org.eclipse.hono.adapter.kura.KuraProtocolAdapter
.
尝试使用一些 MQTT 主题选项,例如
- telemetry/my-tenant/org.acme:my-device-1/customPath
- telemetry/my-tenant/org.acme:my-device-1/custom/path
- 遥测///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
来自任意 mqtt 主题(例如 "base/context/qualifier/subtopic")的事件如何折叠到 Hono MQTT 适配器主题结构中?您是否只是将事件发布到主题:"event" 并使用消息正文设置原始主题的上下文?
有几个选项可用。
如果 device/client 将发布到的主题是可配置的,那么您有以下两个选项:
1.1。发布到主题
event
(或仅e
以节省每条消息的几个字节)并在消息负载中包含所有相关的上下文信息,以便消费者可以从负载中找出消息的目的。1.2。发布到一个类似于
event/${tenant-id}/${device-id}/${custom-path}
的主题,其中${tenant-id}
是设备所属租户的标识符,${device-id}
是设备的标识符。${custom-path}
可以是您选择的任意路径段。 MQTT 适配器将在 AMQP 消息中转发 MQTT 消息的有效负载,该消息的 地址 属性 设置为event/${tenant-id}
并且将包含应用程序-属性 称为 orig_address,它将包含消息最初发布到的完整主题名称。然后,消费者可以使用此信息来获取上下文信息,例如消息目的。详见MQTT adapter user guide如果主题无法在设备上配置,那么您仍然可以实现自己的自定义 MQTT 适配器。这听起来比实际更难,因为所需的大部分功能已经在
org.eclipse.hono.adapter.mqtt.AbstractVertxBasedMqttProtocolAdapter
基础 class 中可用,您可以从中派生并仅实现主题映射逻辑。 Kura 适配器就是以这种方式实现的,并且只包含几行代码。看看org.eclipse.hono.adapter.kura.KuraProtocolAdapter
.
尝试使用一些 MQTT 主题选项,例如
- telemetry/my-tenant/org.acme:my-device-1/customPath
- telemetry/my-tenant/org.acme:my-device-1/custom/path
- 遥测///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