В вашем примере важно отметить, что если вы добавили RedeliveryPolicy в конфигурацию вашего брокера И в конфигурацию вашего соединения, вы дублируете усилия. Ваше сообщение получит retries=(number of connection retries) * (number of broker retries)
. Таким образом, в вашем случае, если число повторных попыток подключения равно 3, а у брокера RedeliveryPolicy - 3, ваше сообщение будет повторено 9 раз! Рекомендуется просто установить политику повторных попыток подключения и позволить посреднику обрабатывать повторную диспетчеризацию, чтобы он мог перераспределить сообщение о кластере посредников.
Я думал, что существует заголовок ActiveMQ, который делает то, что вы требуется, когда сообщение повторяется или доставляется, но оно не указано в документации, и после того, как я настроил посредника и DLQ-сообщения специально, я не вижу установленных заголовков сообщений. Это подтверждается следующим образом: https://github.com/apache/activemq/blob/master/activemq-broker/src/main/java/org/apache/activemq/broker/util/RedeliveryPlugin.java#L181
Можно написать небольшое улучшение для брокера, чтобы [опционально] увеличить заголовок счетчика повторных поставок в этой строке, и я уверен, что патч будет приветствоваться сообществом.