我正在使用涵盖Spring AMQP抽象的RabbitMQ。
因此,实质上,我在使用Spring AMQP。
我需要处理连接失败。当使用原始RabbitMQ类时,使用Lyra实现此目标相当容易。
您如何在Spring AMQP中实现相同目标?我希望我的代码不知道任何网络问题。
我知道Spring默认情况下会以某种方式处理重新连接,但是我想要的是Lyra风格的配置(无论是XML格式还是其他格式),因此我可以定义超时,最大重试次数,退避时间等。
最佳答案
在使用方,无法进行配置-容器将仅按照固定的时间表重试连接;可通过在recoveryInterval
中将SimpleMessageListenerContainer
设置为默认值5秒来配置。为消费者配置退税没有太大价值。
在发布方面,可以使用spring-aop
将RabbitTemplate(AmqpTemplate接口)包装在MethodInterceptor
中,该send*()
将RetryTemplate
调用包装在spring-retry中的RetryTemplate
中。 recoveryInterval
可以配置各种选项,包括退避策略等。
如果您需要帮助,我可以尝试找些时间发布Gist。
编辑:
根据下面的注释-正确,名称空间当前不提供<bean ... class="...SimpleMessageListenerContainer...>
(但您仍可以将容器定义为RetryTemplate
。
但是,它是在几周前添加到master分支(commit here)的。它在1.3.0.BUILD-SNAPSHOT中可用。
另外,由于您在此处提出问题,我在RabbitTemplate
(pull request here)中添加了选项。应该尽快合并。 1.3.0(1.3.0.RC1)的候选发布版将于星期五发布,并且1.3.0 GA发行版将在几周内发布。
关于java - 在Spring AMQP中使用Lyra样式处理重新连接/重试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22143742/