【问题标题】:Eclipse Hono MQTT adapter: MQTT topic mappingEclipse Hono MQTT 适配器:MQTT 主题映射
【发布时间】:2019-01-15 19:37:38
【问题描述】:

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

【问题讨论】:

    标签: eclipse-hono


    【解决方案1】:

    有多种选择。

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

      1.1。发布到主题 event(或者只是 e 以在每条消息中节省几个字节)并在消息负载中包含所有相关的上下文信息,以便消费者可以从负载中找出消息的用途。

      1.2。发布到类似于event/${tenant-id}/${device-id}/${custom-path} 的主题,其中${tenant-id} 是设备所属租户的标识符,${device-id} 是设备的标识符。 ${custom-path} 可以是您选择的任意路径段。 MQTT 适配器将在 AMQP 消息中转发 MQTT 消息的有效负载,该消息的 address 属性设置为 event/${tenant-id},并且将包含一个名为 orig_address 的应用程序属性,该属性将包含消息最初发布到的完整主题名称。然后,消费者可以使用此信息来获取上下文信息,例如消息用途。详情请参考MQTT adapter user guide

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

    【讨论】:

    • 太棒了!这很完美!正在评估使用 Hono 作为我们物联网解决方案连接的可行选项。这很有帮助!
    【解决方案2】:

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

    • telemetry/my-tenant/org.acme:my-device-1/customPath
    • telemetry/my-tenant/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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-23
      • 1970-01-01
      • 2018-08-31
      • 1970-01-01
      • 1970-01-01
      • 2014-12-26
      • 2016-06-10
      • 1970-01-01
      相关资源
      最近更新 更多