为什么我的事务性ActiveMQ消息被丢弃而不是移动到DLQ?

时间:2009-12-08 16:22:10

标签: transactions activemq

我创建了我的消费者(使用NMS库在C#中):

        ConnectionFactory factory = new ConnectionFactory(_mqServer);
        _con = factory.CreateConnection();
        _con.Start();
        _session = _con.CreateSession(AcknowledgementMode.Transactional);
        _queue = _session.GetQueue(_mqQueue);
        _consumer = _session.CreateConsumer(_queue, "someproperty = 'someValue'");

当我收到一条消息并且没有在会话上调用Commit时,它会返回原始队列。然后它再次尝试重新传输5次,然后被丢弃。为什么要丢弃消息而不是发送到DLQ?!

2 个答案:

答案 0 :(得分:1)

我知道这是很久以前所以它可能对你没有帮助,但是一个可能的原因就是你没有发送持久性消息。如果您的邮件不是永久性的,ActiveMQ will discard them instead of sending them to the DLQ

答案 1 :(得分:0)

如果它真的被丢弃了,它可能实际上是一个错误。我没有尝试重现,但在调试aplpication期间,我实际上有一个类似的问题(忘了提交事务),消息确实转到了DLQ。重试几次后......如果你确定它们被丢弃了,那可能就是一个错误。