消息路由即通过路由规则动态规划消息的传输路径,使消息按照过滤条件,从消息源路由到目标节点。

前提条件

消息路由需在边缘实例中设置。您需在设置消息路由之前,先创建边缘实例,并为该实例分配网关、驱动、设备和函数。

操作步骤

  1. 登录物联网平台控制台
  2. 在左侧导航栏中,单击边缘计算 > 边缘实例
  3. 找到您要设置消息路由的实例,单击操作栏中的查看
  4. 实例详情页面,单击消息路由 > 添加路由

  5. 设置消息路由路径。
    参数名称 参数说明
    消息来源

    选择消息的发送者。

    • 设备:表示已分配至该实例的设备发送消息。
      • 全部产品:该实例下的全部设备都是消息来源。
      • 全部设备:具体产品下分配至该实例的全部设备都是消息来源。
      • 您也可以指定具体产品和设备名称,表示该指定设备是消息来源。
    • 函数计算:表示消息由函数计算发出,需选择已分配给该边缘实例的函数名称。
    • IoT Hub:表示消息由云端发出。
      此时,需在网关产品下自定义如下Topic类(操作方法请见自定义Topic),并重启网关。
      • Topic类:/YourProductKey/YourDeviceName/user/get,其中,将YourProductKey和YourDeviceName替换为网关的设备证书信息。
      • 设备操作权限:订阅
    • 流数据分析:表示消息由流数据分析发出,需选择已分配给该实例的流数据分析任务名称。
    消息主题过滤

    设置消息过滤条件。只有满足此条件的消息才能到达消息目标。设置方法如下:

    • 当消息来源为设备时:可选择为设备的属性全部
    • 当消息来源为函数计算、IoT Hub或流数据分析时:需自定义(定义方法请参见什么是TopicTopic 列表)。可使用通配符+#
    消息目标

    消息的接收者。

    • IoT Hub:表示消息需要上传到云端。则需要设置服务级别,请参见服务级别参数说明。
    • 函数计算:需要指定函数的名称。
    • 流数据分析:仅消息来源为设备时可选,需要指定流数据分析的任务名称。
    服务级别

    当消息目标为IoT Hub时,需要设置服务级别来确定您的设备数据是否支持断网续传。

    • 0:表示需要上传到云端的消息在网络异常状态下会丢失。
    • 1:表示在网络异常时,需要上传到云端的消息将被保存在本地存储区,在网络恢复后Link IoT Edge将存储区中的历史数据续传到云端。

      当消息路由路径是函数至IoT Hub,并选择服务级别为1时,需在网关产品下,自定义如下Topic类(操作方法请见自定义Topic),并重启网关。

      • Topic类:/YourProductKey/YourDeviceName/user/restore,其中,将YourProductKey和YourDeviceName替换为网关的设备证书信息。
      • 设备操作权限:订阅
      断网续传的历史数据会通过此Topic上传至云端。您可以通过云端规则引擎,分类处理网络恢复后续传的历史数据。历史数据格式如下:
      { "topic":"yyyyy", "payload":.... #string型或object型 }

      其中topic为原上云数据的Topic,payload为原上云的数据内容。

    说明 服务级别选择1时,在网络异常状态下CPU和磁盘IO占用量会增加,当数据量很大时可能会耗尽系统磁盘和CPU资源。不同的系统性能其承受的负载上限有所不同,请您根据自身需求选择是否支持断网续传。
    说明
    • 有相同消息来源消息目标、不同消息主题过滤的路由,其消息最多转发一次。即路由执行后,如果有一条路由匹配成功,则剩余的路由不再匹配执行。
    • 有不同消息来源消息目标的所有路由,会依次匹配执行。

      此时可能会有逻辑上的重复执行转发消息的情况。 例如,一条路由消息来源是全部设备,消息目标是IoT Hub,另一条路由消息来源是设备A,消息目标也是IoT Hub;当设备A发送消息时,上述两条路由都会匹配执行,即设备A的数据向IoT Hub发送两次。