

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

# 在客户端设备之间中继 MQTT 消息和 Amazon IoT Core
<a name="relay-client-device-messages"></a>

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

要在客户端设备和之间中继 MQTT 消息 Amazon IoT Core，请将 [MQTT 网桥组件](mqtt-bridge-component.md)配置为执行以下操作：
+ 将来自客户端设备的消息中继到 Amazon IoT Core。
+  Amazon IoT Core 将来自客户端设备的消息中继到客户端设备。

**注意**  <a name="mqtt-bridge-component-iotcore-qos-1-note"></a>
即使客户端设备使用 QoS 0 发布和订阅 Amazon IoT Core本地 MQTT 代理，MQTT 桥也使用 QoS 1 来发布和订阅。因此，当您将来自本地 MQTT 代理上的客户端设备的 MQTT 消息中继到时，您可能会观察到额外的延迟。 Amazon IoT Core有关核心设备上 MQTT 配置的更多信息，请参阅[配置 MQTT 超时和缓存设置](configure-greengrass-core-v2.md#configure-mqtt)。

**Topics**
+ [配置并部署 MQTT 网桥组件](#deploy-mqtt-bridge-iot-core)
+ [中继 MQTT 消息](#relay-mqtt-messages)

## 配置并部署 MQTT 网桥组件
<a name="deploy-mqtt-bridge-iot-core"></a>

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

<a name="create-mqtt-bridge-deployment-info"></a>要将 MQTT 网桥组件部署到一台或一组核心设备，请[创建包含 `aws.greengrass.clientdevices.mqtt.Bridge` 组件的部署](create-deployments.md)。在部署的 MQTT 网桥组件配置中指定主题映射 `mqttTopicMapping`。

以下示例定义了一个部署，该部署将 MQTT 网桥组件配置为将与 `clients/+/hello/world` 主题筛选条件匹配的主题消息从客户端设备中继到 Amazon IoT Core。`merge` 配置更新需要序列化 JSON 对象。有关更多信息，请参阅 [更新组件配置](update-component-configurations.md)。

------
#### [ 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 消息
<a name="relay-mqtt-messages"></a>

要在客户端设备和之间中继 MQTT 消息 Amazon IoT Core，[请配置和部署 MQTT Bridge 组件](#deploy-mqtt-bridge-iot-core)并指定要中继的主题。

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

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

**Example 示例：将有关某个主题的消息从客户端设备中继 Amazon IoT Core 出来**  
以下 MQTT 网桥组件配置指定将与 `clients/+/hello/world/event/response` 主题筛选条件匹配的主题消息从 Amazon IoT Core 中继到客户端设备。  

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