Spring 集成 RabbitMQ ConnectionFactory 在 RabbitMQ 关闭时优雅地停止重试
Spring Integration RabbitMQ ConnectionFactory gracefully stop retry if RabbitMQ is down
我配置了 Spring 与 RabbitMQ 集成作为消息代理。我有一个场景,其中应用程序可以使用 RabbitMQ down.When 部署在生产环境中,它发生在应用程序连续尝试重新连接
org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer run
WARNING: Consumer raised exception, processing can restart if the connection factory supports it. Exception summary: org.springframework.amqp.AmqpConnectException: java.net.ConnectException: Connection refused
我的服务器日志中充满了这些日志。我如何配置连接工厂,也就是说,尝试以 10,30 或 60 mis 的间隔仅重新连接 5 次?
我希望能够控制重试并打印一些自定义消息。
只有一个简单的recoveryInterval
,可以增加,但是是固定的; 有一些关于如何实现更复杂的东西的建议。
如果您想为您的 RabbitMQ 客户端使用更复杂的恢复和重新连接策略,您可以查看我们的 Lyra。例如:
Config config = new Config()
.withRecoveryPolicy(new RecoveryPolicy()
.withBackoff(Duration.seconds(1), Duration.seconds(30))
.withMaxAttempts(20)
.withMaxDuration(Duration.minutes(5)));
Connection connection = Connections.create(new ConnectionOptions(), config);
它不涉及 spring-amqp,而是使用标准的 amqp-client API,但它确实为您提供了强大的故障处理和资源恢复。
我配置了 Spring 与 RabbitMQ 集成作为消息代理。我有一个场景,其中应用程序可以使用 RabbitMQ down.When 部署在生产环境中,它发生在应用程序连续尝试重新连接
org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer run
WARNING: Consumer raised exception, processing can restart if the connection factory supports it. Exception summary: org.springframework.amqp.AmqpConnectException: java.net.ConnectException: Connection refused
我的服务器日志中充满了这些日志。我如何配置连接工厂,也就是说,尝试以 10,30 或 60 mis 的间隔仅重新连接 5 次? 我希望能够控制重试并打印一些自定义消息。
只有一个简单的recoveryInterval
,可以增加,但是是固定的;
如果您想为您的 RabbitMQ 客户端使用更复杂的恢复和重新连接策略,您可以查看我们的 Lyra。例如:
Config config = new Config()
.withRecoveryPolicy(new RecoveryPolicy()
.withBackoff(Duration.seconds(1), Duration.seconds(30))
.withMaxAttempts(20)
.withMaxDuration(Duration.minutes(5)));
Connection connection = Connections.create(new ConnectionOptions(), config);
它不涉及 spring-amqp,而是使用标准的 amqp-client API,但它确实为您提供了强大的故障处理和资源恢复。