ActiveMQ经纪人重新发送和DLQ没有工作

问题描述 投票:0回答:1

我在conf / activemq.xml中设置了关于Redelivery和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());
    }
spring jms activemq spring-jms
1个回答
0
投票

死信函队列通常用于因各种因素(超时,过期,配置错误等)而无法传递的消息 - 因此必须存在无法传递的消息。但是,在您的情况下,消息传递正常,只是没有处理,没有例外。

如果要将使用者的处理绑定到消息,则应考虑客户端确认或事务。然后,如果您没有确认或提交,因为您在ack / commit之前有异常,该消息将重复发送给您的消费者 - 或发送到DLQ。

© www.soinside.com 2019 - 2024. All rights reserved.