扩容/缩容RabbitMQ实例的影响如表1所示。
表1 变更实例规格的影响 变更配置类型 | 影响 |
|---|
代理数量 | - 扩容代理数量过程中会重启RabbitMQ的负载均衡进程,导致节点主备倒换,造成秒级业务中断,客户端需要支持自动重连,建议在业务低峰时进行变更。
- 变更时长和新增代理数量有关,单个代理的变更时长一般在5~10分钟,总变更时长为(5~10分钟)*新增代理数量。
|
存储空间 | - 扩容存储空间不会影响业务。
- 可用存储空间=实际存储空间-用于存储日志的存储空间-格式化磁盘的损耗。例如,实际扩容存储空间到700GB,用于存储日志的数据的存储空间为100GB,格式化磁盘损耗7GB,那么扩容后的可用存储空间为593GB。
- 预计总变更时长为5分钟内。
|
代理规格/实例规格 | - RabbitMQ 3.x.x版本单机实例在变更规格过程中,节点会重启,造成分钟级业务中断,客户端需要支持自动重连,建议在业务低峰时进行变更。
- RabbitMQ 3.x.x版本没有配置镜像/仲裁队列的集群实例在变更规格过程中,节点会逐个重启,造成分钟级业务中断,客户端需要支持自动重连,建议在业务低峰时进行变更。
- RabbitMQ 3.x.x版本配置了镜像/仲裁队列的集群实例在变更规格过程中,节点会逐个重启,造成秒级业务中断,客户端需要支持自动重连,建议在业务低峰时进行变更。
- RabbitMQ 3.x.x版本集群实例在变更规格过程中,变更中的节点连接会切换至其余节点,导致其余节点存在过载风险(比如超过连接数、内存高水位等),建议您在实例规格范围内使用,具体实例规格请参考产品规格。
- RabbitMQ AMQP-0-9-1版本单机实例和集群实例在变更规格过程中会有秒级连接闪断,客户端需要支持自动重连,建议在业务低峰时进行变更。
- Exchange、Queue和消息需要配置持久化,否则节点重启后,消息可能丢失。设置持久化的方法,请参考配置RabbitMQ持久化。
- 代理采用滚动重启的方式进行实例变更,变更时长和代理数量有关,单个代理的变更时长一般在5~10分钟,总变更时长为(5~10分钟)*代理数量。
|
以下示例演示在Java客户端设置消息重试。
ConnectionFactory connectionFactory = new ConnectionFactory();
//设置服务地址
connectionFactory.setHost("localhost");
//设定端口
connectionFactory.setPort(5672);
//自动重试:
connectionFactory.setAutomaticRecoveryEnabled(true);
connectionFactory.setNetworkRecoveryInterval(5);
connectionFactory.setTopologyRecoveryEnabled(true);