次の方法で共有


DynamicReceive サンプル (BizTalk Server サンプル)

DynamicReceive サンプルは、MQSeries キューの URI が動的に指定されている場合に、MQSeries キューからBizTalk Serverメッセージを受信する方法を示しています。

このサンプルの処理

このサンプルでは、 queueManager、queue、およびサーバー変数で指定された MQSeries キューを動的に作成 します 。 動的受信シナリオを可能にし、MQMD_MsgIdおよびMQMD_CorrelIdメッセージ・プロパティーで指定されたフィルター条件に基づいて、動的に指定された MQSeries キューからBizTalk Serverメッセージを取得します。

このサンプルをデザインした方法とその理由

MQSeries アダプターは、オーケストレーション内のキューの URI アドレスを指定することで、MQSeries キューからメッセージを動的に受信できます。 この機能は、オーケストレーションの送信請求 - 応答の送信ポートを使用して実行されます。

メッセージを動的に受信するには、オーケストレーションの 図形で次を指定します。

  1. BizTalk Server メッセージで次のプロパティを設定して動的受信を有効にする: MQSeries.DynamicReceive = 'Yes'

  2. ポート URI を設定して、メッセージの取得元のアドレスを指定します。 必要に応じて、次の内容を指定できます。

    • メッセージの MQSeries.WaitInterval プロパティを使用して、メッセージを取得する前の待機間隔を指定します。

    • メッセージを受信するための一致条件を指定します。 一致条件のオプションは、 メッセージ IDCorrelationIDGroupIDMessageSequenceNumber です。 詳細については、「BizTalk Serverに関連するプロパティ」https://go.microsoft.com/fwlink/?LinkId=89396を参照してください。

    これらのプロパティを使用してメッセージを作成した後、送信請求 - 応答の送信ポートを使用してメッセージを MQSeries キューに送信します。 ポートによって、選択した一致オプションを使用して指定された URI からメッセージを受信するアダプターが指定されます。 次のアクションの結果:

  • メッセージを取得するためのフィルター条件が満たされると、キューからメッセージが取得され、オーケストレーションに返されます。

  • メッセージを取得するためのフィルター条件が満たされない場合は、ダミーの応答が返されます。 これは、指定したオプションがキューからメッセージを返さなかったことを示します。

    動的受信機能を使用することで、固定した受信場所が不要になるため、柔軟性が高まります。 実行時まで URI がわからない場合もあります。 動的受信機能を使用すると、メッセージの取得元を動的に決定できます。 これは、オーケストレーション内でキュー コントラクトを実装する必要がないことも意味します。 指定した一致条件に基づいて MQSeries キューから動的に指定された URI を使用することで、メッセージの取得を待機できます。

このサンプルの場所

<サンプル パス>\Samples\AdaptersUsage\MQSeriesAdapter\DynamicReceive

次の表は、このサンプルのファイルとその目的を示しています。

ファイル 説明
DynamicReceive.btproj、

DynamicReceive.sln
アプリケーションのプロジェクトおよびソリューション ファイル。
DynamicReceive e.odx アプリケーションの BizTalk オーケストレーション ファイル。
Setup.bat キー ファイルを作成し、プロジェクトをコンパイルして配置するバッチ ファイル。

このサンプルの使用方法

ソリューションに適した Microsoft.XLANGs.BaseTypes.Address を 指定します。 MQSeries.WaitInterval を変更して、応答メッセージを受信するタイミングを指定します。 一致オプションを更新 (または追加) するか、すべてのメッセージを取得する予定の場合は削除します。

サンプルのビルドと実行

サンプルを作成するには

  1. Microsoft Visual Studio で新しいオーケストレーション プロジェクトを作成します。

  2. BizTalk Server メッセージの MQSeries.DynamicReceive プロパティを に設定して、動的受信操作を'Yes'有効にします。

  3. ポート URI を設定して、メッセージの取得元のアドレスを指定します。

  4. 必要に応じて、次の 2 つのプロパティを指定できます。

    1. メッセージの MQSeries.WaitInterval プロパティを使用して、メッセージを取得する前に待機間隔を指定します。

    2. メッセージを受信するための一致条件を指定します。 詳細については、「一致条件」のヘルプを参照してください。

  5. オーケストレーションの次の変数を変更して、メッセージの取得元を指定します。

    • QueuequeueManager、および サーバー。 これらは 、式 図形に URI を作成するために使用されます。
  6. [ ] 図形を変更して、必要に応じて動的キューの作成と一致オプションをコメントアウトします。

  7. 次のいずれかの方法で、プロジェクトをビルドおよび展開できます。

    • ソリューションを開き、ソリューション エクスプローラーでプロジェクトを右クリックし、[ プロパティ ] をクリックしてプロジェクトのプロパティを表示します。 [署名] タブの [厳密な名前のキー ファイルの選択] ドロップダウン ボックスで[新規...>] をクリック<します。 次に、キー ファイル名を指定して展開します。

    • setup.bat ファイルを実行することもできます。このファイルは、キー ファイルを作成し、プロジェクトをビルドして展開します。

サンプルを実行するには

  1. オーケストレーションを BizTalk ホストにバインドします。

  2. オーケストレーションにより作成されたファイル受信ポートを有効にします。 ファイルの受信場所を c:\temp\in から適切なファイル フォルダーに変更します。

  3. 作成された 2 つの送信ポートを参加させ、開始します。 一方のポートは動的な送信要求 - 応答ポートで、もう一方はファイル送信ポートであり、メッセージが送信されるキューです。 これが正しい場所に設定されていることを確認します。

  4. オーケストレーションを開始するには、入力フォルダーのファイルを削除します。 これにより、MQSeries アダプターが呼び出され、指定されたサーバー上の MQSAgent2 COM+ コンポーネントが呼び出されてメッセージが取得されます。 受信したメッセージは、ファイル送信ポートで指定されているフォルダーの場所に表示されます。

  5. 図形で指定された条件に一致するメッセージが見つからない場合は、ダミー メッセージが出力フォルダーにドロップされます。 一致オプションを無効にするには、[ 式] 図形の最後の 2 行をコメントアウトします。

説明

  • 動的に作成されたキューが削除されていない場合は、次のオーケストレーション インスタンスがアクティブ化されたときにエラーが発生します。

  • URI を動的に設定する方法は他にもあります。このサンプルでは、1 つのオプションのみを指定しています。 たとえば、メッセージ コンテキスト内のプロパティを読み込むことで、URI を設定できます。

  • 一致オプションを満たすメッセージがキューにない場合は、ダミーのメッセージが返されます。

  • このサンプルでは動的送信ポートが使用されているため、再試行やトランザクションなど、他のオプションを指定する必要がある場合があります。 アダプターによって公開されるコンテキスト プロパティを使用して、メッセージを動的な送信請求 - 応答ポートに送信する前にこれらのオプションを設定します。

  • MQSeries キューは、 MQSAdapterAdmin2 インターフェースを使用して動的に作成および削除できます。 MQSeries キューを動的に作成する方法の例については、 の「キュー管理のサポート」 https://go.microsoft.com/fwlink/?LinkId=89400を参照してください。