2017-02-22 78 views
0

我們在我們的項目中使用rabbitmq進行消息傳遞。這主要用於審計日誌記錄。我們試圖檢查我們的應用如何響應某些故障情況。例如,如果RabbitMQ關閉,消費者會不斷嘗試連接到rabbitmq並失敗。如果rabbitmq停機,消費者是否有辦法停止嘗試?以類似的方式,當代理停止時,發佈者如何停止嘗試將消息發送到隊列?斷路器是我們可以考慮的選項之一嗎?Spring Boot - RabbitMQ - 處理經紀人故障的場景

回答

1

您可以將RetryTemplate添加到RabbitTemplate bean。

RecoveryCallback實施添加到只忽略(或記錄)錯誤的重試模板。

它會嘗試連接,但不會失敗。

如果您在Spring AMQP上使用Spring Integration layer,則可以將circuit breaker request handler advice添加到出站通道適配器。

+0

Thanks @Gary Russel。消費者可以使用RetryTemplate消費來自RabbitMQ的消息。我爲每個應用程序實例設置了10個消費者,我發現他們不斷嘗試連接到正在關閉的rabbitmq實例。有沒有辦法讓我使用retrytemplate或斷路器停止輪詢隊列? –

+0

否;在客戶端,您可以通過'recoveryInterval'或'recoveryBackOff'配置連接重試。如果您使用'FixedBackOff',則可以使用'maxAttempts'配置它,並在該號碼後自動停止容器。連接修復後,您將不得不再次手動啓動容器。 –

+0

謝謝@加里羅素。 –