

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

# Amazon MQ for RabbitMQ 代理默认值
<a name="rabbitmq-defaults"></a>

当您为 RabbitMQ 代理创建 Amazon MQ 时，Amazon MQ 会应用一组默认的代理策略和虚拟主机限制来优化代理的性能。Amazon MQ 仅将虚拟主机限制应用于默认的（`/`）虚拟主机。Amazon MQ 不会将默认策略应用于新创建的虚拟主机。建议为所有新的和现有的代理保留这些默认值。但是，您可以随时修改、覆盖或删除这些默认设置。

亚马逊 MQ 为 RabbitMQ 3 和 RabbitMQ 4 的亚马逊 MQ 创建了不同的代理策略和虚拟主机限制。以下小节将详细讨论这些差异。

Amazon MQ 根据您在创建代理时选择的实例类型和代理部署模式创建策略和限制。默认策略根据部署模式命名，如下所示：

**适用于 RabbitMQ 的亚马逊 MQ 3：**
+ **单实例** – `AWS-DEFAULT-POLICY-SINGLE-INSTANCE`
+ **集群部署** — `AWS-DEFAULT-POLICY-CLUSTER-MULTI-AZ` && `AWS-DEFAULT-QUORUM-QUEUES-POLICY-CLUSTER-MULTI-AZ`

**适用于 RabbitMQ 的亚马逊 MQ 4：**
+ **单实例** – `AWS-DEFAULT-POLICY-SINGLE-INSTANCE`
+ **集群部署** — `AWS-DEFAULT-POLICY-CLUSTER` && `AWS-DEFAULT-QUORUM-QUEUES-POLICY-CLUSTER-MULTI-AZ`

