Interstage Application Server アプリケーション作成ガイド (イベントサービス編)
|
目次
索引

|
1.3.1.4 Pushモデルのデータ管理
Pushモデルでのイベントデータの管理について説明します。
(1) イベントデータの送受信
イベントチャネルでのイベントデータの送受信の概要を説明します。イベントチャネルは、サプライヤからイベントデータを受信します。受信したイベントデータは、イベントチャネル内に蓄積します。次に接続しているすべてのコンシューマにイベントデータを送信します。送信を完了するとイベントチャネル上のイベントデータを削除します。その概要を以下に示します。

上図のイベントデータの送信、受信、削除までの処理について以下に説明します。イベントチャネルでは、すべてのコンシューマへPushを発行した(4)後に、イベントチャネル上のイベントデータを削除します。
- コンシューマ1、コンシューマ2がイベントチャネルに接続します。
- サプライヤからイベントチャネルへ、イベントデータを送信します。
- イベントチャネルからコンシューマ1へ、イベントデータを送信します。
- イベントチャネルからコンシューマ2へ、イベントデータを送信します。その後、イベントチャネルはイベントデータを削除します。
(2) 送信スレッド
イベントチャネルの環境設定で述べた送信スレッドについて説明します。送信スレッドは、イベントチャネルからコンシューマにイベントデータを送信するスレッドです。その概要を以下に示します。以下の図は1つの送信スレッドにより4つのコンシューマに送信する例です。サプライヤからコンシューマまでのイベントデータの送受信処理について以下に説明します。
- サプライヤからイベントチャネルへ、イベントデータを送信します。イベントチャネルのPush処理部に一時的にイベントデータを蓄積します。
- イベントチャネルのPush処理部から送信スレッドにイベントデータを渡します。イベントデータを送信スレッドに渡してしまうと、イベントチャネルは蓄積したイベントデータを削除します。
- 送信スレッドは、その時点で接続しているコンシューマに対してイベントデータを送信します。

コンシューマが多数存在する場合に、essetcnfコマンドおよびessetcnfchnlコマンドの送信スレッド数(-sthinitオプションと-sthmaxオプション)を増やすとイベントデータのコンシューマへの到達時間を均一化することができます。上図では送信スレッドが1つのため、4つのコンシューマに対して送信します。送信スレッドを2つにした場合の例を以下の図に示します。以下の図では4つのコンシューマを2つのブロックに分割し、それぞれのブロックに1つの送信スレッドが対応しています。送信スレッドは並行に動作するため、コンシューマの間でのイベントデータの到達時間の遅延を小さくすることができます。
なお、ここではイベントチャネルとコンシューマ間のネットワークのオーバヘッドが均一なものとして説明しています。送信スレッドを複数にした場合について以下に説明します。
- サプライヤからイベントチャネルへ、イベントデータを送信します。イベントチャネルのPush処理部に一時的にイベントデータを蓄積します。
- イベントチャネルのPush処理部から2つの送信スレッドに順にイベントデータを渡します。接続しているコンシューマをブロック分割して、ブロックに1つの送信スレッドを割り当てます。イベントデータをすべての送信スレッドに渡してしまうと、イベントチャネルは蓄積したイベントデータを削除します。
- 送信スレッド1は、割り当てられたブロックのコンシューマ1とコンシューマ2にイベントデータを送信します。
- 送信スレッド2は、割り当てられたブロックのコンシューマ3とコンシューマ4にイベントデータを送信します。


- コンシューマがイベントデータを受け取ったことを確認しない場合は“-oneway yes”を、確認する場合は“-oneway no”を指定してください。
- コンシューマへのイベントデータの送信が通信エラーとなった場合、イベントチャネルではそのコンシューマに対して、以後のイベントデータを送信しません。通信エラーの発生に構わず、送信する場合は、“-chksend no”を指定してください。これは、“-oneway”に“no”を指定した場合にだけ有効です。
- コンシューマ側のアプリケーションでイベントチャネルに対してdisconnectメソッドを発行しないで、アプリケーションを終了させ、その後、同一のアプリケーションを再起動した場合、同一イベントデータが複数個配信されます。コンシューマアプリケーションを終了する場合は、必ずイベントチャネルに対してdisconnectメソッドを発行してください。
- “-oneway no”を指定している場合、イベントサービスは送信するすべてのコンシューマがデータを受け取ったことを確認します。そのため、1つでも復帰が遅いコンシューマが存在する場合は、Pushモデルの配信処理全体が遅延する可能性があります。
All Rights Reserved, Copyright(C) 富士通株式会社 2005