我正在使用Mule作爲ESB解決方案。我有一個隊列,從那裏我收到消息,並試圖使HTTP請求服務,始終失敗。Mule Persistent ActiveMQ RedeliveryPolicy
我已經配置了RedeliveryPolicy上的ActiveMQ這樣的:
<spring:bean id="retryRedeliveryPolicy" class="org.apache.activemq.RedeliveryPolicy"
name="retryRedeliveryPolicy">
<spring:property name="maximumRedeliveries" value="76" />
<spring:property name="initialRedeliveryDelay" value="300000" />
<spring:property name="maximumRedeliveryDelay" value="3600000" />
<spring:property name="useExponentialBackOff" value="true" />
<spring:property name="backOffMultiplier" value="2" />
<spring:property name="queue" value="*" />
</spring:bean>
這5分鐘後重試。然後10分鐘,20,40,60,60,60 ...約~3天
問題是,重試邏輯是非持久性。
可以說,郵件正在重試2天。而且我已經部署了新版本的mule應用程序或重新啓動的服務器......在這種情況下,重試邏輯將從5分鐘,10分鐘重新開始......因爲重試狀態由客戶端保存在RAM內存中。
很熱做RedeliveryPolicy persistent?在2天后我將重新啓動服務器後,它必須繼續重試1天。
一個解決方案,我認爲可能是設置timeToLive 72小時的消息。但即使如此,重新啓動服務器後。它不會從開始每小時重試。它將從5分鐘開始...