Spring AMQP 和两个 RabbitMQ 服务器之间的交换

Spring AMQP and conmutation between two RabbitMQ servers

我有一个使用 Spring AMQP 的项目。我有两个 SimpleMessageListenerContainer,一个有一个由服务器 (amq-gen) 自行声明的队列,另一个有一个给定名称的队列。 我使用一个 SimpleRoutingConnectionFactory 和两个 CachingConnectionFactory。对于错误检测,我有一个 ConnectionListener、ListenerContainerConsumerFailedEvent 和一个 ConditionalExceptionLogger。

想法是一旦在 AMQP 连接中检测到错误,就在两个 Rabbit 服务器之间切换,但是当 AMQP 连接中出现错误时,会在 ConditionalExceptionLogger 中抛出几个错误,几个类型为 ListenerContainerConsumerFailedEvent 的事件,并且复杂化服务器之间自动切换的事实。

如果多次重试,自动切换的最佳方法是什么?

谢谢

one with a self-declared queue by the server (amq-gen)

你不能那样做;如果您使用代理声明的队列名称,第二个代理不知道它,并且容器将尝试声明它,这是不允许的。

而是使用 Spring AMQP AnonymousQueue,它具有与代理声明队列相同的特性(自动删除,不持​​久),但具有框架生成的名称,因此可以声明当你故障转移时。