Почему мои транзакционные сообщения ActiveMQ удаляются, а не перемещаются в DLQ?

Я создаю своего потребителя (на С# с использованием библиотеки 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?!


person TheSoftwareJedi    schedule 08.12.2009    source источник


Ответы (2)


Я знаю, что это было давно, поэтому, вероятно, это вам не поможет, но одной из возможных причин этого является то, что вы не отправляете постоянные сообщения. Если ваши сообщения не являются постоянными, ActiveMQ вместо этого отклонит их. отправки их в DLQ.

person Brendan Long    schedule 19.05.2011

Если он действительно отбрасывается, это может быть ошибка. Я не пытался воспроизвести, но во время отладки приложения у меня действительно была аналогичная проблема (забыл зафиксировать транзакцию), и сообщения действительно отправлялись в DLQ. после повторной попытки пару раз ... так что, если вы уверены, что они просто отбрасываются, это может быть ошибка.

person Noctris    schedule 08.12.2009
comment
На 100% уверен, что их не заметят. Также на 100% уверен, что я не совершаю. Однако это происходит не постоянно, и я могу воспроизвести. - person TheSoftwareJedi; 08.12.2009