Активация брокера ActiveMQ и DLQ не проснулись - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть настройка конфигурации в conf / activemq.xml о повторной доставке и обработке DLQ, как это https://activemq.apache.org/message-redelivery-and-dlq-handling.html

Но когда я пытаюсь вызвать исключение, чтобы увидеть, будет ли это работать. Не работает даже отправка по умолчанию DLQ ActiveMQ.DLQ

@JmsListener(destination = "${queue-name}",
        concurrency="${queue-concurrency}",
        containerFactory="jmsListenerContainerFactory")
public void onMessage(TextMessage message) throws JMSException {

    try {

        LOG.debug("JMS Message = {}", message.getText());
        throw new Exception();

        // Do other thing.

    }
    catch (Exception e) {
        throw new JMSException(e.getMessage());
    }

1 Ответ

0 голосов
/ 06 сентября 2018

Очередь недоставленных сообщений обычно предназначена для сообщений, которые не могут быть доставлены из-за различных факторов (тайм-аут, истечение срока действия, неправильная конфигурация и т. Д.) - поэтому должно быть сообщение, которое не может быть доставлено. В вашем случае, однако, сообщение было доставлено нормально, только не обработано без исключения.

Если вы хотите связать обработку клиента с сообщением, вам следует рассмотреть возможность подтверждения клиента или транзакции. Затем, если вы не подтвердили или не подтвердили, потому что у вас было исключение перед подтверждением / подтверждением, сообщение будет повторно отправлено вашему потребителю - или отправлено в DLQ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...