如果RabbitMQ关闭,Spring Integration RabbitMQ ConnectionFactory会正常停止重试

时间:2015-04-28 11:18:07

标签: spring rabbitmq spring-integration

我有一个与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次? 我希望能够控制重试并打印一些自定义消息。

2 个答案:

答案 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,但它确实为您提供了强大的故障处理和资源恢复。