非同期要求の実行

CICS で提供される非同期 API コマンドを使用すれば、簡単な方法で外部サービスに要求を発行し、それらを非同期で実行できるようになります。 非同期 API コマンドを使用すると、各サービスを順次呼び出し、応答を待機するのではなく、簡単かつ強力な方法で非同期アプリケーションを作成できるため、待機時間を節約し、プログラムを解放して他の処理を続行させることができます。

非同期処理の CICS への影響

CICS で非同期 API コマンドを使用すると、複数の子トランザクションを非同期で実行でき、アプリケーションの全体的な応答時間が削減されます。 親は、非同期で実行でき、別の CICS タスクで実行される 1 つ以上のローカル子トランザクションを実行できます。 CICS チャネルおよびコンテナーを使用して、親から子にデータを渡したり、データを戻して受け取ったりできます。 子トランザクションを実行およびフェッチするフレームワークはすべて、サポートされている非同期 API を使用して行われます。

順次トランザクション処理と非同期トランザクション処理の比較

順次トランザクション処理の場合、CICS は外部サービスを呼び出し、応答を待機します。 その後、CICS によってその他の複数の外部サービスが呼び出され、それらからの応答を待機する場合もあります。 このシーケンスを、ユーザーが必要なすべてのデータを受け取るまで続けることができます。 これは、待機時間が長くなる可能性があり、応答を受信するまでプログラムの実行はブロックされます。 図 1 は、CICS が外部サービスを呼び出して応答を待機する方法を示しています。

図1: 順次サービス呼び出し
このイメージは、単一のフェッチを送信し、リターンを待機する個々の親コマンドを示しています。

順次トランザクション処理とは異なり、非同期トランザクション処理では複数の要求を同時に発行できます。 外部サービスを非同期で呼び出すと、アプリケーションの全体的な応答時間を削減できます。親は解放され、子トランザクションとは別の独自のロジックが続行されます。 図 2 は、CICS が同時に複数の外部サービスを呼び出したことを示しています。 待機時間が削減され、プログラムは応答を受信するまで処理を続行できます。

図2: 並列サービス呼び出し (非同期処理)
このイメージは、親が複数の子を発行して同時に出庫と取り出しを行っていることを示しています。

非同期処理が使用される状況

非同期処理は、外部要求の処理中にプロセスを停止させたくない状況に適しています。

関連リンク: