HTTPAsyncRequest ノードを HTTPAsyncResponse ノードと共に使用して、Web サービスとの間で非同期の対話を行うメッセージ・フローのペアを構成します。
このトピックには、以下のセクションが含まれています。
HTTPAsyncRequest ノードは、Web サービス要求を送信しますが、このノードは関連した Web サービス応答の受信を待ちません。 Web サービスの応答は HTTPAsyncResponse ノードによって受信されます (これは別のメッセージ・フロー内のノードでも構いませんが、同じ実行グループに含まれる必要があります)。 これらのノードはペアとして使用され、固有 ID を使って応答を元の要求に対応させます。 HTTPAsyncRequest ノードは HTTPAsyncResponse ノードに要求ソケットを渡し、バックエンド・サーバーは応答でそれを使用します。 バックエンド・サーバーの待ち時間が長い場合には、ソケット・タイムアウトまでに応答しない可能性があります。
HTTP ソケットを HTTPAsyncResponse ノードに渡すことにより、メッセージ・フローは応答を待つことなく次のメッセージをキューから取得できるため、同期的メッセージ・フローよりもスレッドおよびストレージが効率的に使用されます。
構成に応じて、このノードは、入力メッセージの特定の内容から HTTP または HTTP over SSL (HTTPS) 要求を構成し、この要求を Web サービスに送信します。 HTTPAsyncResponse ノードは、Web サービスから応答を受信し、出力ツリーで組み込むために応答の内容を構文解析します。 構成で必要な場合、HTTPAsyncRequest ノードは HTTP ヘッダーを生成します。
HTTPAsyncRequest ノードはパレットの HTTP ドロワーに入っていて、WebSphere® Message Broker Toolkit 内では次のアイコンによって表されます。
URL は、http://<address>[:<port>]/<function> の形式です。例えば、http://localhost:7080/request などです。 この URL は HTTPAsyncRequest ノード・パラメーターでメッセージ自体のフィールドとして静的に指定することも、またはローカル環境のフィールドとして動的に指定することも可能です。
データは、大半の要求の場合、CCSID 1208 の形式で作成されている必要があります。 要求が正常に扱われた場合、このペアの HTTPAsyncResponse ノードに HTTPResponse が返されます。
HTTP プロキシーを使用することで、中間サイトを介して要求をルーティングすることができます。 ツールをプロキシーとして実行すると、要求と応答を確認することができるので、フローのデバッグが可能になります。 HTTP 宛先は、プロキシーによって確認されます。ローカル・ホストの HTTP 宛先を指定して、HTTP プロキシーが異なるコンピューター上で実行中の場合は、要求は元の要求の発行元であるコンピューターではなく、リモート・プロキシー・コンピューターにルーティングされます。
タイムアウト・インターバルを指定すると、要求/応答操作全体が指定の期間よりも長くかかっている場合、いずれかのペア・ノードの Failure ターミナルに要求を伝搬させることができます。 タイムアウト・インターバルは、HTTPAsyncRequest ノードによる要求送信の時点で始まり、HTTPAsyncResponse ノードで応答を完全に受信した時点で終わるインターバルとして適用されます。
HTTPAsyncRequest ノードが処理する要求ごとに、要求送信のための接続が使用され、そのペアの HTTPAsyncResponse ノードにその接続が渡されて応答で使用されます。 タイムアウト・インターバルが指定されている場合、インターバルが満了するとソケットが閉じられます。 このように閉じることによって、要求が正しい応答のみを取得し、タイムアウトになった要求の応答データをすべて廃棄させることができます。
要求/応答処理は、HTTPAsyncRequest ノードと HTTPAsyncResponse ノードの間で分割されます。 要求処理フェーズでタイムアウトが発生した場合、HTTPAsyncRequest ノードの Failure ターミナルに要求と例外が伝搬されます。 同様に、応答処理フェーズでタイムアウトが発生した場合は、HTTPAsyncResponse ノードの Failure ターミナルに例外が伝搬されます。
ほとんどの場合、タイムアウトはサーバー応答の待機中に発生するため、HTTPAsyncResponse ノードの Failure ターミナルが使用されます。 まれなケースですが、要求ノードがサーバーにデータを送るときにタイムアウトが発生することもあります。 この場合は、HTTPAsyncRequest ノードの Failure ターミナルが使用されます。
HTTPAsyncRequest ノードは、HTTP 要求を送って非同期的に応答を受け取る必要のあるメッセージ・フローで使用できます。 最も一般的な例は、Web サービスを呼び出すメッセージ・フローです。
HTTP の扱いについて詳しくは、HTTP メッセージの処理を参照してください。
このノードは TCP/IP を使用して外部サービスと直接対話するため、TCP/IP によって生成されるエラーが発生することがあります。 例えば、「ホストへのルートが見つかりませんでした」、「接続は拒否されました」などです。 ノードがこれらのエラーを検出する場合、例外が生成され、受信したエラー情報が例外リストに取り込まれ、入力メッセージは未変更のまま、Failure ターミナルにルーティングされます。
HTTPAsyncRequest ノードのターミナルについては、次の表に説明されています。
ターミナル | 説明 |
---|---|
In | ノードが処理するメッセージを受け入れる入力ターミナル。 |
Failure | ノード内の処理で障害が検出された場合に、メッセージがルーティングされる出力ターミナル。 |
Out | Web サービス要求が正常終了したことが示され、なおかつこのメッセージ・フロー内でさらに処理が必要な場合にメッセージがルーティングされる出力ターミナル。 |
以下の表は、ノード・プロパティーについて説明しています。 M の見出しの列は、プロパティーが必須 かどうかを示します (デフォルトが定義されていない場合に値を入力することが必要なら、パネル上にアスタリスクのマークが付きます)。 C の見出しの列は、プロパティーが構成可能 (メッセージ・フローをブローカー・アーカイブ・ファイルに追加してデプロイするとき、値を変更できる) かどうかを示します。
HTTPAsyncRequest ノードの「説明」プロパティーについては、次の表に説明されています。
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
ノード名 | いいえ | いいえ | ノード・タイプ、HTTPAsyncRequest | ノードの名前。 |
簡略説明 | いいえ | いいえ | ノードの簡単な説明 | |
詳細説明 | いいえ | いいえ | メッセージ・フロー内のノードの目的を説明するテキスト |
HTTPAsyncRequest ノードの「基本」プロパティーについては、次の表に説明されています。
プロパティー | M | C | デフォルト | 説明 | mqsiapplybaroverride コマンド・プロパティー |
---|---|---|---|---|---|
固有 ID | はい | いいえ | このプロパティーは、HTTPAsyncRequest ノードおよび HTTPAsyncResponse ノードのペアをリンクする固有 ID です。 | asyncResponseCorrelator | |
Web サービス URL | はい | はい | Web サービスの URL。 次の形式で提供する必要があります。http://hostname[:port]/[path] ここでは、
HTTPAsyncRequest ノードは、要求の送信先 Web サービスの URL を判別します。 以下の 3 つのオプションの 1 つを選択します。ノードはこれらのオプションを以下の順番で検査します (つまり、常に最初のオプションによって 2 番目のオプションは指定変更され、2 番目のオプションによって 3 番目のオプションは指定変更される)。
最初の 2 つのオプションでは、入力メッセージがメッセージ・フローを通過するたびに URL を設定するという、動的方式が可能です。 これらのオプションのどちらかを使用するには、メッセージ・フローの中の HTTPAsyncRequest ノードの前に Compute ノードを組み込み、必要な値の作成と初期化を行います。 3 番目のオプションでは、このノードが受信するすべてのメッセージで値が固定します。 このプロパティーは、残りのフィールドが作成されていない場合やヌル値である場合に使用されるデフォルト設定を含むように設定します。 どちらかのフィールドに値がある場合、このプロパティーの設定は無視されます。 「Web サービス URL」プロパティーには、有効な URL が入っていなければなりません。そうでない場合、デプロイは失敗します。 X-Original-HTTP-URL または LocalEnvironment.Destination.HTTP.RequestURL に設定した値が有効な URL であることも確認します。これが有効でない場合、ノードは「Web サービス URL」プロパティーのデフォルト設定を使用します。 |
URLSpecifier | |
要求タイムアウト (秒) | はい | はい | 120 | リモート Web サーバーが HTTPAsyncResponse ノードに応答を送るのを待機する時間の値。 有効な範囲は、1 から (231)-1 です。 無期限に待機することを示す値を入力することはできません。 タイムアウトの振る舞いについて詳しくは、タイムアウトを参照してください。 |
timeoutForServer |
HTTPAsyncRequest ノードの「HTTP 設定」プロパティーについては、次の表に説明されています。
プロパティー | M | C | デフォルト | 説明 | mqsiapplybaroverride コマンド・プロパティー |
---|---|---|---|---|---|
HTTP(S) プロキシーの位置 | いいえ | はい | 要求の送信先のプロキシー・サーバーの位置。 この値は、hostname:port という形式でなければなりません。 | httpProxyLocation | |
HTTP メソッド | いいえ | いいえ | POST | HTTP メソッド。 有効値は、POST、GET、PUT、DELETE、HEAD です。 デフォルトでは、HTTPAsyncRequest ノードはリモート Web サーバーへの接続時に HTTP POST メソッドを使用します。 HEAD はサービスが使用可能かどうかを判別するために使用されます。例えば、使用可能なサーバーを検出するためにネットワーク・ディスパッチャーが使用することがあります。そして、(content-length を含め) 正しいヘッダーを本体データなしで戻します。 | |
圧縮の使用 | いいえ | はい | なし | このプロパティーでは、HTTP 要求の内容を圧縮するかどうかを制御します。 選択可能な値は、none、gzip、zlib (deflate)、および deflate です。 要求を圧縮する場合は、Content-Encoding ヘッダーが内容の圧縮を示す値に設定されます。 zlib (deflate) は、RFC 1950 と RFC 1951 の組み合わせを表します。 deflate は RFC 1951 のみを表します。 デフォルト値は none で、要求の内容は圧縮されません。 |
requestCompressionType |
HTTPAsyncRequest ノードの「SSL」プロパティーについては、次の表に説明されています。
プロパティー | M | C | デフォルト | 説明 | mqsiapplybaroverride コマンド・プロパティー |
---|---|---|---|---|---|
プロトコル | いいえ | はい | TLS | HTTPS 要求時に使用する SSLProtocol プロパティーを指定します。 SSL 接続の両端は、使用するプロトコルに関して合意している必要があります。 それゆえ、選択されたプロトコルはリモート・サーバーが受け入れ可能なものでなければなりません。 使用可能なオプションは次のとおりです。
|
protocol |
許可される SSL 暗号 | いいえ | はい | SSL 要求の作成時に使用する、コンマで区切られた暗号のリスト。 この設定を使用して、単一の暗号 (SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA など) の指定や、暗号のリスト (接続ではその 1 つのみが使用される) の指定します。 この暗号のセットには、リモート・サーバーにより受け入れられる 1 つ以上の暗号が含まれていなければなりません。 暗号間の分離文字には、コンマが使用されます。 デフォルト値は、空ストリングです。この場合、ノードは任意またはすべての使用可能な暗号を SSL 接続ハンドシェーク時に使用できます。 この方式の場合に、正常に SSL 接続を作成するための有効範囲が最大限になります。 |
allowedCiphers | |
SSL 証明書ホスト名検査を使用可能にする | いいえ | はい | はい | このプロパティーは、要求を受け取っているサーバーのホスト名が、SSL 証明書のホスト名と一致する必要があるかどうかを指定します。 | hostnameChecking |
SSL クライアント認証鍵別名 | いいえ | はい | "" (空ストリング) | このプロパティーでは、HTTPAsyncRequest 接続のクライアント・サイドの SSL 認証別名を指定します。デフォルト値が設定されると、最初の適切な鍵が自動的に選択されます。 | keyAlias |
HTTPAsyncRequest ノードの「拡張」プロパティーについては、次の表に説明されています。
プロパティー | M | C | デフォルト | 説明 | mqsiapplybaroverride コマンド・プロパティー | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
入力からデフォルト HTTP ヘッダーを生成 | いいえ | いいえ | 選択されている | このチェック・ボックスを選択すると、HTTPRequestHeader が生成されます。 このチェック・ボックスのチェックを外す場合には、有効な HTTPRequestHeader が入力メッセージ内に存在している必要があります。 要求メッセージに組み込む HTTPRequestHeader の内容を制御するには、入力メッセージに HTTPRequestHeader を追加するための Compute ノードを、メッセージ・フローの中のこの HTTPAsyncRequest ノードの前の位置に組み込み、このチェック・ボックスのチェック・マークを外してください。
「圧縮の使用」または「デフォルトで圧縮した応答を受け入れる」オプションを選択した場合、「入力からデフォルト HTTP ヘッダーを生成」を選択したかどうかに関係なく、以下のように「Content-Encoding」および「Accept-Encoding」HTTP ヘッダー・フィールドが取り込まれます。
|
|||||||||
圧縮した応答をデフォルトで受け入れる | いいえ | はい | 選択されていない | このプロパティーは、HTTPAsyncResponseノードがデフォルトで圧縮した応答を処理するかどうかを示します。 要求ヘッダーに「Accept-Encoding」ヘッダーが含まれていない場合にこのオプションを選択すると、ノードは「Accept-Encoding」ヘッダーを「gzip, deflate」に設定し、圧縮されて受信されるすべての応答は応答ノードによって圧縮解除されます。 HTTPAsyncResponse ノードに伝搬されたメッセージに「Accept-Encoding」ヘッダーが含まれている場合、メッセージ・フローまたはクライアント・アプリケーションによって、圧縮された応答がすべて処理されます。 したがって、そのような場合にこのオプションを選択しても、効果はありません。 |
acceptCompressedResponses |
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
イベント | いいえ | いいえ | なし | ノードに対して定義したイベントが、このタブに表示されます。 デフォルトでは、メッセージ・フローのどのノードに対してもモニター・イベントは定義されません。 ノードのモニター・イベントを作成、変更、または削除するには、「追加」、「編集」、および「削除」を使用します。詳しくは、モニター・プロパティーを使用したモニター・イベント・ソースの構成を参照してください。 「使用可能」チェック・ボックスを選択またはクリアすることによって、ここに表示されているイベントを使用可能および使用不可に設定できます。 |
設定 | 説明 |
---|---|
圧縮 | ノードの「圧縮の使用」プロパティーを指定変更します。 以下に例を示します。
圧縮が適用される最小サイズ (バイト数) を設定するには、次のオーバーライドを使用します。
|
ProxyConnectHeaders | アウトバウンド要求がプロキシーを介した SSL 接続である場合に使用される、追加のヘッダーを指定します。 これらの追加ヘッダーは、最初の CONNECT 要求と共にプロキシーに送信されます。 例えば、SSL を使用している場合、プロキシー・サーバーにプロキシー認証情報を送信できます。 複数のヘッダーを送信できますが、各ヘッダーは RFC2616 に基づいて復帰と改行 (ASCII 0x0D 0x0A) で区切る必要があります。
例えば、
この設定は、要求がプロキシー・サーバーを介した SSL 要求である場合にのみ使用されます。 非 SSL 要求に対するプロキシー認証情報を送信するには、以下の例に示されているように、HTTPRequestHeader フォルダー内の個々のヘッダーを指定します。
|
ProxyURL | ノードの「HTTP(S) プロキシーの位置」プロパティーを指定変更します。 以下に例を示します。
|
QueryString | アウトバウンド照会ストリング・パラメーターの設定を可能にします。 各パラメーターを個別に設定する必要があります。 以下に例を示します。
上記の ESQL は、(http://tools.ietf.org/html/rfc3986 に従って) エンコードされ、アウトバウンド要求と共に送信され、以下の照会ストリングとなります。
宛先 URL が 1 つ以上の照会パラメーターをすでに持っている場合、ここで指定された追加パラメーターは既存のリストに付加されます。 |
QueryStringCCSID | エンコードの前に照会ストリング・パラメーターをデフォルト (UTF-8) 以外の文字セットに変換する必要があることを指定します。 すべての照会ストリング・パラメーターは最初に、RFC3986 に従って、結果のストリングがエンコードされる前に、指定された CCSID に変換されます。
以下に例を示します。
上記の ESQL により、すべての QueryString パラメーターは、エンコードされる前に 943 コード・ページに変換されます。 注: すべての照会ストリング・パラメーターは、Unicode 形式のデータを含む必要があります。 |
RequestLine.RequestURI | URL とポートの後のパスである「RequestURI」を指定変更します。 以下に例を示します。
|
RequestLine.HTTPVersion | ノードの「HTTP バージョン」プロパティーを指定変更します。 以下に例を示します。
|
RequestLine.Method | ノードの「HTTP メソッド」プロパティーを指定変更します。 以下に例を示します。
|
RequestURL | ノードの「Web サービス URL」プロパティーを指定変更します。 以下に例を示します。
|
SSLProtocol | 「SSLProtocol」を指定変更します。
以下に例を示します。
有効値は、SSL、SSLv3、および TLS です。 |
SSLCiphers | ノードの「許可された SSL 暗号」プロパティーを指定変更します。 以下に例を示します。
|
UserContext | ローカル環境の以下の場所で、BLOB コンテキスト・データを保管できます。 HTTPAsyncResponse ノードは、後でこのデータを取得できます。
UserContext に保管されるデータは、BLOB 形式でなければなりません。 |
WrittenDestination = (
HTTP = (
RequestURL = 'http://127.0.0.1:7800/HTTPFLOW' (CHARACTER)
Compression = (
OriginalSize = 53 (INTEGER)
CompressedSize = 71 (INTEGER)
)
)
)