ActiveMQ 5.1.5: IndividualDeadLetterStrategy не работает должным образом - PullRequest
0 голосов
/ 14 февраля 2020

Я пытаюсь настроить DLQ для каждой очереди на основе следующей конфигурации, как описано здесь :

<!-- Set the following policy on all queues using the '>' wildcard -->
<policyEntry queue=">">
   <deadLetterStrategy>
      <!--
         Use the suffix 'DLQ.' for the destination name, and make
         the DLQ a queue rather than a topic
      -->
      <individualDeadLetterStrategy queueSuffix=".DLQ" useQueueForQueueMessages="true"/>
   </deadLetterStrategy>
</policyEntry>

Я использую виртуальные темы, поэтому у меня есть topi c названный как

VirtualTopic.Things.1.0

, что означает, что я могу создать Очередь с именем

Consumer.Me.VirtualTopic.Things.1.0

для автоматической подписки на эту топи c.

Приведенное выше individualDeadLetterStrategy создает DLQ с именем:

ActiveMQ.DLQ.Queue.Consumer.Me.VirtualTopic.Things.1.0.DLQ

Я надеялся просто

Consumer.Me.VirtualTopic.Things.1.0.DLQ

Мои ожидания верны? Я сделал что-то не так?

1 Ответ

1 голос
/ 14 февраля 2020

Значение по умолчанию queuePrefix равно ActiveMQ.DLQ.Queue., а значение по умолчанию queueSuffix пусто. Поскольку вы используете queueSuffix=".DLQ", а не определяете queuePrefix, он создает очереди с префиксом по умолчанию и вашим пользовательским суффиксом, в результате чего получается ActiveMQ.DLQ.Queue.<queueName>.DLQ. Если вы не хотите использовать префикс по умолчанию, вы должны установить queuePrefix="", например:

<individualDeadLetterStrategy queuePrefix="" queueSuffix=".DLQ" useQueueForQueueMessages="true"/>
...