0

以下のような IBM MQ の C# リスナーがあります。ここに記載されているリスナー メソッドのみ。

private void OnMessage(IMessage msg)
{
    try
    {

        ITextMessage textMsg = (ITextMessage)msg;
        Console.Write("Got a message: ");
        Console.WriteLine(textMsg.Text);

    }
    catch(Exception ex)
    {
    }
}

キュー内でテキスト形式のメッセージに到達するたびに、上記のリスナーが呼び出され、値を読み取ることができます。

問題は、リスナーを停止してからメッセージをプッシュすると、そのメッセージが MQ エクスプローラーに保持されることです。しかし、リスナー メソッドが呼び出された場合、メッセージは常にリスナー メソッドから読み取られた直後に「Web Sphere MQ Explorer」から削除されていました。リスナーがメッセージを読んだ後でもメッセージを保持するには、さらに構成を設定する必要がありますか?

4

2 に答える 2

3

キューからメッセージを読み取る方法は 2 つあります。

  • 破壊的取得 (デフォルト)
  • 非破壊的な get (ブラウズ) を使用する

キュー内のメッセージのみをブラウズしたい場合は、非破壊的な get を使用してください。

于 2013-11-06T21:37:32.653 に答える
1

これが予期される動作です。キュー内のメッセージは、アプリケーション (つまり、OnMessageメソッド) によって消費されています。WebSphere MQ は、メッセージがキューに到着するとすぐに、待機中のコンシューマー アプリケーションにメッセージを配信します。

メッセージをキューに残しておきたい場合は、すべてのコンシューマー アプリケーションを停止する必要があります。

于 2013-11-06T12:49:05.613 に答える