

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

# 选择 MQTT 代理
<a name="choose-local-mqtt-broker"></a>

AWS IoT Greengrass 提供选项，供您选择要在核心设备上运行的本地 MQTT 代理。客户端设备连接到在核心设备上运行的 MQTT 代理，因此请选择与您要连接的客户端设备兼容的 MQTT 代理。

**注意**  <a name="note-deploy-one-mqtt-broker"></a>
我们建议您仅部署一个 MQTT 代理组件。[MQTT 网桥](mqtt-bridge-component.md)和 [IP 检测器](ip-detector-component.md)组件每次只能使用一个 MQTT 代理组件。如果您部署多个 MQTT 代理组件，您必须将这些组件配置为使用不同的端口。

您可从以下 MQTT 代理中进行选择：
+ **[MQTT 3.1.1 代理（Moquette）](mqtt-broker-moquette-component.md)**– `aws.greengrass.clientdevices.mqtt.Moquette`

  对于符合 MQTT 3.1.1 标准的轻量级 MQTT 代理，请选择此选项。AWS IoT Core MQTT 代理和 AWS IoT Device SDK 也符合 MQTT 3.1.1 标准，因此您可以使用这些功能来创建可跨您的设备和 AWS 云 使用 MQTT 3.1.1 的应用程序。
+ **[MQTT 5 代理（EMQX）](mqtt-broker-emqx-component.md)**– `aws.greengrass.clientdevices.mqtt.EMQX`

  选择此选项可在核心设备与客户端设备通信时使用 MQTT 5 功能。该组件使用的资源比 Moquette MQTT 3.1.1 代理要多，并且在 Linux 核心设备上，它需要 Docker。

  MQTT 5 与 MQTT 3.1.1 向后兼容，因此您可以将使用 MQTT 3.1.1 的客户端设备连接到该代理。如果您运行 Moquette MQTT 3.1.1 代理，您可以将其替换为 EMQX MQTT 5 代理，并且客户端设备可以继续照常连接和运行。

  <a name="note-local-mqtt-broker-mqtt-5-features"></a>
+ **实施自定义代理**

  选择此选项可创建自定义本地代理组件以与客户端设备通信。您可以创建使用 MQTT 之外的协议的自定义本地代理。AWS IoT Greengrass 提供组件 SDK，用于对客户端设备进行身份验证和授权。有关更多信息，请参阅[使用 AWS IoT Device SDK 与 Greengrass 原子核、其他组件进行通信，以及 AWS IoT Core与 Greengrass 核、其他组件进行通信 AWS IoT Core](interprocess-communication.md)和[对客户端设备进行身份验证和授权](ipc-client-device-auth.md)。