我正在使用涵盖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中可用。

另外,由于您在此处提出问题,我在RabbitTemplatepull request here)中添加了选项。应该尽快合并。 1.3.0(1.3.0.RC1)的候选发布版将于星期五发布,并且1.3.0 GA发行版将在几周内发布。

关于java - 在Spring AMQP中使用Lyra样式处理重新连接/重试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22143742/

10-12 18:36
查看更多