Java 在Spring AMQP中使用Lyra样式处理重新连接/重试

Java 在Spring AMQP中使用Lyra样式处理重新连接/重试,java,spring,rabbitmq,message-queue,spring-amqp,Java,Spring,Rabbitmq,Message Queue,Spring Amqp,我使用的是包含Spring AMQP抽象的RabbitMQ。 所以本质上我使用的是Spring AMQP 我需要处理连接故障。当您使用原始RabbitMQ类时,使用它很容易实现这一点 如何在春季AMQP中实现同样的效果我希望我的代码不知道任何网络问题 我知道Spring在默认情况下(以某种方式)处理重新连接,但我想要的是Lyra风格的配置(无论是XML还是其他形式),因此我可以定义超时、最大重试次数、退避等。在消费端,没有办法进行配置-容器只需按照固定的时间表重试连接;可通过在SimpleMes

我使用的是包含Spring AMQP抽象的RabbitMQ。 所以本质上我使用的是Spring AMQP

我需要处理连接故障。当您使用原始RabbitMQ类时,使用它很容易实现这一点

如何在春季AMQP中实现同样的效果我希望我的代码不知道任何网络问题


我知道Spring在默认情况下(以某种方式)处理重新连接,但我想要的是Lyra风格的配置(无论是XML还是其他形式),因此我可以定义超时、最大重试次数、退避等。

在消费端,没有办法进行配置-容器只需按照固定的时间表重试连接;可通过在
SimpleMessageListenerContainer
中设置
recoveryInterval
进行配置,默认设置为5秒。为消费者配置回退没有多大价值

在发布端,您可以使用
spring aop
MethodInterceptor
中包装rabbitemplate(AmqpTemplate接口),该方法将
send*()
调用包装在
RetryTemplate
中。
RetryTemplate
可以配置各种选项,包括退避策略等

如果你在这方面需要帮助,我可以试着找时间发布要点

编辑:


根据下面的注释-更正,
recoveryInterval
当前不可用于命名空间(但您仍然可以将容器定义为
,感谢您涵盖了这两个方面。如果发布者的要点不是问题,我将非常感谢。我想其他访问者也可以,因为网上没有那么多示例。此外,如果我错了,请纠正我,但是容器的XML版本,
不能有
recoveryInterval。)
configured.?好的,谢谢!还有一件事:您可以将
标记与标准
混合使用(即在单个应用程序中同时使用这两种标记来配置rabbitMQ)希望它们能像使用相同名称空间定义的所有名称空间一样工作?是的,您可以混合和匹配;所有Spring名称空间解析器最终都会生成bean定义。@GaryRussell设置为ConnectionFactory的connectionTimeout和RetryTemplate策略之间有什么关系?