

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Amazon MQ for RabbitMQ 代理程式預設值
<a name="rabbitmq-defaults"></a>

當您建立 Amazon MQ for RabbitMQ 代理程式時，Amazon MQ 會套用一組預設政策和虛擬主機限制，以最佳化代理程式的效能。Amazon MQ 只會將虛擬主機限制套用至預設 (`/`) 虛擬主機。Amazon MQ 不會將預設政策套用至新建立的虛擬主機。我們建議為所有新的和現有代理程式保留這些預設值。但是，您可以隨時修改、覆寫或刪除這些預設值。

Amazon MQ 會為 Amazon MQ for RabbitMQ 3 和 RabbitMQ 4 建立不同的代理程式政策和 vhost 限制。以下小節將詳細討論這些差異。

Amazon MQ 會根據您在建立代理程式時選擇的執行個體類型和代理程式部署模式建立政策和限制。預設政策會根據部署模式來命名，如下所示：

**Amazon MQ for RabbitMQ 3：**
+ **單一執行個體** – `AWS-DEFAULT-POLICY-SINGLE-INSTANCE`
+ **叢集部署** – `AWS-DEFAULT-POLICY-CLUSTER-MULTI-AZ` && `AWS-DEFAULT-QUORUM-QUEUES-POLICY-CLUSTER-MULTI-AZ`

**Amazon MQ for RabbitMQ 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-mode` 和 `ha-sync-mode` 代理程式政策，才能達到傳統鏡像和高可用性 (HA)。這些設定僅適用於 Amazon MQ for RabbitMQ 3，且不適用於 RabbitMQ 4。  
如果您刪除預設 `AWS-DEFAULT-POLICY-CLUSTER-MULTI-AZ` 政策，則 Amazon MQ 會使用優先順序值為 `0` 的 `ha-all-AWS-OWNED-DO-NOT-DELETE` 政策。這可確保所需的 `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}}`** (政策) – 設定佇列中的訊息數量限制。在叢集部署中，此限制會防止在代理程式重新啟動的情況下或在維護時段之後暫停佇列同步處理。
**部署模式**  
叢集
+ **`overflow: reject-publish`** (策略) – 強制採用 `max-length` 政策的佇列，在佇列中的訊息數量達到 `max-length` 值之後，拒絕新訊息。若要確保佇列處於溢位狀態時訊息不會遺失，將訊息發佈至代理程式的用戶端應用程式必須實作[發行者確認](best-practices-message-reliability.md#configure-confirmation-acknowledgement)。如需實作發行者確認的相關資訊，請參閱 RabbitMQ 網站上的 [Publisher Confirms (發行者確認)](https://www.rabbitmq.com/confirms.html#publisher-confirms)。
**部署模式**  
叢集

**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` 僅適用於 Amazon MQ for RabbitMQ 3。

**注意**  
`max-length` 和 `max-queue` 預設限制會根據 5 kB 的平均訊息大小進行測試和評估。如果您的訊息明顯大於 5 kB，則需要調整並降低 `max-length` 和 `max-queue` 限制。

下表列出新建代理程式的預設限制值。Amazon MQ 會根據代理程式的執行個體類型和部署模式套用這些值。



- **mq.m7g.medium**
  - **部署模式:** 單一執行個體 / **`max-length`:** N/A / **`max-queues`:** 2,500 / **`max-connections`:** 100
  - **部署模式:** 叢集 / **`max-length`:** 500,000 / **`max-queues`:** 100 / **`max-connections`:** 100

- **mq.m7g.large**
  - **部署模式:** 單一執行個體 / **`max-length`:** N/A / **`max-queues`:** 20,000 / **`max-connections`:** 5,000
  - **部署模式:** 叢集 / **`max-length`:** 8，000，000 / **`max-queues`:** 10,000 / **`max-connections`:** 5,000

- **mq.m7g.xlarge**
  - **部署模式:** 單一執行個體 / **`max-length`:** N/A / **`max-queues`:** 30,000 / **`max-connections`:** 10,000
  - **部署模式:** 叢集 / **`max-length`:** 9，000，000 / **`max-queues`:** 15,000 / **`max-connections`:** 10,000

- **mq.m7g.2xlarge**
  - **部署模式:** 單一執行個體 / **`max-length`:** N/A / **`max-queues`:** 40,000 / **`max-connections`:** 20,000
  - **部署模式:** 叢集 / **`max-length`:** 10,000,000 / **`max-queues`:** 40,000 / **`max-connections`:** 20,000

- **mq.m7g.4xlarge**
  - **部署模式:** 單一執行個體 / **`max-length`:** N/A / **`max-queues`:** 60,000 / **`max-connections`:** 40,000
  - **部署模式:** 叢集 / **`max-length`:** 12，000，000 / **`max-queues`:** 30,000 / **`max-connections`:** 40,000

- **mq.m7g.8xlarge**
  - **部署模式:** 單一執行個體 / **`max-length`:** N/A / **`max-queues`:** 80,000 / **`max-connections`:** 80,000
  - **部署模式:** 叢集 / **`max-length`:** 20,000,000 / **`max-queues`:** 40,000 / **`max-connections`:** 80,000

- **mq.m7g.12xlarge**
  - **部署模式:** 單一執行個體 / **`max-length`:** N/A / **`max-queues`:** 100,000 / **`max-connections`:** 120,000
  - **部署模式:** 叢集 / **`max-length`:** 30，000，000 / **`max-queues`:** 20,000 / **`max-connections`:** 120,000

- **mq.m7g.16xlarge**
  - **部署模式:** 單一執行個體 / **`max-length`:** N/A / **`max-queues`:** 120,000 / **`max-connections`:** 160,000
  - **部署模式:** 叢集 / **`max-length`:** 40，000，000 / **`max-queues`:** 50,000 / **`max-connections`:** 160,000




| 執行個體類型 | 部署模式 | `max-length` | `max-queues` | `max-connections` | 
| --- | --- | --- | --- | --- | 
| t3.micro | 單一執行個體 | N/A | 500 | 500 | 
| m5.large | 單一執行個體 | N/A | 20,000 | 4,000 | 
| m5.large | 叢集 | 8，000，000 | 10,000 | 15,000 | 
| m5.xlarge | 單一執行個體 | N/A | 30,000 | 8,000 | 
| m5.xlarge | 叢集 | 9，000，000 | 10,000 | 20,000 | 
| m5.2xlarge | 單一執行個體 | N/A | 60,000 | 15,000 | 
| m5.2xlarge | 叢集 | 10,000,000 | 10,000 | 40,000 | 
| m5.4xlarge | 單一執行個體 | N/A | 150，000 | 30,000 | 
| m5.4xlarge | 叢集 | 12，000，000 | 10,000 | 100,000 | 