HTTPAsyncRequest ノードを HTTPAsyncResponse ノードと共に使用して、Web サービスとの間で非同期の対話を行うメッセージ・フローのペアを構成します。
このトピックには、以下のセクションが含まれています。
HTTPAsyncRequest ノードは、Web サービス要求を送信しますが、このノードは関連した Web サービス応答の受信を待ちません。 Web サービスの応答は HTTPAsyncResponse ノードによって受信されます (これは別のメッセージ・フロー内のノードでも構いませんが、同じ実行グループに含まれる必要があります)。 これらのノードはペアとして使用され、固有 ID を使って応答を元の要求に対応させます。 HTTPAsyncRequest ノードは HTTPAsyncResponse ノードに要求ソケットを渡し、バックエンド・サーバーは応答でそれを使用します。 バックエンド・サーバーの待ち時間が長い場合には、ソケット・タイムアウトまでに応答しない可能性があります。
HTTP ソケットを HTTPAsyncResponse ノードに渡すことにより、メッセージ・フローは応答を待つことなく次のメッセージをキューから取得できるため、同期的メッセージ・フローよりもスレッドおよびストレージが効率的に使用されます。
HTTPAsyncResponse ノードは、次のメッセージ・ドメインのメッセージを処理します。
HTTPAsyncResponse ノードはパレットの HTTP ドロワーに入っていて、WebSphere® Message Broker Toolkit 内では次のアイコンによって表されます。
HTTPAsyncResponse ノードを HTTPAsyncRequest ノードと一緒にペアで使用すると、HTTP 要求を出して非同期的に応答を受け取ることができます。 HTTPAsyncRequest ノードは Web サービスに要求を送信します。 HTTPAsyncResponse ノードは、Web サービスから応答を受信し、出力ツリーで組み込むために応答の内容を構文解析します。
HTTP の扱いについて詳しくは、HTTP メッセージの処理を参照してください。
このペアの HTTPAsyncRequest ノードにローカル環境プロパティー LocalEnvironment.Destination.HTTP.RequestIdentifier が提供された場合、これが HTTPAsyncResponse ノードのローカル環境に渡されます。
このノードは TCP/IP を使用して外部サービスと直接対話するので、次のタイプのエラーが発生する可能性があります。
ノードは、これらのエラーを検出すると、例外を生成して Failure ターミナルに伝搬します。
ノードは応答がどのような形式になるかを判別できないため、応答は BLOB メッセージとして作成されます。 また、転送状況コード (3xx) 付きのメッセージも同様に処理されます。
HTTPAsyncResponse ノードは、100 番台の状況コードを「続き」の応答として扱い、現在の応答を破棄して、Web サーバーからの別の応答を待機します。
200 番台の状況コードは成功として扱われます。 生成される出力メッセージの形式はノード・プロパティーによって決定され、応答はノードの Out ターミナルにルーティングされます。
300 番台の状況コードは転送用です。 HTTPAsyncResponse ノードでは転送がサポートされず、転送コードはエラーとして扱われます。
Set OutputRoot.XMLNS.error850 = CAST(InputRoot.XMLNS.error.BLOB as CHAR CCSID 850);
HTTP については、Hypertext Transfer Protocol - HTTP/1.1を参照してください。
HTTP 戻りコードについて詳しくは、HTTP 応答コードを参照してください。HTTPAsyncRequest ノードでタイムアウト・インターバルを指定すると、要求/応答操作全体が指定の期間よりも長くかかっている場合、いずれかのペア・ノードの Failure ターミナルに要求を伝搬させることができます。 タイムアウト・インターバルは、HTTPAsyncRequest ノードによる要求送信の時点で始まり、HTTPAsyncResponse ノードで応答を完全に受信した時点で終わるインターバルとして適用されます。
HTTPAsyncRequest ノードが処理する要求ごとに、要求送信のための接続が使用され、そのペアの HTTPAsyncResponse ノードにその接続が渡されて応答で使用されます。 タイムアウト・インターバルが指定されている場合、インターバルが満了するとソケットが閉じられます。 このように閉じることによって、要求が正しい応答のみを取得し、タイムアウトになった要求の応答データをすべて廃棄させることができます。
要求/応答処理は、HTTPAsyncRequest ノードと HTTPAsyncResponse ノードの間で分割されます。 要求処理フェーズでタイムアウトが発生した場合は、HTTPAsyncRequest ノードの Failure ターミナルに例外が伝搬されます。 同様に、応答処理フェーズでタイムアウトが発生した場合は、HTTPAsyncResponse ノードの Failure ターミナルに要求が伝搬されます。
ほとんどの場合、タイムアウトはサーバー応答の待機中に発生するため、HTTPAsyncResponse ノードの Failure ターミナルが使用されます。 場合によっては、要求ノードがサーバーにデータを送るときにタイムアウトが発生することもあります。 この場合は、HTTPAsyncRequest ノードの Failure ターミナルが使用されます。
リモート Web サービスによって戻されるヘッダーを添付された HTTPResponse ヘッダーは、ノードから伝搬されるメッセージ内の最初のヘッダー (プロパティーの後) です。 選択したオプションに関係なく、このアクションがとられます。 したがって、HTTPAsyncResponse ノードからの応答を WebSphere MQ キューに入れるには、MQMD が (プロパティーの後の) 最初のヘッダーになるようにヘッダーを操作します。
SET OutputRoot = InputRoot;
SET OutputRoot.HTTPResponseHeader = NULL;
SET OutputRoot = InputRoot;
DECLARE HTTPHeaderRef REFERENCE TO OutputRoot.HTTPResponseHeader;
DETACH HTTPHeaderRef;
ATTACH HTTPHeaderRef TO OutputRoot.MQMD AS NEXTSIBLING;
HTTPAsyncResponse ノードのターミナルについては、次の表に説明されています。
ターミナル | 説明 |
---|---|
Failure | ノード内の処理で障害が検出された場合に、メッセージがルーティングされる出力ターミナル。 |
Out | Web サービス要求が正常終了したことが示され、なおかつこのメッセージ・フロー内でさらに処理が必要な場合にメッセージがルーティングされる出力ターミナル。 |
Error | 200 から 299 までの範囲にない HTTP 状況コード (転送コード (3xx) を含む) が入っているメッセージのルーティング先となる出力ターミナル。 HTTPAsyncResponse ノードでは転送はサポートされません。 |
Catch | 例外がダウンストリームでスローされ、ノードによってキャッチされた場合に、メッセージがルーティングされる出力ターミナル。 |
以下の表は、ノード・プロパティーについて説明しています。 M の見出しの列は、プロパティーが必須 かどうかを示します (デフォルトが定義されていない場合に値を入力することが必要なら、パネル上にアスタリスクのマークが付きます)。 C の見出しの列は、プロパティーが構成可能 (メッセージ・フローをブローカー・アーカイブ・ファイルに追加してデプロイするとき、値を変更できる) かどうかを示します。
HTTPAsyncResponse ノードの「説明」プロパティーについては、次の表に説明されています。
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
ノード名 | いいえ | いいえ | ノード・タイプ、HTTPAsyncResponse | ノードの名前。 |
簡略説明 | いいえ | いいえ | ノードの簡単な説明 | |
詳細説明 | いいえ | いいえ | メッセージ・フロー内のノードの目的を説明するテキスト |
HTTPAsyncResponse ノードの「基本」プロパティーについては、次の表に説明されています。
プロパティー | M | C | デフォルト | 説明 | mqsiapplybaroverride コマンド・プロパティー |
---|---|---|---|---|---|
固有 ID | はい | いいえ | HTTPAsyncRequest ノードと HTTPAsyncResponse ノードをペアとしてリンクする固有 ID を指定します。 | asyncRequestCorrelator |
HTTPAsyncResponse ノードの「応答メッセージの構文解析」プロパティーについては、次の表に説明されています。
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
メッセージ・ドメイン | いいえ | いいえ | BLOB | メッセージの構文解析に使用されるドメイン。 フィールドがブランクの場合、デフォルトは BLOB になります。 |
メッセージ・モデル | いいえ | いいえ | 選択されていない | メッセージが定義されているメッセージ・モデル・スキーマ・ファイルの名前またはロケーション。 このリストには、選択したメッセージ・ドメインに使用可能なすべてのメッセージ・モデル・スキーマ・ファイルが取り込まれます。 |
メッセージ | いいえ | いいえ | 選択されていない | メッセージ・モデル・スキーマ・ファイル内のメッセージ・ルートの名前またはロケーション。 このリストには、選択したメッセージ・モデルで定義された、利用可能なすべてのメッセージが取り込まれます。 |
物理形式 | いいえ | いいえ | 選択されていない | メッセージの物理フォーマットの名前。 MRM または IDOC パーサーを使用する場合は、リストから着信メッセージの物理形式を選択します。 このリストには、選択されたメッセージ・モデル用に定義したすべての物理形式が含まれます。 「メッセージ・ドメイン」プロパティーを DataObject に設定した場合、このプロパティーを XML または SAP ALE IDoc に設定できます。 外部ソースからのビット・ストリームを構文解析してメッセージ・ツリーを生成する必要がある場合には、このプロパティーを SAP ALE IDoc に設定してください。 |
HTTPAsyncResponse ノードの「パーサー・オプション」プロパティーについては、次の表に説明されています。
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
構文解析のタイミング | いいえ | いいえ | 要求時 | このプロパティーは、いつ応答メッセージを解析するかを制御します。 有効な値は、「要求時」、「即時」、および「完全」です。 デフォルト値は「要求時」です。この場合、メッセージの構文解析のタイミングが遅れることになります。 このプロパティーに関する詳しい説明については、要求時の構文解析を参照してください。 |
XML スキーマ・データ・タイプを使用してツリーを構築する | いいえ | いいえ | 選択されていない | このプロパティーは、XML スキーマから取得されたデータ・タイプを使って、XMLNSC パーサーがメッセージ・ツリー内に構文エレメントを作成するかどうかを制御します。 「妥当性検査」タブ上の「妥当性検査」プロパティーを「内容」 または 「内容と値」 に設定した場合にのみ、このプロパティーを選択できます。 |
XMLNSC コンパクト・パーサーを XMLNS ドメインに使用 | いいえ | いいえ | 選択されていない | このプロパティーは、XMLNS ドメイン内のメッセージに XMLNSC コンパクト・パーサーを使用するかどうかを制御します。 このプロパティーを設定すると、入力 MQRFH2 ヘッダーまたは「応答メッセージの構文解析」プロパティー・ドメインが XMLNS である場合に、出力ターミナルに接続されているノードの XMLNSC の下に応答メッセージ・データが表示されます。 |
混合内容の保存 | いいえ | いいえ | 選択されていない | このプロパティーは、XMLNSC パーサーが応答メッセージ内で混合テキストを検出したときに、メッセージ・ツリー内にエレメントを作成するかどうかを制御します。 チェック・ボックスを選択すると、混合テキスト用のエレメントが作成されます。 このチェック・ボックスのチェックを外した場合、混合テキストは無視されて、エレメントは作成されません。 |
コメントの保存 | いいえ | いいえ | 選択されていない | このプロパティーは、XMLNSC パーサーが応答メッセージ内でコメントを検出したときに、メッセージ・ツリー内にエレメントを作成するかどうかを制御します。 チェック・ボックスを選択すると、コメント用のエレメントが作成されます。 このチェック・ボックスのチェックを外した場合、コメントは無視されて、エレメントは作成されません。 |
処理命令の保存 | いいえ | いいえ | 選択されていない | このプロパティーは、XMLNSC パーサーが応答メッセージ内で処理命令を検出したときに、メッセージ・ツリー内にエレメントを作成するかどうかを制御します。 チェック・ボックスを選択すると、処理命令用のエレメントが作成されます。 このチェック・ボックスのチェックを外した場合、処理命令は無視されて、エレメントは作成されません。 |
不透明エレメント | いいえ | いいえ | ブランク | XMLNSC パーサーによって不透明解析される応答メッセージ内のエレメントのリストを指定するときに、このプロパティーを使用します。 不透明解析が実行されるのは、妥当性検査が使用不可に設定されている場合のみ (つまり、「妥当性検査」プロパティーが「なし」の場合) です。妥当性検査が使用可能な場合、「不透明エレメント」で指定される項目は無視されます。 |
HTTPAsyncResponse ノードの「妥当性検査」プロパティーについては、次の表に説明されています。
これらのプロパティーの詳細については、妥当性検査プロパティーを参照してください。
プロパティー | M | C | デフォルト | 説明 | mqsiapplybaroverride コマンド・プロパティー |
---|---|---|---|---|---|
妥当性検査 | いいえ | はい | なし | このプロパティーは、妥当性検査を行うかどうかを制御します。 有効な値は、「なし」、「内容と値」、「内容」、および「継承」です。 詳細については、メッセージの妥当性検査および妥当性検査プロパティーを参照してください。 |
validateMaster |
失敗時の処置 | いいえ | いいえ | 例外 | このプロパティーは、妥当性検査が失敗した場合の動作を制御します。 「妥当性検査」を「内容」または「内容と値」に設定した場合にのみ、このプロパティーを設定できます。 有効な値は、「ユーザー・トレース」、「ローカル・エラー・ログ」、「例外」、および「例外リスト」です。 |
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
イベント | いいえ | いいえ | なし | ノードに対して定義したイベントが、このタブに表示されます。 デフォルトでは、メッセージ・フローのどのノードに対してもモニター・イベントは定義されません。 ノードのモニター・イベントを作成、変更、または削除するには、「追加」、「編集」、および「削除」を使用します。詳しくは、モニター・プロパティーを使用したモニター・イベント・ソースの構成を参照してください。 「使用可能」チェック・ボックスを選択またはクリアすることによって、ここに表示されているイベントを使用可能および使用不可に設定できます。 |
LocalEnvironment.Destination.HTTP の下の次のプロパティーから、ペアの HTTPAsyncRequest ノードで設定された情報を取得できます。
設定 | 説明 |
---|---|
UserContext | HTTPAsyncRequest ノードによって保管されたコンテキスト・データを、ローカル環境の以下の場所から取得できます。
コンテキスト・データは BLOB として保管されます。
コンテキスト・データを取得するには、変数に BLOB 型として代入するか、CAST を使用します。
以下に例を示します。
|