イベントチャネルが動作したときのプロセスとスレッドの構成について説明します。
esmkchnlコマンドを使用してイベントチャネルを静的生成する際、1つのグループの中に複数のイベントチャネルを含めることができます。生成したイベントチャネルのグループは、esstartchnlコマンドでグループ名を指定して起動します。esstartchnlコマンドを実行すると、指定したグループ情報に含まれるすべてのイベントチャネルを起動します。このとき、グループ情報1つに対して1つのプロセスを起動し、イベントチャネルをプロセス内にスレッドとして起動します。
また、イベントチャネルのスレッドとは別に、タイマ監視スレッドを起動時に生成します。これは、グループ内で共通の環境情報であるイベントデータの生存時間と待ち合わせ時間を監視します。グループ情報とプロセスの対応を以下に示します。
1つのイベントチャネルは、複数のスレッドにより構成されています。イベントチャネルを構成するスレッド数は、イベントチャネルのモデル、構成情報、イベントチャネルの環境情報の設定により異なります。
イベントチャネルのスレッド構成を以下に示します。図中の送受信制御スレッドは、イベントデータを受け渡す基本となるスレッドで、その配下に送信スレッドが存在します。
送信スレッド数は、essetcnfコマンド/essetcnfchnlコマンドの以下のオプションに指定して設定します。
-sthinitオプション(Pushモデルの送信スレッド数の初期値)
-sthmaxオプション(Pushモデルの送信スレッド数の最大値)
イベントチャネルを動的生成する際に使用するイベントファクトリのcreateメソッドは、イベントチャネルを動作させるプロセスの生成、およびプロセス上のイベントチャネルの生成・起動を行います。
イベントチャネルを動作させるプロセス数が3個、動作できるイベントチャネルの最大数が9個の場合の例を以下に示します。
上図の番号に沿って、プロセスの生成、およびイベントチャネルの生成・起動を以下に説明します。イベントチャネルを構成するスレッドについては、静的生成運用の構成を参照してください。
createメソッドの起動を受け付けると、イベントチャネルを動作させるプロセスを検索します。プロセスが存在しない場合は、プロセスを生成します。生成時にプロセス上で動作するイベントチャネル数を決定します。
動作させるプロセスを決定すると、プロセス上にイベントチャネルを生成して起動します。上図では、プロセス1のイベントチャネル1、プロセス2のイベントチャネル5、プロセス3のイベントチャネル7、およびイベントチャネル9が動作しています。残りのイベントチャネルは、生成の準備ができている状態を表わしています。この状態でcreateメソッドを実行すると、空きの多いプロセス1またはプロセス2のイベントチャネルを使用します。
動的生成できるイベントチャネルの総数は、essetcnfコマンドの-dchmaxオプション(動的生成のイベントチャネルの最大起動数)に指定して設定します。
動的生成のイベントチャネルが動作するプロセスの最大数は、Interstage動作環境定義の定義「Event maximum Process」(イベントチャネルの最大プロセス数)に指定して、isinitコマンドでInterstageを初期化して設定します。