【问题标题】:ActiveMQ broker redelivery and DLQ not wokingActiveMQ 代理重新传递 DLQ 不工作
【发布时间】:2018-09-06 06:42:53
【问题描述】:

我在 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】:

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

    如果你想将消费者的处理绑定到消息上,你应该考虑客户端确认或事务。然后,如果您不 ack 或 commit,因为您在 ack/commit 之前发生了异常,消息将重复发送给您的消费者 - 或发送给 DLQ。

    【讨论】:

      猜你喜欢
      • 2017-05-02
      • 1970-01-01
      • 2020-03-29
      • 1970-01-01
      • 2017-07-15
      • 2014-08-13
      • 2023-03-29
      • 2015-04-25
      • 2011-01-12
      相关资源
      最近更新 更多