2015-11-19 64 views
1

我試圖瞭解ActiveMQredeliveryPlugin與消費者在將消息標記爲毒丸之前收到消息的嘗試之間的區別。有什麼不同。在the documentation there'is一個例子:ActiveMQ經紀人重新交付與消費者重新交付

<broker xmlns="http://activemq.apache.org/schema/core" schedulerSupport="true" > 
     .... 
     <plugins> 
      <redeliveryPlugin fallbackToDeadLetter="true" sendToDlqIfMaxRetriesExceeded="true"> 
       <redeliveryPolicyMap> 
        <redeliveryPolicyMap> 
         <redeliveryPolicyEntries> 
          <!-- a destination specific policy --> 
          <redeliveryPolicy queue="SpecialQueue" maximumRedeliveries="4" 
redeliveryDelay="10000" /> 
         </redeliveryPolicyEntries> 
         <!-- the fallback policy for all other destinations --> 
         <defaultEntry> 
          <redeliveryPolicy maximumRedeliveries="4" initialRedeliveryDelay="5000" 
redeliveryDelay="10000" /> 
         </defaultEntry> 
        </redeliveryPolicyMap> 
       </redeliveryPolicyMap> 
      </redeliveryPlugin> 
     </plugins> 

現在,我uderstand券商的再分發系統作爲一個獨立的客戶端之一。例如,在嘗試6次(默認情況下)以確認消息(CLIENT_ACKNOWLDGMENT模式)後,消費者會發送毒丸。所以,在收到毒丸之後,經紀人會嘗試重新發送消息給消費者,這將會再次嘗試6次。

因此,總共我們可能會有4 x 6 = 24次嘗試,然後郵件將發送到DLQ

我的支持正確嗎?

回答

1

是的。經紀人不知道任何客戶重新交付。這發生在「司機」 - 在記憶中。經紀人不會考慮客戶是否已經重試。結果是嵌套重試,這很好理解。

+0

明白了,非常感謝。 –