

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

# 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)和警报，以便在潜在问题影响您的消息传递应用程序之前识别和解决这些问题。主动监控对于维护弹性消息应用程序和确保最佳性能至关重要。

 适用于 RabbitMQ 的 Amazon MQ 向其发布指标 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)。