我有一个与RabbitMQ的Configured Spring集成作为消息代理。我有一个场景,可以在RabbitMQ中将应用程序部署到生产环境中。当它发生时,应用程序会连续尝试重新连接
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次? 我希望能够控制重试并打印一些自定义消息。
答案 0 :(得分:3)
只有一个简单的recoveryInterval
,你可以增加,但它是固定的; this answer对如何实施更复杂的内容提出了一些建议。
答案 1 :(得分:1)
如果您想为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,但它确实为您提供了强大的故障处理和资源恢复。