我创建了我的消费者(使用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?!
答案 0 :(得分:1)
我知道这是很久以前所以它可能对你没有帮助,但是一个可能的原因就是你没有发送持久性消息。如果您的邮件不是永久性的,ActiveMQ will discard them instead of sending them to the DLQ。
答案 1 :(得分:0)
如果它真的被丢弃了,它可能实际上是一个错误。我没有尝试重现,但在调试aplpication期间,我实际上有一个类似的问题(忘了提交事务),消息确实转到了DLQ。重试几次后......如果你确定它们被丢弃了,那可能就是一个错误。