

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

# Amazon MQ for RabbitMQ 中網路彈性和監控的最佳實務
<a name="best-practices-network-resilience"></a>

 網路彈性和監控代理程式指標對於維護可靠的簡訊應用程式至關重要。完成下列最佳實務，以實作自動復原機制和資源監控策略。

## 步驟 1：從網路故障自動復原
<a name="automatically-recover-from-network-failures"></a>

我們建議一律啟用自動網路復原，以避免在用戶端連線到 RabbitMQ 節點失敗的情況下發生重大停機。從版本 `4.0.0` 開始，RabbitMQ Java 用戶端程式庫預設支援自動網路復原。

如果連線的 I/O 迴圈中擲回未處理的例外狀況、如果偵測到通訊端讀取作業逾時，或者伺服器遺漏[活動訊號](https://www.rabbitmq.com/heartbeats.html)，就會觸發自動連線復原。

在用戶端與 RabbitMQ 節點之間的初始連線失敗的情況下，將不會觸發自動復原。我們建議您透過重試連線來撰寫應用程式程式碼，以解決初始連線失敗的問題。以下範例示範如何使用 RabbitMQ Java 用戶端程式庫重試初始網路故障。

```
ConnectionFactory factory = new ConnectionFactory();
// enable automatic recovery if using RabbitMQ Java client library prior to version 4.0.0.
factory.setAutomaticRecoveryEnabled(true);
// configure various connection settings

try {
  Connection conn = factory.newConnection();
} catch (java.net.ConnectException e) {
  Thread.sleep(5000);
  // apply retry logic
}
```

**注意**  
如果應用程式使用 `Connection.Close` 方法關閉連線，則不會啟用或觸發自動網路復原。

## 步驟 2：監控代理程式指標和警示
<a name="monitor-metrics-alarms"></a>

 我們建議您定期監控 Amazon MQ for RabbitMQ 代理程式的 [CloudWatch 指標](amazon-mq-accessing-metrics.md)和警示，以便在潛在問題影響您的簡訊應用程式之前加以識別和解決。主動監控對於維護彈性傳訊應用程式並確保最佳效能至關重要。

 Amazon MQ for RabbitMQ 會將指標發佈至 CloudWatch，以深入了解中介裝置效能、資源使用率和訊息流程。要監控的關鍵指標包括記憶體用量和磁碟用量。您可以在代理程式接近資源限制或效能降低時設定 [CloudWatch 警示](https://docs.aws.amazon.com/Ihttps://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Alarm-On-Metrics.html)。

監控下列基本指標：

**`RabbitMQMemUsed` 和 `RabbitMQMemLimit`**  
監控記憶體用量，以防止可能封鎖訊息發佈的記憶體警示。

**`RabbitMQDiskFree` 和 `RabbitMQDiskFreeLimit`**  
監控磁碟用量，以避免可能導致代理程式故障的磁碟空間問題。

 對於叢集部署， 也會監控[節點特定的指標](rabbitmq-logging-monitoring.md#security-logging-monitoring-cloudwatch-destination-metrics-rabbitmq)，以識別節點特定的問題。

**注意**  
如需如何防止高記憶體警示的詳細資訊，請參閱[解決和防止高記憶體警示](troubleshooting-action-required-codes-rabbitmq-memory-alarm.md#address-prevent-high-memory-alarm)。