MQSCorrelationSetOrchestrationWithSolicitResponse (BizTalk Server サンプル)
MQSCorrelationSetOrchestrationWithSolicitResponse サンプルでは、BizTalk Server ではなく、MQSeries Server によって作成された関連付け識別子を使用する方法を示します。
このサンプルの処理
オーケストレーションは、メッセージ ヘッダーの MQMD_MsgID プロパティに空の値を含むメッセージを送信します。 MQSeries は MessageID と CorrelationID を生成し、アダプターの送信請求/応答送信ポートの応答の一部として 、MQMD_MsgID および MQMD_CorrelId に割り当てられた値を含むメッセージを返します。 オーケストレーションでは、生成された関連付け識別子を使用して関連付けセットを初期化し、メッセージの MQMD_CorrelId プロパティを確認することで、後続の受信場所で関連付けセットに従います。 また、アダプターは関連付け識別子を BizTalk_CorrelationIDに割り当てます。これはオーケストレーションでも使用できます。 アダプターで関連付け識別子を使用する方法の詳細については、「 Request-Reply を使用したメッセージの関連付け」を参照してください。
重要
この方法を使用するオーケストレーションでは、MQSeries Server からのメッセージを関連付け識別子より前に受信すると、問題が発生する場合があります。 オーケストレーションをデザインするときは、MQSeries Server が関連付け識別子を返すことができるよう、処理時間を十分にとるようにしてください。 この例では、このような競合状態が発生する可能性については考慮していません。
このサンプルの場所
<サンプル Path>\AdaptersUsage\MQSeriesAdapter\MQSCorrelationSetOrchestrationWithSolicitResponse
次の表は、このサンプルのファイルとその目的を示しています。
[最近使ったファイル] | 説明 |
---|---|
MQSCorrelationSolicitResponse.btproj、 MQSCorrelationSolicitResponse.sln |
アプリケーションのプロジェクトおよびソリューション ファイル。 |
MQSCorrelationSolicitResponse.odx | アプリケーションの BizTalk オーケストレーション ファイル。 |
MQSCorrelationSolicitResponse.snk | 厳密な名前のキー ファイル。 |
Setup.bat | このサンプルを作成および初期化します。 |
このサンプルの使用方法
アプリケーションを作成するには、次の手順を実行します。
MQSeries キューを 2 つ作成します。
BizTalk Server 受信場所と送信ポートを設定します。
受信場所を有効化します。
送信ポートを開始します。
必要なフォルダーを作成します。
オーケストレーションを変更します。
オーケストレーションを展開してバインドし、開始します。
MQSeries Server for Windows のインストールに必要なアクセス許可を持っている場合は、アダプターのダイアログ ボックスを使用して MQSeries キューを作成できるため、次の手順を省略できます。 必要なアクセス許可がない場合は、IBM WebSphere MQ エクスプローラーを使用してキューを作成できます。 WebSphere MQ エクスプローラーを使用してキューを作成するには、次の手順を実行します。
WebSphere MQ エクスプローラーを使用した MQSeries キューの作成
WebSphere MQ エクスプローラーを使用して MQSeries キューを作成するには
[スタート] をクリックし、[すべてのプログラム] をポイントし、[WebSphere MQ] をポイントして、[WebSphere MQ エクスプローラー] をクリックします。
[キュー マネージャー] をダブルクリックし、既定のキュー マネージャーをダブルクリックします。 通常、既定のキュー マネージャーには QM_<という名前が付けられますmachine_name>machine_nameはコンピューターの名前です。
[ キュー] を右クリックし、[ 新規] をポイントして、[ ローカル キュー] をクリックします。
[ ローカル キューの作成 ] ダイアログ ボックスの [ キュー名] に「REPLYTOQ」と入力し、[OK] をクリック します。
[ キュー] を右クリックし、[ 新規] をクリックし、[ ローカル キュー] をクリックします。
[ ローカル キューの作成 ] ダイアログ ボックスの [ キュー名] に「SOLICITRESPONSEQ」と入力し、[OK] をクリック します。
受信場所と MQSeries キューの作成
この手順では、MQSeries へのメッセージ送信および MQSeries からの関連メッセージの受信を行うための送信ポートと受信場所を作成します。 MQSeries キューは、受信場所がまだ作成されていない場合に受信場所を作成したときにも作成されます。
受信場所と MQSeries キューを作成するには
BizTalk Server管理コンソールを開きます。
[BizTalk Server管理] を展開し、[BizTalk グループ] を展開し、[アプリケーション] を展開して、必要なアプリケーションを展開します。
[ 受信ポート] を右クリックし、[ 新規] をポイントして、[ 一方向の受信ポート] をクリックします。
[ 一方向の受信ポートのプロパティ ] ダイアログ ボックスの [名前 ] ボックスに「MQReply」と入力し、[OK] をクリック します。
左側のウィンドウで、[ 受信場所 ] タブをクリックし、[ 新規] をクリックします。
[ 受信場所のプロパティ ] ダイアログ ボックスの [名前 ] ボックスに「MQReply」と入力します。
[ トランスポートの種類 ] ボックスで、[ MQSeries] を選択します。
[ 受信ハンドラー ] ボックスで、 BizTalkServerApplication を選択します。
[ 受信パイプライン ] ボックスで、[ Microsoft.BizTalk.DefaultPipelines.PassThruReceive] を選択します。
[構成] をクリックします。
[ MQSeries トランスポートのプロパティ ] ダイアログ ボックスの [ ポーリング間隔 ] ボックスに「10」と入力します。
[ キュー定義 ] ボックスで、省略記号 (...) ボタンをクリックします。
[ キュー定義 ] ダイアログ ボックスの [ サーバー名 ] ボックスに、コンピューター名を入力します。
[ キュー マネージャー ] ボックスで、既定のキュー マネージャーを選択します。
[ キュー ] ボックスに「REPLYTOQ」と入力し、[ エクスポート] をクリックします。
[ エクスポート ] ダイアログ ボックスで、[ キューの作成] をクリックし、すべてのダイアログ ボックスを終了するまで[OK]または [完了 ] をクリックします。
送信ポートと MQSeries キューの作成
送信ポートと MQSeries キューを作成するには
[ 送信ポート] を右クリックし、[ 新規] をポイントして、[ 静的一方向送信ポート] をクリックします。
[ 送信ポートのプロパティ ] ダイアログ ボックスの [名前 ] ボックスに「MQSolicitResponse」と入力します。
[ トランスポートの種類 ] ボックスで、[ MQSeries] を選択します。
[ 送信パイプライン ] ボックスで、[ Microsoft.BizTalk.DefaultPipelines.PassThruTransmit] を選択します。
[ 受信パイプライン ] ボックスで、[ Microsoft.BizTalk.DefaultPipelines.PassThruReceive] を選択します。
[構成] をクリックします。
[ MQSeries トランスポートのプロパティ ] ダイアログ ボックスの [ キュー定義 ] ボックスで、省略記号 (...) ボタンをクリックします。
[ キュー定義 ] ダイアログ ボックスの [ サーバー名 ] ボックスに、コンピューター名を入力します。
[ キュー マネージャー ] ボックスで、既定のキュー マネージャーを選択します。
[ キュー ] ボックスに「SOLICITRESPONSEQ」と入力し、[ エクスポート] をクリックします。
[エクスポート] ダイアログ ボックスで、[ キューの作成] をクリックし、すべてのダイアログ ボックスを終了するまで [OK] または [完了 ] をクリックします。
受信場所の有効化と送信ポートの開始
この手順では、オーケストレーション内でファイルを受信するために必要なフォルダーを作成し、関連付けられたメッセージと応答メッセージを出力フォルダーに送信します。
受信場所を有効にして送信ポートを開始するには
BizTalk Server管理コンソールで、[受信ポート] をクリックします。
詳細ペインで、 MQIn 受信場所を右クリックし、[ 有効にする] をクリックします。
詳細ペインで、 MQOut 送信ポートを右クリックし、[開始] をクリックします 。
アプリケーションが使用するフォルダーの作成
アプリケーションが使用するフォルダーを作成するには
C:\ ドライブに "temp" という名前のフォルダーが存在しない場合は、これを作成します。
"Pickup2"、"Dropit2"、"MoveIt" という名前の C:\temp ディレクトリの下にフォルダーを作成します。
アプリケーションが使用するオーケストレーションの変更
この手順では、アプリケーションが使用するオーケストレーションを変更します。
アプリケーションで使用されるオーケストレーションを変更するには:
Microsoft Visual Studio で、ソリューション ファイル MQSCorrelationSolicitResponse.sln をダブルクリックして、ソリューションを開きます。
ソリューション エクスプローラー ペインで、オーケストレーション MQSCorrelationSolicitResponse.odx をダブルクリックしてオーケストレーションを表示します。
メッセージ割り当て図形 MessageAssignment_1 をダブルクリックして、BizTalk 式エディターを起動します。
次の式で、該当する MQSeries キュー マネージャーの名前を入力します。
MQSeriesRequestSendMessage(MQSeries.MQMD_ReplyToQMgr) = "QM_<machine_name>";
BizTalk から送信される応答メッセージに、先頭の 100 バイトだけではなく、元のメッセージの内容をすべて含める場合は、BizTalk 式エディターで次の行を変更します。
変更前:
MQSeriesRequestSendMessage(MQSeries.MQMD_Report) = 768;
次の内容に変更:
MQSeriesRequestSendMessage(MQSeries.MQMD_Report) = 1792;
BizTalk 式エディターで、[OK] を クリックして変更した式を保存します。
Visual Studio で [ ファイル] を選択し、[ すべて保存] を選択します。
サンプルのビルドとデプロイ
この手順では、このアプリケーションで使用するオーケストレーションを含むソリューションをビルドして展開します。
サンプルをビルドして展開するには
コマンド ウィンドウで、次のフォルダーに移動します。
<Samples Path>\AdaptersUsage\MQSeriesAdapter\MQSCorrelationSetOrchestrationWithSolicitResponse
次のアクションを実行するファイル Setup.bat を実行します。
プロジェクトの厳密な名前のキー ファイルを作成します。
オーケストレーション プロジェクトをコンパイルして展開します。
ファイル アダプター用の送信ポートと受信ポートを作成します。
Note
このオーケストレーションでは、ファイル アダプターとのファイルの送受信に使用するバインドが指定されているため、オーケストレーションの展開時には、ファイルをオーケストレーション内で受信し、関連付けメッセージと応答メッセージを出力するために必要な送信ポート、受信ポート、および受信場所が作成されます。
オーケストレーションのバインドと開始
この手順では、ホスト、適切な送信ポート、および受信場所にオーケストレーションをバインドします。
オーケストレーションをバインドして開始するには
BizTalk Server管理コンソールで、[オーケストレーション] フォルダーを展開します。
詳細ウィンドウで、 MQSCorrelationSolicitResponse オーケストレーションを右クリックし、[ バインド] をクリックします。
オーケストレーション ポートを、以下の送信ポートおよび受信場所にバインドします。
オーケストレーション ポート メッセージ ポート/受信場所 FileReceivePort MQSCorrelationSolicitResponse.Orchestration.FileReceivePort MQSeriesResponseReceivePort MQReply SolicitResponsePort MQSolicitResponse TempPort MQSCorrelationSolicitResponse.Orchestration.TempPort FileSendPort MQSCorrelationSolicitResponse.Orchestration.FileSendPort [ ホスト] をクリックします。
[ ホスト ] ボックスで、[ BizTalkServerApplication ] を選択し、[OK] をクリック します。
[ 送信ポート] で、[ MQSCorrelationSolicitResponse.Orchestration.TempPort] を右クリックし、[開始] を選択 します。
[ 送信ポート] で、[ MQSCorrelationSolicitResponse.Orchestration.FileSendPort] を右クリックし、[開始] を選択 します。
[ 受信場所] で、[ MQSCorrelationSolicitResponse.Orchestration.FileReceivePort] を右クリックし、[ 有効にする] を選択します。
オーケストレーションを右クリックし、[ 開始] をクリックします。
Note
オーケストレーションを開始すると、オーケストレーションの参加も自動的に実行されます。
アプリケーションのテスト
この手順では、アプリケーションをテストします。
アプリケーションをテストするには
ファイルを C:\Temp\Pickup2 フォルダーに配置します。
C:\Temp\Dropit2 フォルダーと C:\Temp\Moveitフォルダー内のファイルを調べます。
C:\Temp\Dropit2 フォルダーには、最初にBizTalk Serverによって取得されたメッセージのコピーが含まれている必要があります。
C:\Temp\Moveitフォルダーには、メッセージ識別子 (MQMD_MsgId) と関連付け識別子 (MQMD_CorrelId) を含む応答ドキュメントが含まれている必要があります。
Note
MQReply 受信場所を無効にした場合は、WebSphere MQ エクスプローラーでメッセージを調べ、メッセージと相関 ID が設定されていることを確認できます。 これを行うには、WebSphere MQ エクスプローラーを起動し、REPLYTOQ キューに入れられたメッセージを調べます。 メッセージ識別子と関連付け識別子は、[メッセージプロパティ] ダイアログ ボックスの [識別子] タブに表示されます。