アグリゲーター (BizTalk Server サンプル)
このサンプルの目的は、オーケストレーションとパイプラインを使用してメッセージ アグリゲーション機能を構築することです。 特に、以下のことを行うオーケストレーションを構築します。
関連付けられた複数のメッセージを受信します。 各メッセージは、メッセージのコンテンツから取り出した宛先パートナーの URI 情報に基づいて関連付けられます。
XML 送信パイプラインを実行することで、受信したメッセージを単一のインターチェンジ バッチにアグリゲートします。
1 分ごとか、アグリゲートするのに十分なメッセージを受信した場合はすぐに XML インターチェンジ メッセージを生成します。
このサンプルの場所
<Samples Path>\Pipelines\Aggregator
次の表に、このサンプルのファイル一覧を示します。
ファイル | 説明 |
---|---|
Aggregator.sln | サンプルの Visual Studio ソリューション ファイルです。 |
AggretatorBinding.xml | サンプルのバインド ファイルです。 |
Cleanup.bat | アセンブリを展開解除し、グローバル アセンブリ キャッシュ (GAC) から削除するために使用されます。 送信ポートと受信ポートが削除されます。 必要に応じて、Microsoft インターネット インフォメーション サービス (IIS) の仮想ディレクトリが削除されます。 |
Setup.bat | このサンプルをビルドおよび初期化するために使用されます。 |
Aggregate フォルダー内: Aggregate.btproj |
オーケストレーションをアグリゲートするための BizTalk プロジェクトです。 |
Aggregator フォルダー内: Aggregate.odx |
関連付けられているメッセージを 1 か所に集め、送信パイプラインを実行して単一のインターチェンジに組み立てるオーケストレーションです。 |
Aggregate フォルダー内: SuspendMessage.odx |
アグリゲート オーケストレーション内で処理できない保留メッセージに対して使用するオーケストレーションです。 |
PipelinesAndSchemas フォルダー内: FFReceivePipeline.btp |
フラット ファイル逆アセンブラーを使用した受信パイプラインです。 |
PipelinesAndSchemas フォルダー内: Instance1.txt、Instance2.txt、Instance3.txt、Instance4.txt |
サンプルのドキュメント インスタンスです。 Instance1.txt と Instance2.txt は、宛先パートナー http://www.contoso.com のインターチェンジに追加する必要があります。一方、Instance3.txt と Instance4.txt は、宛先パートナー http://www.northwind.com のインターチェンジに追加する必要があります。 |
PipelinesAndSchemas フォルダー内: Invoice.xsd、InvoiceEnvelope.xsd |
出力インターチェンジのドキュメント スキーマとエンベロープ スキーマです。 |
PipelinesAndSchemas フォルダー内: PipelinesAndSchemas.btproj |
スキーマとパイプラインの BizTalk プロジェクトです。 |
PipelinesAndSchemas フォルダー内: PropertySchema.xsd |
サンプルのプロパティ スキーマです。 |
PipelinesAndSchemas フォルダー内: XMLAggregatingPipeline.btp |
収集されたメッセージを XML インターチェンジに組み立てるために、オーケストレーションから実行される送信パイプラインです。 |
サンプルのビルドおよび初期化
次の手順を使用して、アグリゲーターのサンプルをビルドおよび初期化します。
アグリゲーターのサンプルをビルドおよび初期化するには
コマンド ウィンドウで、次のフォルダーに移動します。
<Samples Path>\Pipelines\Aggregator
ファイル Setup.bat を実行すると、次のアクションが実行されます。
次のフォルダに、このサンプル用の入力 (In) フォルダと出力 (Out) フォルダを作成します。
<Samples Path>\Pipelines\Aggregator
このサンプル用に Visual Studio プロジェクトをコンパイルします。
新しいアプリケーション Aggregator Sample を作成し、そこにサンプル アセンブリを展開します。
BizTalk Server の受信場所、送信ポート、および受信ポートを作成しバインドします。
オーケストレーションを参加させて開始し、受信場所を有効化し、送信ポートを開始します。
ファイル Setup.bat を実行せずにこのサンプルのプロジェクトを開いてビルドする場合は、まず、.NET Framework厳密な名前ユーティリティ (sn.exe) を使用して厳密な名前キーペアを作成する必要があります。 このキー ペアを使用して、結果のアセンブリに署名します。
このサンプルを実行する前に、BizTalk Server において、作成プロセスおよび初期化プロセスでエラーが報告されていないことを確認してください。
Setup.bat によって行われた変更を元に戻すには、Cleanup.bat を実行します。 Setup.bat を 2 回目に実行する場合は、その前に Cleanup.bat を実行してください。
サンプルの実行
次の手順を使用して、アグリゲーターのサンプルを実行します。
アグリゲーターのサンプルを実行するには
PipelinesAndSchemas フォルダーにあるファイル Instance1.txt と Instance2.txt を開き、その内容を確認します。
両方のファイルで DestinationPartnerURI 要素に値
http://www.contoso.com
が含まれていることに注意してください。 この値は、これら 2 つのメッセージを 1 つのインターチェンジに追加できるように相互に関連付けるために使用されます。同様に、Instance3.txt ファイルと Instance4.txt ファイルには DestinationPatnerURI 要素が に
http://www.northwind.com
設定されています。これら 2 つのメッセージが、別の 1 つのインターチェンジに追加されます。
テキスト ファイル Instance1.txt、Instance2.txt、Instance3.txt、Instance4.txt のコピーを、フォルダー In に貼り付けます。
アグリゲート オーケストレーションにより、10 個のメッセージを収集するか、1 分のタイムアウトが経過した後に、出力インターチェンジが生成されます。 そのため、Out フォルダー内にはファイルが遅れて作成されます。
タイムアウトを避けるには、4 つの入力ファイルをさらに 4 回貼り付けます。これにより、アグリゲート オーケストレーションによるインターチェンジの生成が起動されます。
Out フォルダーに作成された XML ファイルを確認します。宛先パートナー URI ごとに 1 つずつ、2 つのファイルが必要です。
いずれかのファイルを開いて内容を確認します。 ファイルには XML インターチェンジが 1 つ格納されており、その中には 1 つのエンベロープがあり、さらにその中に 2 つの XML ドキュメントがあります。
注意
サンプル実装では、コンボイ シナリオにおいて、高負荷時に "配布されましたが、消費されませんでした" または "メッセージを破棄して完了" のエラーが発生します。 これは、メッセージが終了途中のビジネス プロセスにルーティングされた場合や、予期せぬメッセージがビジネス プロセスに到着した場合に必ず発生します。