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

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

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

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

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

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

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

注意

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

配置和部署 MQTT 网桥组件

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

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

以下示例定义了一个部署,该部署将 MQTT 桥接组件配置为将与主题过滤器匹配的主题上的消息从客户端设备中继到。clients/+/hello/world AWS IoT Coremerge配置更新需要序列化的 JSON 对象。有关更多信息,请参阅 更新组件配置

Console
{ "mqttTopicMapping": { "HelloWorldIotCore": { "topic": "clients/+/hello/world", "source": "LocalMqtt", "target": "IotCore" } } }
AWS 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 消息AWS IoT Core,请配置和部署 MQTT Bridge 组件并指定要中继的主题。

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

以下 MQTT bridge 组件配置指定将与主题筛选条件匹配的clients/+/hello/world/event主题上的消息从客户端设备转发到。AWS IoT Core

{ "mqttTopicMapping": { "HelloWorldEvent": { "topic": "clients/+/hello/world/event", "source": "LocalMqtt", "target": "IotCore" } } }
例 示例:将有关某个主题的消息从客户端设备中继AWS IoT Core出来

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

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