2015-11-19 3 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 системы Redelivery брокера в качестве отдельных одному клиента. Например, после совершения 6 попыток (по умолчанию) подтверждения сообщения (CLIENT_ACKNOWLDGMENT) потребитель отправляет ядовитую таблетку. Итак, верно ли, что после получения ядовитой таблетки брокер попытается отправить сообщение потребителю, которое сделает еще 6 попыток.

Таким образом, в общей сложности у нас может быть попыток до того, как сообщение отправит сообщение DLQ.

Является ли мое недооценка правильной?

ответ

1

Да. Брокер не знает о повторной доставке клиента. Это происходит в «драйвере» - в памяти. Брокер не будет учитывать, был ли клиент уже повторен или нет. Результатом являются вложенные повторы, которые хорошо знают.

+0

Получил, спасибо много. –

Смежные вопросы