2013-04-02 86 views
1

我目前正在爲我的排隊系統使用ActiveMQ,並且我想要過渡到RabbitMQ。我一直使用的屬於ActiveMQ的一個特性是重新傳遞策略,因爲有時我們的消費者會拒絕一個消息,因爲它現在無法處理它,但可能會在稍後再嘗試,所以它會重發它。如何在RabbitMQ/AMQP中設置重新傳送策略

現在在AMQP中,當我拒絕一條消息時,它立即再次立即從隊列中脫離並再次嘗試。

在RabbitMQ中,有沒有一種方法可以爲隊列,消費者或消息指定重新傳遞策略?

回答

1

我也有這種行爲的問題。根據文檔(據我記得,也許在更新的版本中有些東西發生了變化)在沒有說明消息將被放置在何處(它被描述爲未確定)之後。在我的測試用例(版本2.8.2)中,一些消息被放到隊列的末尾,一條消息(首先來自客戶端預取)在開始着陸(並立即被消耗)。在我們的應用程序中造成了活鎖。

您可以通過將消息副本發佈到隊列中來實現此目的,並且已經交付了一次性事務(但我建議仔細閱讀有關文檔中事務的部分),或者使用靜態處理來處理臨時無法處理的消息。

+0

在我使用的版本中,我認爲它是最新版本,它們的API提供了拒絕郵件,重發郵件或發送到DLQ的方法。目前我喜歡DLQ作爲重試隊列,但我已習慣ActiveMQ解決方案,您基本上可以抑制重試。 – Nicholas