RabbitMQ/Spring:如果当前独占用户取消注册,另一个独占用户是否会自行注册?

RabbitMQ/Spring:如果当前独占用户取消注册,另一个独占用户是否会自行注册?,rabbitmq,spring-rabbit,cloud-foundry,Rabbitmq,Spring Rabbit,Cloud Foundry,我有一个spring应用程序,它在cloudfoundry上的多个实例中运行。 这些实例共享一个数据库。它们具有如下配置的RabbitListener: @RabbitListener(queues = "${items.updated.queue}", exclusive = true) 如果需要从某个源重新导入项,则队列将获取一条消息 我只需要一个实例来执行导入。据我所知,这可以通过专用标志来实现 现在,如果当前的独家消费者崩溃,会发生什么? 另一个当前正在运行的实例是否将自己注册为新的独

我有一个spring应用程序,它在cloudfoundry上的多个实例中运行。 这些实例共享一个数据库。它们具有如下配置的
RabbitListener

@RabbitListener(queues = "${items.updated.queue}", exclusive = true)
如果需要从某个源重新导入项,则队列将获取一条消息

我只需要一个实例来执行导入。据我所知,这可以通过专用标志来实现

现在,如果当前的
独家消费者
崩溃,会发生什么?
另一个当前正在运行的实例是否将自己注册为新的
独占消费者
?或者,注册是否仅在应用程序启动时进行?

是,另一个消费者将被授予访问权限

消费者将每隔
recoveryInterval
毫秒(默认为5000-5秒)重新尝试消费

您可以通过在侦听器容器中设置间隔或
recoveryBackoff
来更改此设置

请注意,您将从容器中获得有关故障的警告日志,并从连接工厂获得通道因故障而关闭的信息日志

您可以调整日志级别以减少这些日志,也可以将自定义的
ConditionalExceptionLogger
s注入容器和工厂

默认情况下,如果某个使用者由于其队列被独占使用以及发布事件而失败,则会发出警告日志。要更改此日志记录行为,请在
SimpleMessageListenerContainer
exclusiveConsumerExceptionLogger
属性中提供一个自定义
ConditionalExceptionLogger
。另请参见“记录通道关闭事件”一节


我们正在实现
ConditionalExceptionLogger
,以避免多次记录错误。这样,我们既不会干扰恢复间隔,也不会干扰回退尝试,同时也不会因条目过多而污染日志。