在客户端设备和之间中继 MQTT 消息Amazon IoT Core - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在客户端设备和之间中继 MQTT 消息Amazon IoT Core

您可以在客户端设备之间中继 MQTT 消息和其他数据Amazon IoT Core. 客户端设备连接到在核心设备上运行的MQTT broker组件。默认情况下,核心设备不会在客户端设备之间中继 MQTT 消息或数据Amazon IoT Core. 默认情况下,客户端设备只能通过 MQTT 相互通信。

在客户端设备和之间中继 MQTT 消息Amazon IoT Core,配置MQTT 桥组件执行以下操作:

  • 将消息从客户端设备中继到Amazon IoT Core.

  • 中继来自的消息Amazon IoT Core到客户端设备。

注意

MQTT 网桥使用 QoS 1 发布和订阅Amazon IoT Core,即使客户端设备使用 QoS 0 发布和订阅本地 MQTT 代理。因此,当您将 MQTT 消息从本地 MQTT 代理上的客户端设备中继到Amazon IoT Core. 有关在核心设备上配置 MQTT 的更多信息,请参阅配置 MQTT 超时和缓存设置.

配置和部署 MQTT 桥组件

MQTT 桥组件使用一个主题映射列表,每个主题映射都指定消息源和消息目标。在客户端设备和之间中继消息Amazon IoT Core,部署 MQTT 桥组件,并在组件配置中指定每个源和目标主题。

要将 MQTT 桥组件部署到核心设备或核心设备组,创建部署这包括aws.greengrass.clientdevices.mqtt.Bridge组件。指定主题映射,mqttTopicMapping,位于部署的 MQTT 桥组件配置中。

以下示例定义了一个部署,该部署将 MQTT bridge 组件配置为中继与之匹配的主题的消息clients/+/hello/world主题筛选器从客户端设备到Amazon IoT Core. 这些区域有:merge配置更新需要序列化的 JSON 对象。有关更多信息,请参阅 更新组件配置

Console
{ "mqttTopicMapping": { "HelloWorldIotCore": { "topic": "clients/+/hello/world", "source": "LocalMqtt", "target": "IotCore" } } }
Amazon CLI
{ "components": { "aws.greengrass.clientdevices.mqtt.Bridge": { "version": "2.0.0", "configurationUpdate": { "merge": "{\"mqttTopicMapping\":{\"HelloWorldIotCore\":{\"topic"\:\"clients/+/hello/world\",\"source\":\"LocalMqtt\",\"target\":\"IotCore\"}}}" } } ... } }

中继 MQTT 消息

在客户端设备和之间中继 MQTT 消息Amazon IoT Core、配置和部署 MQTT 桥组件并指定要中继的主题。

例如:将有关某个主题的消息从客户端设备中继到Amazon IoT Core

以下 MQTT bridge 组件配置指定了与之匹配的主题的中继消息clients/+/hello/world/event主题筛选器从客户端设备到Amazon IoT Core.

{ "mqttTopicMapping": { "HelloWorldEvent": { "topic": "clients/+/hello/world/event", "source": "LocalMqtt", "target": "IotCore" } } }

例如:转发来自的话题的消息Amazon IoT Core到客户端设备

以下 MQTT bridge 组件配置指定了与之匹配的主题的中继消息clients/+/hello/world/event/response主题筛选来自的条件Amazon IoT Core到客户端设备。

{ "mqttTopicMapping": { "HelloWorldEventConfirmation": { "topic": "clients/+/hello/world/event/response", "source": "IotCore", "target": "LocalMqtt" } } }