メッセージ・フローで、HTTPAsyncRequest ノードと HTTPAsyncResponse ノードを使用するか、SOAPAsyncRequest ノードと SOAPAsyncResponse ノードを使用することにより、HTTP 要求を出して非同期的に応答を受け取ることができます。
SOAPAsyncRequest ノードでは、HTTP トランスポートを使用するときに次の 2 つの方式で非同期要求がサポートされます。
- そのペアの SOAPAsyncResponse ノードに、WS-Addressing を使用して応答を送信する。 SOAPAsyncRequest ノードは、HTTP 202 の肯定応答が来るまで待機してから、メッセージ・フローの処理を続けます。肯定応答が受信されない場合、SOAPAsyncRequest ノードはブロックされます。 新規 HTTP 接続がバックエンド・サーバーによって作成されて、SOAPAsyncResponse ノードに応答します。 これがデフォルトの動作です。
- HTTP 非同期要求/応答を使用する。 SOAPAsyncRequest のプロパティー「HTTP 非同期要求/応答の使用」が選択されている場合、SOAPAsyncRequest ノードがそのペアの SOAPAsyncResponse ノードに HTTP ソケットを渡して、バックエンド・サーバーが同じソケットを使用して応答できるようになります。 このオプションが選択されているとき、WS-Addressing ヘッダーが送信されますが、バックエンド・サーバーがそれを認識する必要はありません。 WS-Addressing ヘッダーに mustUnderstand のマークは付けられず、replyTo ヘッダーは anonymous に設定されます。 そのため、ノードは WS-Addressing の代わりに非同期 HTTP ソケット処理を使用して HTTP 要求を行い、非同期応答を受信します。
HTTPAsyncRequest ノードは、常に非同期 HTTP ソケット処理を使って非同期要求/応答を扱います。
非同期要求ノードは、応答を待機せずに、制御をフローに返します。
このアクションにより、要求スレッドが解放されて他の要求を処理します。その間、ペアとなる応答ノードは応答を新規トランザクションとして別のスレッドで処理します。
応答ノードを別のメッセージ・フローに含めることもできますが、ペアとなる要求ノードと同じ統合サーバー内に存在する必要があります。
HTTP 非同期要求/応答の振る舞いは、非同期のみです。これは、WebSphere® Message
Broker が要求と応答を非同期として扱うためです。これにより、メッセージ・フローは非同期要求からの応答を待たずに次のメッセージを取り出すことができます。 バックエンド・サーバーは要求/応答を通常の同期 HTTP 要求として認識します。
シナリオ
以下の状況では、HTTP 非同期要求/応答を使用することができます。
- 待ち時間の長いバックエンド・サーバーと対話するときに同期的 HTTP 要求を使用すると、多くの要求が未解決のまま残存する可能性があります。その結果、バックエンド・サーバーとの十分な数の同時接続を行うために多数のスレッドが必要になります。 代わりに非同期 HTTP ソケット処理を使用すると、応答を要求から分離することができます。
- SOAPAsyncRequest で HTTP 非同期要求/応答を使用する方法は、非匿名 replyTo ヘッダーと共に WS-Addressing を使用する方法の代替策です。
SOAPAsyncRequest ノードを使って HTTP 非同期要求/応答を使用する方法については、
SOAPAsyncRequest ノードでの非同期の振る舞いの選択を参照してください。
制限
HTTP 非同期要求/応答で
HTTPAsyncRequest ノードまたは
SOAPAsyncRequest ノードを使用するときには、以下の制限事項が適用されます。
- 転送はサポートされません。 転送状況コード (3xx) 付きのメッセージはエラーとして扱われ、応答は、「エラー」タブで指定されたプロパティーに従って、応答ノードの Error ターミナルにルーティングされます。
- WS-RM は、HTTP 非同期要求/応答の使用と両立しません。