Я ищу правильный способ отправить все сообщения в очередь мертвой буквы после определенного количества попыток.ActiveMQ Конфигурация по умолчанию RedeliveryPolicy.maximumRedeliveries для всех подключений
Поскольку redeliveryPlugin работает только с локальным хранилищем и, таким образом, нарушает нашу конфигурацию HA на основе JDBC, мы решили запустить все сообщения в DLQ.
individualDeadLetterStrategy
конфигурация назначения пригождается здесь:
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry topic=">" >
<deadLetterStrategy>
<individualDeadLetterStrategy
queuePrefix="DLQ."
useQueueForQueueMessages="true" />
</deadLetterStrategy>
</policyEntry>
<policyEntry queue=">" >
<deadLetterStrategy>
<individualDeadLetterStrategy
queuePrefix="DLQ."
useQueueForQueueMessages="true" />
</deadLetterStrategy>
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>
С помощью этой опции и настройки maximumRetries в связи URI (jms.redeliveryPolicy.maximumRedeliveries=4
) или в коде, я могу настроить систему достаточно хорошо.
Тем не менее, я хотел бы настроить параметры по умолчанию для всех подключений, чтобы обеспечить соблюдение стандарта по всем приложениям в брокере. Индивидуальные настройки приложения могут отличаться, но, как я вижу в настоящее время, я не могу настроить значение по умолчанию в XML - или есть способ?
Я попытался сделать это с помощью redeliveryplugin, но моя проблема в том, что это работает только для определенных очередей, а не для всех очередей. Я не мог изменить RedeliveryPolicy по умолчанию с плагином, и я не мог снять задержку (минимум 1000):
<plugins>
<redeliveryPlugin fallbackToDeadLetter="true" sendToDlqIfMaxRetriesExceeded="true">
<redeliveryPolicyMap>
<redeliveryPolicyMap>
<defaultEntry>
<redeliveryPolicy maximumRedeliveries="0" initialRedeliveryDelay="1001" redeliveryDelay="1001" />
</defaultEntry>
</redeliveryPolicyMap>
</redeliveryPolicyMap>
</redeliveryPlugin>
</plugins>
Почему вы говорите **, что это, кажется, работает только для определенных очередей **. Эта конфигурация работает для всех пунктов назначения. –
Нет, на самом деле, конфигурация плагина на redeliveryPlugin не влияет на максимальное значение Redeliveries redeliveryPolicy. Если я поставлю параметр 'jms.redeliveryPolicy.maximumRedeliveries' в URI брокера, я вижу разницу. Конфигурация плагина Redelivery не имеет замечательного эффекта. – thst
У вас включена поддержка планировщика брокера? См. Последнюю строку здесь: http://activemq.apache.org/message-redelivery-and-dlq-handling.html –