2017-02-22 80 views
0

我们在我们的项目中使用rabbitmq进行消息传递。这主要用于审计日志记录。我们试图检查我们的应用如何响应某些故障情况。例如,如果RabbitMQ关闭,消费者会不断尝试连接到rabbitmq并失败。如果rabbitmq停机,消费者是否有办法停止尝试?以类似的方式,当代理停止时,发布者如何停止尝试将消息发送到队列?断路器是我们可以考虑的选项之一吗?Spring Boot - RabbitMQ - 处理经纪人故障的场景

回答

1

您可以将RetryTemplate添加到RabbitTemplate bean。

RecoveryCallback实施添加到只忽略(或记录)错误的重试模板。

它会尝试连接,但不会失败。

如果您在Spring AMQP上使用Spring Integration layer,则可以将circuit breaker request handler advice添加到出站通道适配器。

+0

Thanks @Gary Russel。消费者可以使用RetryTemplate消费来自RabbitMQ的消息。我为每个应用程序实例设置了10个消费者,我发现他们不断尝试连接到正在关闭的rabbitmq实例。有没有办法让我使用retrytemplate或断路器停止轮询队列? –

+0

否;在客户端,您可以通过'recoveryInterval'或'recoveryBackOff'配置连接重试。如果您使用'FixedBackOff',则可以使用'maxAttempts'配置它,并在该号码后自动停止容器。连接修复后,您将不得不再次手动启动容器。 –

+0

谢谢@加里罗素。 –