0

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

        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?!

4

2 回答 2

1

我知道这是很久以前的事了,所以它可能对你没有帮助,但一个可能的原因是你没有发送持久消息。如果您的消息不是持久的,ActiveMQ 将丢弃它们而不是将它们发送到 DLQ

于 2011-05-19T21:19:13.567 回答
0

如果它真的被丢弃,它实际上可能是一个错误。我没有尝试重现,但在调试应用程序期间,我实际上遇到了类似的问题(忘记提交事务)并且消息确实发送到了 DLQ。重试几次后..所以如果您确定它们只是被丢弃,那可能是一个错误。

于 2009-12-08T17:40:01.543 回答