1

来自任意 mqtt 主题(例如“base/context/qualifier/subtopic”)的事件如何折叠到 Hono MQTT 适配器主题结构中?您是否只是将事件发布到主题:“事件”并使用消息正文设置原始主题的上下文?

4

2 回答 2

3

有几个选项可用。

  1. 如果设备/客户端将发布到的主题是可配置的,那么您有以下两个选项:

    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 适配器用户指南

  2. 如果无法在设备上配置主题,那么您仍然可以实现自己的自定义 MQTT 适配器。这听起来比实际上更难,因为所需的大部分功能已经在org.eclipse.hono.adapter.mqtt.AbstractVertxBasedMqttProtocolAdapter基类中可用,您可以从中派生并实现主题映射逻辑。Kura 适配器正是以这种方式实现的,并且只包含几行代码。看看吧org.eclipse.hono.adapter.kura.KuraProtocolAdapter

于 2019-01-17T06:59:41.937 回答
0

尝试使用一些 MQTT 主题选项,例如

  • 遥测/我的租户/org.acme:my-device-1/customPath
  • 遥测/我的租户/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

于 2020-12-01T11:29:44.483 回答