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

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

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

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

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

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

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

注意

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

配置并部署 MQTT 网桥组件

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

要将 MQTT 网桥组件部署到一台或一组核心设备,请创建包含 aws.greengrass.clientdevices.mqtt.Bridge 组件的部署。在部署的 MQTT 网桥组件配置中指定主题映射 mqttTopicMapping

以下示例定义了一个部署,该部署将 MQTT 网桥组件配置为将与 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 消息

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

例 示例:将主题消息从客户端设备中继到 Amazon IoT Core

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

{ "mqttTopicMapping": { "HelloWorldEvent": { "topic": "clients/+/hello/world/event", "source": "LocalMqtt", "target": "IotCore" } } }
例 示例:将主题消息从 Amazon IoT Core 中继到客户端设备

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

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