0

コンシューマーを(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に送信されるのではなく、破棄されるのはなぜですか?!

4

2 に答える 2

1

これはかなり前のことであるため、おそらく役に立たないことはわかっていますが、考えられる理由の1つは、永続的なメッセージを送信していないことです。メッセージが永続的でない場合、ActiveMQはメッセージをDLQに送信する代わりに破棄します

于 2011-05-19T21:19:13.567 に答える
0

それが本当に破棄されている場合、それは実際にはバグである可能性があります。再現しようとはしていませんが、アプリケーションのデバッグ中に、実際に同様の問題が発生し(トランザクションをコミットするのを忘れた)、メッセージがDLQに送信されました。数回再試行した後..したがって、それらが破棄されることが確実な場合は、バグである可能性があります。

于 2009-12-08T17:40:01.543 に答える