2014-03-03 18 views
2

我使用覆蓋了Spring AMQP抽象的RabbitMQ。 所以本質上我使用Spring AMQP。在春天使用Lyra風格處理重新連接/重試AMQP

我需要處理連接失敗。當你使用原始的RabbitMQ類時,使用Lyra來實現這一點相當容易。

您如何在Spring AMQP中實現相同? 我想我的代碼不知道任何網絡問題。我知道Spring在默認情況下處理重新連接,但我想要的是Lyra樣式的配置(無論是XML還是任何地方),所以我可以定義超時,最大重試次數,退避等。

回答

3

在消費方沒有辦法配置 - 容器只會按照固定的時間表重試連接;可通過在SimpleMessageListenerContainer中設置recoveryInterval進行配置,默認值爲5秒。爲消費者配置回退沒有太多價值。

在發佈端,您可以使用spring-aopMethodInterceptor一個包裝從spring-retry一個RetryTemplatesend*()調用包裹RabbitTemplate(AmqpTemplate接口)。 RetryTemplate可以配置各種選項,包括退避政策等。

如果您需要幫助,我可以嘗試找一些時間來發佈一個要點。

編輯:

每下面的評論 - 正確,recoveryInterval目前不具備的命名空間(但你仍然可以定義容器作爲<bean ... class="...SimpleMessageListenerContainer...>

但是,它加入了幾個星期以前到主分支(commit here),它是在1.3.0.BUILD-快照可用。

而且,在這裏你的問題的結果,我添加了一個選項RetryTemplateRabbitTemplatepull request here)。這應該是m很快就會發生。 1.3.0(1.3.0.RC1)的候選版本將於週五發佈,1.3.0 GA版本將在幾周內發佈。

+0

感謝涵蓋雙方。如果出版商的主旨不是問題,我會非常感激。我認爲其他訪問者也可以,因爲網上沒有那麼多的例子。 –

+0

另外,如果我錯了,請糾正我,但容器的XML版本''不能有' recoveryInterval'配置..? –

+0

我用回覆編輯了我的答案。 –