AppDynamics .NET エージェント(エージェント)は、インストゥルメント化されたティアが MSMQ へのコールを実行すると、MSMQ バックエンドを自動検出します。MSMQ イグジットポイントは、メッセージをキューにパブリッシュまたはプッシュするメソッドです。MSMQ トランスポート経由で NServiceBus を使用している場合は、「.NETのNServiceBusバックエンド」を参照してください。

MSMQ エントリポイントは、キュー内の新しいメッセージをリッスンまたはポーリングするメソッドです。エージェントが MSMQ のエントリポイントを検出したり、ダウンストリーム相関を実行する前に、相関フィールドを定義し、マルチスレッド アーキテクチャの場合はスレディングアーキテクチャを指定する必要があります。

イグジットポイントとバックエンドの命名

システムから返されたキュー名が、エージェントによりキューに命名されます。

エントリポイント

MSMQ のダウンストリーム相関を有効化するには、エージェントを構成する必要があります。

MSMQ 相関フィールドの定義

msmq-correlation-field  アプリケーション エージェント ノード プロパティをパブリッシュティアとレシーブティアの両方に登録します。エージェントが相関情報を書き込むまたは読み取るフィールドを指定します。

このエージェントは次のフィールドに対応しています。

  • 拡張、デフォルトフィールド
  • ラベル

デフォルトでは、.NET エージェントは [Extension] フィールドに書き込みます。ただし、MSMQ でビルドされた一部のフレームワークはデータを [Extension] フィールドに書き込みます。この場合、すでに使用されているため [Extension] フィールドは動作しないので、.NET エージェントが相関データを [Label] フィールドに書き込むように構成する必要があります。

キューの実装に使用されていないフィールドを選択します。実装に「ラベル」と「拡張子」フィールドの両方が使用されている場合、現段階ではダウンストリーム相関は不可能です。

アプリケーションエージェントのノードプロパティ参照資料」の「msmq-correlation-field」を参照してください。ノードプロパティの登録方法については「アプリケーションエージェントのノードプロパティ」を参照してください。

スレディングアーキテクチャの指定

キューの実装でマルチスレッド アーキテクチャを使用する場合、msmq-single-threaded アプリケーション エージェント ノード プロパティを登録して、スレディングアーキテクチャを指定する必要があります。MSMQ のマルチスレッド実装の場合は、msmq-single-threaded を "false" に設定します。「アプリケーションエージェントのノードプロパティ参照資料」の「msmq-single-threaded」を参照してください。ノードプロパティの登録方法については「アプリケーションエージェントのノードプロパティ」を参照してください。

スレディングアーキテクチャは、エージェントのメッセージキューに対するコールのタイミングの計算方法を決定します。

  • シングルスレッドキューの場合、エージェントは各受信リクエストの間のコールタイムを計算する。コールタイムは、最初の受信メソッドの終了時に始まり、次の受信メソッドの開始時に終了。
    以下の例では、ProcessMessage() メソッドの長さ。

    MessageQueue messageQueue;
    for(;;)
    {
            var message = messageQueue.Receive();
            ProcessMessage(message);
    }
    CODE
  • マルチスレッドキューの場合、エージェントによりタイミングはキャプチャされない。