DynamicReceive サンプル (BizTalk Server サンプル)
DynamicReceive サンプルは、MQSeries キューの URI が動的に指定されている場合に、MQSeries キューからBizTalk Serverメッセージを受信する方法を示しています。
このサンプルの処理
このサンプルでは、 queueManager、queue、およびサーバー変数で指定された MQSeries キューを動的に作成 します 。 動的受信シナリオを可能にし、MQMD_MsgIdおよびMQMD_CorrelIdメッセージ・プロパティーで指定されたフィルター条件に基づいて、動的に指定された MQSeries キューからBizTalk Serverメッセージを取得します。
このサンプルをデザインした方法とその理由
MQSeries アダプターは、オーケストレーション内のキューの URI アドレスを指定することで、MQSeries キューからメッセージを動的に受信できます。 この機能は、オーケストレーションの送信請求 - 応答の送信ポートを使用して実行されます。
メッセージを動的に受信するには、オーケストレーションの 式 図形で次を指定します。
BizTalk Server メッセージで次のプロパティを設定して動的受信を有効にする: MQSeries.DynamicReceive =
'Yes'
ポート URI を設定して、メッセージの取得元のアドレスを指定します。 必要に応じて、次の内容を指定できます。
メッセージの MQSeries.WaitInterval プロパティを使用して、メッセージを取得する前の待機間隔を指定します。
メッセージを受信するための一致条件を指定します。 一致条件のオプションは、 メッセージ ID、 CorrelationID、 GroupID、 MessageSequenceNumber です。 詳細については、「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 を変更して、応答メッセージを受信するタイミングを指定します。 一致オプションを更新 (または追加) するか、すべてのメッセージを取得する予定の場合は削除します。
サンプルのビルドと実行
サンプルを作成するには
Microsoft Visual Studio で新しいオーケストレーション プロジェクトを作成します。
BizTalk Server メッセージの MQSeries.DynamicReceive プロパティを に設定して、動的受信操作を
'Yes'
有効にします。ポート URI を設定して、メッセージの取得元のアドレスを指定します。
必要に応じて、次の 2 つのプロパティを指定できます。
メッセージの MQSeries.WaitInterval プロパティを使用して、メッセージを取得する前に待機間隔を指定します。
メッセージを受信するための一致条件を指定します。 詳細については、「一致条件」のヘルプを参照してください。
オーケストレーションの次の変数を変更して、メッセージの取得元を指定します。
- Queue、 queueManager、および サーバー。 これらは 、式 図形に URI を作成するために使用されます。
[ 式 ] 図形を変更して、必要に応じて動的キューの作成と一致オプションをコメントアウトします。
次のいずれかの方法で、プロジェクトをビルドおよび展開できます。
ソリューションを開き、ソリューション エクスプローラーでプロジェクトを右クリックし、[ プロパティ ] をクリックしてプロジェクトのプロパティを表示します。 [署名] タブの [厳密な名前のキー ファイルの選択] ドロップダウン ボックスで[新規...>] をクリック<します。 次に、キー ファイル名を指定して展開します。
setup.bat ファイルを実行することもできます。このファイルは、キー ファイルを作成し、プロジェクトをビルドして展開します。
サンプルを実行するには
オーケストレーションを BizTalk ホストにバインドします。
オーケストレーションにより作成されたファイル受信ポートを有効にします。 ファイルの受信場所を c:\temp\in から適切なファイル フォルダーに変更します。
作成された 2 つの送信ポートを参加させ、開始します。 一方のポートは動的な送信要求 - 応答ポートで、もう一方はファイル送信ポートであり、メッセージが送信されるキューです。 これが正しい場所に設定されていることを確認します。
オーケストレーションを開始するには、入力フォルダーのファイルを削除します。 これにより、MQSeries アダプターが呼び出され、指定されたサーバー上の MQSAgent2 COM+ コンポーネントが呼び出されてメッセージが取得されます。 受信したメッセージは、ファイル送信ポートで指定されているフォルダーの場所に表示されます。
式図形で指定された条件に一致するメッセージが見つからない場合は、ダミー メッセージが出力フォルダーにドロップされます。 一致オプションを無効にするには、[ 式] 図形の最後の 2 行をコメントアウトします。
説明
動的に作成されたキューが削除されていない場合は、次のオーケストレーション インスタンスがアクティブ化されたときにエラーが発生します。
URI を動的に設定する方法は他にもあります。このサンプルでは、1 つのオプションのみを指定しています。 たとえば、メッセージ コンテキスト内のプロパティを読み込むことで、URI を設定できます。
一致オプションを満たすメッセージがキューにない場合は、ダミーのメッセージが返されます。
このサンプルでは動的送信ポートが使用されているため、再試行やトランザクションなど、他のオプションを指定する必要がある場合があります。 アダプターによって公開されるコンテキスト プロパティを使用して、メッセージを動的な送信請求 - 応答ポートに送信する前にこれらのオプションを設定します。
MQSeries キューは、 MQSAdapterAdmin2 インターフェースを使用して動的に作成および削除できます。 MQSeries キューを動的に作成する方法の例については、 の「キュー管理のサポート」 https://go.microsoft.com/fwlink/?LinkId=89400を参照してください。