对于[单实例代理](rabbitmq-broker-architecture.md#rabbitmq-broker-architecture-single-instance)，Amazon MQ 会将策略优先级值设置为 `0`。要覆盖默认优先级值，可以创建具有较高优先级值的自定义策略。对于[集群部署](rabbitmq-broker-architecture.md#rabbitmq-broker-architecture-cluster)，Amazon MQ 将优先级值设置为代理默认值 `1`。要为集群创建您自己的自定义策略，请分配一个大于 `1` 的优先级值。

**注意**  
在集群部署中，经典镜像和高可用性（HA）需要 `ha-mode` 和 `ha-sync-mode` 代理策略。这些设置仅适用于 RabbitMQ 3 的亚马逊 MQ，不适用于 RabbitMQ 4。  
如果删除默认 `AWS-DEFAULT-POLICY-CLUSTER-MULTI-AZ` 策略，Amazon MQ 将使用 `ha-all-AWS-OWNED-DO-NOT-DELETE` 策略，优先级值为 `0`。这可以确保所需的 `ha-mode` 和 `ha-sync-mode` 策略仍然有效。如果您创建自己的自定义策略，Amazon MQ 自动将 `ha-mode` 和 `ha-sync-mode` 添加到您的策略定义。

**Topics**
+ [策略和限制说明](#rabbitmq-defaults-descriptions)
+ [建议的默认值](#rabbitmq-defaults-values)

## 策略和限制说明
<a name="rabbitmq-defaults-descriptions"></a>

以下列表描述了 Amazon MQ 应用于新创建的代理的默认策略和限制。`max-length`、`max-queues` 和 `max-connections` 的值因代理的实例类型和部署模式而异。这些值列于[建议的默认值](#rabbitmq-defaults-values)部分。

**RabbitMQ 3 和 RabbitMQ 4 经纪人的设置**
+ **`queue-mode: lazy`**（策略）– 启用延迟队列。默认情况下，队列会在内存中保留消息缓存，从而使代理能够尽快将消息传递给使用者。这可能会导致代理内存不足并引发高内存警报。延迟队列尝试在可行的情况下尽早将消息移动到磁盘。这意味着在正常操作条件下保留在内存中的消息更少。使用延迟队列，Amazon MQ for RabbitMQ 可以支持更大的邮件负载和更长的队列。请注意，对于某些用例，具有延迟队列的代理可能会稍慢一些。这是因为消息从磁盘移动到代理，而不是从内存中的缓存传递消息。
**部署模式**  
单实例、集群
+ **`max-length: {{number-of-messages}}`**（策略）– 设置队列中的消息数量的限制。在集群部署中，该限制可防止在代理重启或维护时段之后暂停队列同步。
**部署模式**  
Cluster
+ **`overflow: reject-publish`**（策略）– 使用 `max-length` 策略强制队列在队列中的消息数达到 `max-length` 值后拒绝新消息。为了确保队列处于溢出状态时消息不会丢失，向代理发布消息的客户端应用程序必须实施[发布者确认](best-practices-message-reliability.md#configure-confirmation-acknowledgement)。有关实施发布者确认的信息，请参阅 RabbitMQ 网站上的[发布者确认](https://www.rabbitmq.com/confirms.html#publisher-confirms)。
**部署模式**  
Cluster

**RabbitMQ 3 的特定设置**
+ **`max-queues: {{number-of-queues-per-vhost}}`**（虚拟主机限制）– 设置代理中队列数的限制。与`max-length`策略定义类似，限制集群部署中的队列数量可防止在代理重新启动或维护时段后暂停队列同步。限制队列还可防止过多使用 CPU 来维护队列。
**部署模式**  
单实例、集群
+ **`max-connections: {{number-of-connections-per-vhost}}`**（虚拟主机限制）– 设置连接代理的客户端数量限制。根据建议的值限制连接数可防止使用过多的代理内存，以免导致代理产生高内存警报和暂停操作。
**部署模式**  
单实例、集群

## 建议的默认值
<a name="rabbitmq-defaults-values"></a>

**重要**  
 `max-queues``max-connections`并且仅适用于 RabbitMQ 3 的亚马逊 MQ。

**注意**  
`max-length` 和 `max-queue` 默认限制将根据平均邮件大小 5KB 进行测试和评估。如果您的消息大于 5KB，则需要调整和减少 `max-length` 和 `max-queue` 限制。

下表列出了新创建的代理的默认限制值。Amazon MQ 根据代理的实例类型和部署模式应用这些值。



- **mq.m7g.medium**
  - **Deployment mode (部署模式):** 单实例 / **`max-length`:** 不适用 / **`max-queues`:** 2,500 / **`max-connections`:** 100
  - **Deployment mode (部署模式):** Cluster / **`max-length`:** 500,000 / **`max-queues`:** 100 / **`max-connections`:** 100

- **mq.m7g.large**
  - **Deployment mode (部署模式):** 单实例 / **`max-length`:** 不适用 / **`max-queues`:** 20000 / **`max-connections`:** 5000
  - **Deployment mode (部署模式):** Cluster / **`max-length`:** 8,000,000 / **`max-queues`:** 10000 / **`max-connections`:** 5000

- **mq.m7g.xlarge**
  - **Deployment mode (部署模式):** 单实例 / **`max-length`:** 不适用 / **`max-queues`:** 30000 / **`max-connections`:** 10000
  - **Deployment mode (部署模式):** Cluster / **`max-length`:** 90000,000 / **`max-queues`:** 15000 / **`max-connections`:** 10000

- **mq.m7g.2xlarge**
  - **Deployment mode (部署模式):** 单实例 / **`max-length`:** 不适用 / **`max-queues`:** 40000 / **`max-connections`:** 20000
  - **Deployment mode (部署模式):** Cluster / **`max-length`:** 10,000,000 / **`max-queues`:** 40000 / **`max-connections`:** 20000

- **mq.m7g.4xlarge**
  - **Deployment mode (部署模式):** 单实例 / **`max-length`:** 不适用 / **`max-queues`:** 60000 / **`max-connections`:** 40000
  - **Deployment mode (部署模式):** Cluster / **`max-length`:** 12,000,000 / **`max-queues`:** 30000 / **`max-connections`:** 40000

- **mq.m7g.8xlarge**
  - **Deployment mode (部署模式):** 单实例 / **`max-length`:** 不适用 / **`max-queues`:** 80,000 / **`max-connections`:** 80,000
  - **Deployment mode (部署模式):** Cluster / **`max-length`:** 20,000,000 / **`max-queues`:** 40000 / **`max-connections`:** 80,000

- **mq.m7g.12xlarge**
  - **Deployment mode (部署模式):** 单实例 / **`max-length`:** 不适用 / **`max-queues`:** 100000 / **`max-connections`:** 120,000
  - **Deployment mode (部署模式):** Cluster / **`max-length`:** 30,000,000 / **`max-queues`:** 20000 / **`max-connections`:** 120,000

- **mq.m7g.16xlarge**
  - **Deployment mode (部署模式):** 单实例 / **`max-length`:** 不适用 / **`max-queues`:** 120,000 / **`max-connections`:** 160000
  - **Deployment mode (部署模式):** Cluster / **`max-length`:** 40,000,000 / **`max-queues`:** 50000 / **`max-connections`:** 160000




| 实例类型 | Deployment mode (部署模式) | `max-length` | `max-queues` | `max-connections` | 
| --- | --- | --- | --- | --- | 
| t3.micro | 单实例 | 不适用 | 500 | 500 | 
| m5.large | 单实例 | 不适用 | 20000 | 4,000 | 
| m5.large | Cluster | 8,000,000 | 10000 | 15000 | 
| m5.xlarge | 单实例 | 不适用 | 30000 | 8000 | 
| m5.xlarge | Cluster | 90000,000 | 10000 | 20000 | 
| m5.2xlarge | 单实例 | 不适用 | 60000 | 15000 | 
| m5.2xlarge | Cluster | 10,000,000 | 10000 | 40000 | 
| m5.4xlarge | 单实例 | 不适用 | 15万 | 30000 | 
| m5.4xlarge | Cluster | 12,000,000 | 10000 | 100000 | 