

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

# MQTT 3.1.1 代理（Moquette）
<a name="mqtt-broker-moquette-component"></a>

Moquette MQTT 代理组件（`aws.greengrass.clientdevices.mqtt.Moquette`）处理客户端设备与 Greengrass 核心设备之间的 MQTT 消息。此组件提供 [Moquette MQTT 代理](https://github.com/moquette-io/moquette)的修改版本。部署此 MQTT 代理来运行轻量级 MQTT 代理。有关如何选择 MQTT 代理的更多信息，请参阅[选择 MQTT 代理](choose-local-mqtt-broker.md)。

此代理实施 MQTT 3.1.1 协议。此代理包括对 QoS 0、QoS 1、QoS 2 保留消息、最后遗嘱消息和持久会话的支持。

**注意**  <a name="client-device-component-context"></a>
客户端设备是本地 IoT 设备，连接到 Greengrass 核心设备以发送 MQTT 消息和数据进行处理。有关更多信息，请参阅 [与本地 IoT 设备交互](interact-with-local-iot-devices.md)。

**Topics**
+ [版本](#mqtt-broker-moquette-component-versions)
+ [Type](#mqtt-broker-moquette-component-type)
+ [操作系统](#mqtt-broker-moquette-component-os-support)
+ [要求](#mqtt-broker-moquette-component-requirements)
+ [依赖项](#mqtt-broker-moquette-component-dependencies)
+ [配置](#mqtt-broker-moquette-component-configuration)
+ [本地日志文件](#mqtt-broker-moquette-component-log-file)
+ [更改日志](#mqtt-broker-moquette-component-changelog)

## 版本
<a name="mqtt-broker-moquette-component-versions"></a>

此组件具有以下版本：
+ 2.3.x
+ 2.2.x
+ 2.1.x
+ 2.0.x

## Type
<a name="mqtt-broker-moquette-component-type"></a>

<a name="public-component-type-plugin-para1"></a>此组件是一个插件组件 (`aws.greengrass.plugin`)。[Greengrass Nucleus](greengrass-nucleus-component.md) 在与该 Nucleus 相同的 Java 虚拟机（JVM）中运行该组件。当您在核心设备上更改此组件的版本时，Nucleus 会重新启动。

<a name="public-component-type-plugin-para2"></a>此组件使用与 Greengrass Nucleus 相同的日志文件。有关更多信息，请参阅 [监控 AWS IoT Greengrass 日志](monitor-logs.md)。

<a name="public-component-type-more-information"></a>有关更多信息，请参阅 [组件类型](develop-greengrass-components.md#component-types)。

## 操作系统
<a name="mqtt-broker-moquette-component-os-support"></a>

此组件可以安装在运行以下操作系统的核心设备上：
+ Linux
+ Windows

## 要求
<a name="mqtt-broker-moquette-component-requirements"></a>

此组件具有以下要求：
+ 核心设备必须能够接受 MQTT 代理运行端口的连接。默认情况下，此组件在端口 8883 运行 MQTT 代理。配置此组件时，您可以指定其他端口。

  <a name="mqtt-broker-configuration-mqtt-bridge-requirement"></a>如果您指定其它端口，并且使用 [MQTT 网桥组件](mqtt-bridge-component.md)将 MQTT 消息中继到其它代理，您必须使用 MQTT 网桥 v2.1.0 或更高版本。将其配置为使用 MQTT 代理运行的端口。

  <a name="mqtt-broker-configuration-ip-detector-requirement"></a>如果您指定其它端口，并使用 [IP 检测器组件](ip-detector-component.md)管理 MQTT 代理端点，则必须使用 IP 检测器 v2.1.0 或更高版本。将其配置为报告 MQTT 代理运行的端口。
+ 支持 Moquette MQTT 代理组件在 VPC 中运行。

## 依赖项
<a name="mqtt-broker-moquette-component-dependencies"></a>

部署组件时， AWS IoT Greengrass 还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖关系的要求，才能成功部署组件。本部分列出了此组件的[已发布版本](#mqtt-broker-moquette-component-changelog)的依赖关系，以及定义每个依赖关系的组件版本的语义版本约束。您还可以在 [AWS IoT Greengrass 控制台](https://console.aws.amazon.com//greengrass)中查看每个组件版本的依赖关系。在组件详细信息页面上，查找**依赖关系**列表。

------
#### [ 2.3.7 ]

下表列出了此组件的版本 2.3.7 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.2.0 <2.6.0 | 硬性 | 

------
#### [ 2.3.2 – 2.3.6 ]

下表列出了此组件版本 2.3.2 到 2.3.6 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.2.0 <2.5.0 | 硬性 | 

------
#### [ 2.3.0 and 2.3.1 ]

下表列出了此组件版本 2.3.0 和 2.3.1 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.2.0 <2.4.0 | 硬性 | 

------
#### [ 2.2.0 ]

下表列出了此组件版本 2.2.0 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.2.0 <2.3.0 | 硬性 | 

------
#### [ 2.1.0 ]

下表列出了此组件版本 2.1.0 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.0.0 <2.2.0 | 硬性 | 

------
#### [ 2.0.0 - 2.0.2 ]

下表列出了此组件版本 2.0.0 到 2.0.2 的依赖关系。


| 依赖关系 | 兼容版本 | 依赖关系类型 | 
| --- | --- | --- | 
| [客户端设备身份验证](client-device-auth-component.md) | >=2.0.0 <2.1.0 | 硬性 | 

------

有关组件依赖关系的更多信息，请参阅[组件配方参考](component-recipe-reference.md#recipe-reference-component-dependencies)。

## 配置
<a name="mqtt-broker-moquette-component-configuration"></a>

此组件提供您可以在部署组件时自定义的以下配置参数。

`moquette`  
（可选）要使用的 [Moquette MQTT 代理](https://github.com/moquette-io/moquette)配置。您可以在此组件中配置 Moqeutte 配置选项的子集。有关更多信息，请参阅 [Moquette 配置文件](https://github.com/moquette-io/moquette/blob/main/distribution/src/main/resources/moquette.conf)中的内联注释。  
该对象包含以下信息：    
`ssl_port`  
（可选）MQTT 代理运行的端口。  
<a name="mqtt-broker-configuration-mqtt-bridge-requirement"></a>如果您指定其它端口，并且使用 [MQTT 网桥组件](mqtt-bridge-component.md)将 MQTT 消息中继到其它代理，您必须使用 MQTT 网桥 v2.1.0 或更高版本。将其配置为使用 MQTT 代理运行的端口。  
<a name="mqtt-broker-configuration-ip-detector-requirement"></a>如果您指定其它端口，并使用 [IP 检测器组件](ip-detector-component.md)管理 MQTT 代理端点，则必须使用 IP 检测器 v2.1.0 或更高版本。将其配置为报告 MQTT 代理运行的端口。
默认值：`8883`  
`host`  
（可选）MQTT 代理绑定的接口。例如，您可以更改此参数，使 MQTT 代理仅绑定到特定的本地网络。  
默认值：`0.0.0.0`（绑定到所有网络接口）

startupTimeoutSeconds  
（可选）组件启动的最长时间（以秒为单位）。如果时间超过此超时时间，则组件的状态将更改为 `BROKEN`。  
默认值：`120`

**Example 示例：配置合并更新**  
以下示例配置指定在端口 443 运行 MQTT 代理。  

```
{
  "moquette": {
    "ssl_port": "443"
  }
}
```

## 本地日志文件
<a name="mqtt-broker-moquette-component-log-file"></a>

此组件使用与 [Greengrass Nucleus](greengrass-nucleus-component.md) 组件相同的日志文件。

------
#### [ Linux ]

```
/greengrass/v2/logs/greengrass.log
```

------
#### [ Windows ]

```
C:\greengrass\v2\logs\greengrass.log
```

------

**查看此组件的日志**
+ 在核心设备上运行以下命令可实时查看此组件的日志文件。将`/greengrass/v2`或*C:\$1greengrass\$1v2*替换为 AWS IoT Greengrass 根文件夹的路径。

------
#### [ Linux ]

  ```
  sudo tail -f /greengrass/v2/logs/greengrass.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait
  ```

------

## 更改日志
<a name="mqtt-broker-moquette-component-changelog"></a>

下表介绍每个组件版本的更改。


|  **版本**  |  **更改**  | 
| --- | --- | 
|  2.3.7  |  对[客户端设备身份验证](client-device-auth-component.md)版本 2.5.0 发行版进行了版本更新。  | 
|  2.3.6  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-broker-moquette-component.html)  | 
|  2.3.5  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-broker-moquette-component.html)  | 
|  2.3.4  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-broker-moquette-component.html)  | 
|  2.3.3  |  <a name="changelog-mqtt-broker-moquette-2.3.3"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-broker-moquette-component.html)  | 
|  2.3.2  |  对[客户端设备身份验证](client-device-auth-component.md)版本 2.4.0 发行版进行了版本更新。  | 
|  2.3.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-broker-moquette-component.html)  | 
|  2.3.0  |  添加了对证书链的支持。  | 
|  2.2.0  |  对[客户端设备身份验证](client-device-auth-component.md)版本 2.2.0 发行版进行了版本更新。  | 
|  2.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-broker-moquette-component.html)  | 
|  2.0.2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/mqtt-broker-moquette-component.html)  | 
|  2.0.1  |  版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。  | 
|  2.0.0  |  初始版本。  | 