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

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

上図のイベントデータの送信、受信、削除までの処理について以下に説明します。イベントチャネルは、1つのデータに対して接続中のすべてのコンシューマがpullを発行した後(7の復帰後)、イベントチャネル上のデータを削除(4で獲得したデータ)します。
- サプライヤがイベントチャネルに接続します。
- コンシューマ1からイベントチャネルへ、イベントデータの送信を要求します。
- イベントチャネルから、サプライヤへ、イベントデータの送信を要求します。
- サプライヤからイベントチャネルへ、イベントデータを送信します。
- イベントチャネルからコンシューマ1へ、イベントデータを送信します。
- コンシューマ2からイベントチャネルへ、イベントデータの送信を要求します。
- 3、4と同様な処理の後、イベントチャネルからコンシューマ2へ、イベントデータを送信します。その後、イベントチャネルはデータを削除します。
(2) 複数のサプライヤとのイベント通信
1つのイベントチャネルに複数のサプライヤを接続した場合、イベントチャネルからサプライヤへのイベントデータの引き出し要求は、最初に接続したサプライヤに対して出されます。他のサプライヤは、接続はできますが、イベント通信はできません。イベント通信中のサプライヤを切断すると、次に接続したサプライヤがイベント通信を行います。
(3) イベントデータの蓄積
イベントデータの蓄積について説明します。イベントチャネルに蓄積したイベントデータは接続中のコンシューマが取り出した後に削除されます。このときのイベントデータの蓄積から削除までの処理について説明します。
- サプライヤとコンシューマ1はconnect( )によりイベントチャネルに接続します。
- コンシューマ1はpull( )によりイベントデータの引出しを要求します。イベントデータ○はサプライヤからコンシューマ1に送られます。この時点ではまだコンシューマ2が接続されていません。そのためイベントチャネルはイベントデータ○を削除します。
- コンシューマ2はconnect( )によりイベントチャネルに接続します。
- コンシューマ2はpull( )によりイベントデータの引出しを要求します。イベントデータ●がサプライヤからコンシューマ2に送られます。この時点ではコンシューマ1が接続しているため、イベントデータをイベントチャネルに蓄積します。
- コンシューマ1はpull( )によりイベントデータの引出しを要求します。イベントデータ●はイベントチャネルからコンシューマ1に送られます。この時点でイベントデータ●が蓄積した段階で接続していたコンシューマは存在しません。そのためイベントチャネルはイベントデータ●を削除します。

イベントデータを蓄積してから削除するまでの時間をessetcnfコマンドとessetcnfchnlコマンドの“イベントデータの生存時間”(-ltimeオプション)により指定することができます。この時間内にコンシューマがイベントデータを受け取らなかった場合、イベントチャネルはイベントデータを自動削除します。このときのイベントデータの蓄積から削除までの処理について説明します。
- サプライヤとコンシューマ1と2はconnect()によりイベントチャネルに接続します。
- コンシューマ2はpull( )によりイベントデータの引出しを要求します。イベントデータ●はサプライヤからコンシューマ2に送られます。この時点でコンシューマ1が接続しているため、イベントデータ●をイベントチャネルに蓄積します。
- 蓄積したイベントデータ●は、蓄積してからの時間が生存時間を超えたため、イベントチャネルから削除されます。

All Rights Reserved, Copyright(C) 富士通株式会社 2005