図1を用いて本技術の実施の形態を簡単に説明しておく。図1は、ファイルの利用イベントを収集する例を示している。ここで、ユーザAが、ファイルA.docを生成して編集を行い(ステップ(1))、メールにファイルA.docを添付してユーザBに送信する(ステップ(2))。ユーザBは、ファイルA.docが添付されたファイルを受信し(ステップ(3))、文書編集アプリケーションでファイルA.docを編集する(ステップ(4))。本実施の形態のシステムによれば、ユーザBによる編集という操作イベントが自動的にユーザAに通知される。これによってユーザAは、ユーザBがファイルA.docに対して編集操作を行ったことを知ることができる。このような通知はログとして蓄積される。また、例えば、ユーザBは、メールではなくUSB(Universal Serial Bus)メモリなどのフラッシュメモリ型の記録媒体でファイルA.docをユーザCに渡す(ステップ(5))。ユーザCは、ユーザBからUSBメモリ等でファイルA.docを受け取ると(ステップ(6))、文書編集アプリケーションでファイルA.docの編集を行う(ステップ(7))。このような場合にも、本実施の形態のシステムによれば、ユーザCによる編集という操作イベントが自動的にユーザAに通知される。これによってユーザAは、今度はユーザCがファイルA.docに対して編集操作を行ったことを知ることができる。この通知についてもログとして蓄積される。
以下、このようなログ収集を実現するための具体的構成について説明する。
[実施の形態1]
図2に本実施の形態におけるネットワーク構成例を示す。図2の例では、クライアント端末Aは、中間のブローカ・コンピュータであるブローカAに接続されており、ブローカAは、最上位のブローカ・コンピュータであるブローカCに接続されている。また、クライアント端末B及びCは、中間のブローカ・コンピュータであるブローカBに接続されており、ブローカBは、ブローカCに接続されている。本実施の形態では、説明の便宜上このような木構造のネットワークを一例として説明するが、ネットワークトポロジには無関係である。例えば、メッシュ形のネットワークであっても良い。
次に、ブローカA乃至Cのブローカ・コンピュータの機能ブロック図について図3Aを用いて説明する。ブローカ・コンピュータ100は、(A)ネットワークからメッセージを受信し、またメッセージをネットワークに送信するメッセージ送受信部110と、(B)メッセージ送受信部110が受信したメッセージを解析し、メッセージ送受信部110により送信すべきメッセージを生成する処理などを実施するメッセージ解析部120と、(C)メッセージ解析部120によって管理及び更新されるルーティングテーブル130とを有する。ルーティングテーブル130は、ブローカ・コンピュータ100のメインメモリや二次記憶装置などのデータ記憶装置に格納される。ルーティングテーブル130は、当該ブローカ・コンピュータ100の接続ノード毎に接続ノード情報1310を含む。接続ノード情報1310は、接続しているノードのIPアドレス1311と、接続しているノードが親ノードであるか否かを表す親ノードフラグ1312と、接続しているノードで興味のあるファイル等のファイル名(すなわち識別子)のリストであるサブスクリプション・リスト1313と、イベント逆経路決定機構1314とを含む。
イベント逆経路決定機構1314は、例えば接続しているノードから受信したイベント通知メッセージに係るイベント(具体的にはイベントに係るファイルのファイル名)のリストである。これによって、接続しているノードから過去にどのようなイベントについて通知があったのかを確認することができる。より具体的には、特定のイベントについて過去にイベント通知メッセージを受信したことがあるかを確認することができる。なお、イベント逆経路決定機構1314は、このようなリストではなく、誤りが発生する可能性はあるがブルームフィルタ(Bloom Filter)を採用することができる。すなわち、ブルームフィルタを用いることによって、特定のイベントについて過去イベント通知メッセージを受信したことがある(True)又は無い(False)という結果を得ることができる。ブルームフィルタについては、既によく知られた技術であるから、これ以上述べない。
次に、クライアント端末200の機能ブロック図を図3Bに示す。クライアント端末200は、(A)ネットワークからメッセージを受信し、ネットワークに対してメッセージを送信するメッセージ送受信部210と、(B)メッセージ送受信部210が受信したメッセージを解析し、メッセージ送受信部210により送信すべきメッセージを生成する処理などを実施するメッセージ解析部220と、(C)ユーザからの指示やファイルの編集などを行う他のアプリケーション・プログラムによるファイルの編集や更新などのイベントを検出し、メッセージ解析部220に通知するインタフェース部230と、(D)メッセージ解析部220により管理及び更新されるルーティングテーブル240と、(E)イベントのデータを蓄積するログ格納部250とを有する。ルーティングテーブル240は、クライアント端末のメインメモリや二次記憶装置などのデータ記憶装置に格納される。そして、ルーティングテーブル240は、当該クライアント端末が接続しているノード毎に接続ノード情報2410を含む。接続ノード情報2410は、接続しているノードのIPアドレス2411と、イベントが発生してもイベント通知メッセージを送信する必要がないと指示されているイベント(具体的にはファイル)のリストである不要イベント・リスト2412とを含む。
次に、図4乃至図17を用いて図2に示したようなシステム構成についての処理フローを説明する。まず図4を用いてサブスクリプション登録時の基本的な動作について説明する。クライアント端末AのユーザAは、クライアント端末Aを操作して、特定のファイル(例えばA.doc)を生成し、データ格納部に保存する。クライアント端末Aは、ユーザからの指示に応じて、ファイルA.docを生成し、データ格納部に格納する(ステップS1)。
また、ユーザAは、クライアント端末Aを操作して、ログを収集すべきと判断したファイルA.docのログ収集指示を入力し、クライアント端末Aは、ユーザからファイルA.docのログ収集指示の入力を受け付ける(ステップS3)。そして、クライアント端末Aは、ログを収集すべきファイルのファイル名A.docを含むサブスクリプション・メッセージを生成して、ブローカAに送信する(ステップS5)。
ブローカAは、クライアント端末Aから、ログを収集すべきファイルのファイル名A.docを含むサブスクリプション・メッセージを受信する(ステップS7)。そして、ブローカAは、ルーティングテーブル130において、クライアント端末Aについての接続ノード情報1310に含まれるサブスクリプション・リスト1313にファイル名A.docを登録することによって、サブスクリプション登録を行う(ステップS9)。また、ブローカAは、親ノードフラグ1312がオンにセットされている、すなわち親ノードとして指定されている接続ノードについての接続ノード情報1310が存在するか判断し、親ノードが存在する場合には、当該親ノード(図2の場合ブローカC)に対して、ステップS7で受信したサブスクリプション・メッセージに含まれるファイル名A.docを含むサブスクリプション・メッセージを生成し、送信する(ステップS11)。
ブローカCは、ブローカAから、ログを収集すべきファイルのファイル名A.docを含むサブスクリプション・メッセージを受信する(ステップS13)。そして、ブローカCは、ルーティングテーブル130において、ブローカAについての接続ノード情報1310に含まれるサブスクリプション・リスト1313にファイル名A.docを登録することによって、サブスクリプション登録を行う(ステップS15)。
なお、ブローカCでも、親ノードフラグ1312がオンにセットされている、すなわち親ノードとして指定されている接続ノードについての接続ノード情報1310が存在するかを判断する。しかし、図2の例ではブローカCは最上位のブローカ・コンピュータであるから、上位のブローカ・コンピュータに、サブスクリプション・メッセージを送信することはない。
また、本実施の形態では、クライアント端末AのユーザAは、クライアント端末Aを操作して、クライアント端末BのユーザB宛にファイルA.docを送信したものとする(ステップS17)。他の手法によってファイルA.docをユーザBに渡すようにしても良い。例えば、フラッシュメモリ型の記録媒体や光ディスクその他の記録媒体などを手渡しするような場合もある。
次に、図5を用いて、図4の場面におけるクライアント端末Aの動作についてより詳しく説明する。まず、ユーザAからの指示に応じて、他のアプリケーション・プログラムによりファイルA.docを生成し、データ格納部に格納する(ステップS20)。この処理は、インタフェース部230自体の処理ではないので、点線ブロックで示している。次に、インタフェース部230は、ユーザAからファイルA.docの指定を含むログ収集指示の入力を受け付ける(ステップS21)。但し、インタフェース部230が、ログ収集指示の代わりに、所定形式のファイルの保存など、予め定められたアクションを検出して、自動的にステップS23の処理を実施するようにしても良い。さらに、生成されたファイルの内容を解析して、例えば機密や秘密といった文言が含まれていることを検出した場合に自動的にステップS23の処理を実施するようにしても良い。このように、ユーザからの指定により又は自動的にログを収集すべきファイルを特定する。
そして、インタフェース部230は、ファイル名A.docを含むサブスクリプション・メッセージの送信依頼を、メッセージ解析部220に出力する(ステップS23)。これに対して、メッセージ解析部220は、インタフェース部230からサブスクリプション・メッセージの送信依頼を受信し(ステップS25)、ファイル名A.docを含むサブスクリプション・メッセージを生成する(ステップS27)。なお、宛先ブローカのアドレスについては、ルーティングテーブル240の接続ノード情報2410に含まれるIPアドレスを読み出して、サブスクリプション・メッセージに設定する。そして、メッセージ解析部220は、生成したサブスクリプション・メッセージ及び当該サブスクリプション・メッセージの送信依頼をメッセージ送受信部210に出力する(ステップS29)。
メッセージ送受信部210は、メッセージ解析部220から、サブスクリプション・メッセージ及び当該サブスクリプション・メッセージの送信依頼を受信し(ステップS31)、ブローカA宛に送信する(ステップS33)。
このような処理を実施することによって、ユーザが興味を持っており、ログを収集するファイルについてサブスクリプションをブローカに登録することができる。
次に、図6を用いて、図4の場面におけるブローカ・コンピュータ(ブローカA乃至C)の動作についてより詳しく説明する。ブローカ・コンピュータのメッセージ送受信部110は、接続されているノードからサブスクリプション・メッセージを受信すると(ステップS41)、当該サブスクリプション・メッセージをメッセージ解析部120に出力する(ステップS43)。メッセージ解析部120は、サブスクリプション・メッセージをメッセージ送受信部110から受信すると(ステップS45)、ルーティングテーブル130において、当該サブスクリプション・メッセージの送信元ノードについての接続ノード情報1310におけるサブスクリプション・リスト1313にファイル名A.docを追加登録する(ステップS47)。さらに、メッセージ解析部120は、親ノードフラグ1312がオンにセットされている、すなわち親ノードとして指定されている接続ノードについての接続ノード情報1310が存在するか判断し、親ノードが存在する場合には、当該親ノードに対して、ステップS45で受信したサブスクリプション・メッセージに含まれるファイル名A.docを含むサブスクリプション・メッセージを生成し、送信する(ステップS49)。親ノードのIPアドレスについては、当該親ノードの接続ノード情報1310に含まれるIPアドレス1311を読み出し、サブスクリプション・メッセージに設定する。ステップS49については、親ノードが存在しない場合には、スキップする。
そして、メッセージ解析部120は、生成されたサブスクリプション・メッセージ及び当該サブスクリプション・メッセージの送信依頼を、メッセージ送受信部110に出力する(ステップS51)。メッセージ送受信部110は、メッセージ解析部120から、生成されたサブスクリプション・メッセージ及び当該サブスクリプション・メッセージの送信依頼を受信し(ステップS53)、親ノード宛に送信する(ステップS55)。
なお、ステップS51の後には、本来さらに処理を実施する必要がある。しかし、現段階では、その前提となる処理の説明が完了していないので、後に説明する。
自身の親ノードが存在しない、すなわち最上位のブローカ・コンピュータである場合には、ブローカ・コンピュータは、後に述べる処理をさらに実施する。
次に、図7及び図8を用いてイベント通知メッセージを配信する際の処理について説明する。ここでは、クライアント端末Bにおいて、ファイルA.docの編集が行われるものとする。具体的には、図4のステップS7に応じて、クライアント端末Bは、クライアント端末Aから送られてきたファイルA.docを受信し、データ格納部に格納する(ステップS61)。クライアント端末BのユーザBは、クライアント端末Bの他のアプリケーション・プログラムに対してファイルA.docの編集処理を指示し、クライアント端末Bの他のアプリケーション・プログラムは、ファイルA.docの編集処理を実施する。編集だけを対象とするものではなく、例えば印刷やコピーをも対象としても良い。本実施の形態では編集を代表例として示すこととする。
そうすると、クライアント端末Bは、ファイルA.docに対して編集処理が行われたことを検出する(ステップS63)。そして、クライアント端末Bは、ファイル名A.docが、ルーティングテーブル240のブローカBについての接続ノード情報2410における不要イベント・リスト2412に登録されているかを確認する(ステップS65)。ファイル名A.docが不要イベント・リスト2412に登録されている場合には、その接続ノードに対してはイベント通知メッセージを送信しない。この処理については後に述べる。ここでは、不要イベント・リスト2412にはファイル名A.docは登録されていないものとする。
そこで、クライアント端末Bは、ファイル名A.docを含むイベント通知メッセージを生成し、ブローカBにイベント通知メッセージを送信する(ステップS67)。イベント通知メッセージには、どのような処理(例えば編集など)を行ったかといったデータを含むようにしても良い。
これに対して、ブローカBは、クライアント端末Bからイベント通知メッセージを受信し(ステップS69)、ルーティングテーブル130において、イベント通知メッセージの送信元の接続ノード情報1310におけるイベント逆経路決定機構1314に、イベント通知メッセージについてのイベント(ここではファイル名A.doc)を登録する(ステップS71)。イベント逆経路決定機構1314が受信イベント・リストであればそのままこのイベントを登録し、ブルームフィルタであればこのイベントが発生したことを学習させる。
そして、ブローカBは、ルーティングテーブル130において親ノードフラグ1312がオンにセットされていない配下の他のノード(例えばクライアント端末C)が存在するか判断する。配下の他のノードが存在する場合には、ブローカBは、そのノードについての接続ノード情報1310に含まれるサブスクリプション・リスト1313に、イベント通知メッセージに含まれるファイル名A.docが登録されているか否かを判断することにより、配下の他のノードに本イベントのサブスクリプションが登録されているかを確認する(ステップS73)。ここではサブスクリプションが登録されていないものとし、配下の他のノードに対してイベント通知メッセージを送信しないものとする。
さらに、ブローカBは、ルーティングテーブル130において親ノードフラグ1312がオンにセットされているノードが存在するか確認し、存在する場合には、ファイル名A.docを含むイベント通知メッセージを生成し、親ノードフラグ1312がオンにセットされているノード(ここではブローカC)のIPアドレス宛にイベント通知メッセージを送信する(ステップS75)。
これに対して、ブローカCは、ブローカBから、ファイル名A.docを含むイベント通知メッセージを受信する(ステップS77)。処理は端子Aを介して図8の処理に移行する。
ブローカCは、ルーティングテーブル130において、送信元の接続ノード情報1310のイベント逆経路決定機構1314に、受信したイベント通知メッセージに係るイベント(ここではファイル名A.doc)を登録する(ステップS79)。イベント逆経路決定機構1314が受信イベント・リストであればそのままこのイベントを登録し、ブルームフィルタであればこのイベントが発生したことを学習させる。また、ブローカCは、ルーティングテーブル130において親ノードフラグ1312がオンにセットされていない配下の他のノード(例えばブローカA)が存在するか判断する。配下の他のノードが存在する場合には、ブローカCは、そのノードについての接続ノード情報1310に含まれるサブスクリプション・リスト1313に、イベント通知メッセージに含まれるファイル名A.docが登録されているか否かを判断することにより、配下の他のノードに本イベントのサブスクリプションが登録されているかを確認する(ステップS81)。ここでは、図6のステップS47においてサブスクリプションの登録がなされているものとする。なお、ファイルA.docについてのサブスクリプションの登録がなされていない場合の処理については後に説明する。
ファイルA.docについてのサブスクリプションの登録がなされている場合には、ブローカCは、ファイルA.docについてのサブスクリプションの登録がなされている接続ノードについての接続ノード情報1310に含まれるIPアドレス1311を読み出す。また、ブローカCは、ファイル名A.docを含むイベント通知メッセージを生成し、読み出したIPアドレス1311宛にイベント通知メッセージを送信する(ステップS83)。なお、図示していないがブローカBと同様に、親ノードフラグ1312がオンにセットされている接続ノードが存在するか確認する。ブローカCの場合には親ノードは設定されていないので、親ノードへイベント通知メッセージを転送する処理は行われない。
ブローカAは、ブローカCからイベント通知メッセージを受信する(ステップS85)。そして、ブローカAは、ルーティングテーブル130において、配下のノードの接続ノード情報1310に含まれるサブスクリプション・リスト1313に、受信したイベント通知メッセージに係るイベント(ここではファイル名A.doc)が登録されているか確認する(ステップS87)。サブスクリプションが登録されている接続ノードが存在する場合には、ブローカAは、この接続ノード(ここではクライアント端末A)のIPアドレス1311を読み出し、ファイル名A.docを含むイベント通知メッセージを生成し、読み出したIPアドレス1311宛にイベント通知メッセージを送信する(ステップS89)。
クライアント端末Aは、ブローカAからイベント通知メッセージを受信し(ステップS91)、ログ格納部250に、イベント通知メッセージについてのイベント(例えばファイル名A.doc)をログ格納部250に格納する(ステップS93)。
以上のように、ファイルA.docを編集したクライアント端末Bから、イベント通知メッセージが、サブスクリプションの登録を行ったクライアント端末Aへ送信される。
次に、図9を用いて、図7の場面におけるクライアント端末Bの動作について説明する。クライアント端末Bのインタフェース部230は、他のアプリケーション・プログラムによるファイルA.docの編集処理を検出する(ステップS101)。そうすると、インタフェース部230は、ファイル名A.docについてのイベント通知メッセージの送信依頼をメッセージ解析部220に出力する(ステップS103)。
メッセージ解析部220は、インタフェース部230から、イベント通知メッセージの送信依頼を受信すると(ステップS105)、当該送信依頼のイベント(ファイル名A.doc)が、ルーティングテーブル240の接続ノード情報2410における不要イベント・リスト2412に登録されているか確認する(ステップS107)。不要イベント・リスト2412に登録されているイベントの場合には、その接続ノードにはイベント通知メッセージを送信しない。一方、不要イベント・リスト2412に登録されていないイベントの場合には、メッセージ解析部220は、その接続ノードの接続ノード情報2410におけるIPアドレス2411を読み出して、ファイル名A.docを含むイベント通知メッセージを生成する(ステップS109)。そして、メッセージ解析部220は、読み出したIPアドレス2411宛にイベント通知メッセージを送信するように、イベント通知メッセージ及び当該イベント通知メッセージの送信依頼をメッセージ送受信部210に送信する(ステップS111)。
メッセージ送受信部210は、メッセージ解析部220からイベント通知メッセージ及び当該イベント通知メッセージの送信依頼を受信し(ステップS113)、当該送信依頼に従って、イベント通知メッセージを、指定のIPアドレス2411宛(すなわち接続されているブローカA宛)に送信する(ステップS115)。
このようにすれば適切にイベント通知メッセージが配信されるようになる。
次に、図10及び図11を用いて、図7及び図8の場面におけるブローカ・コンピュータの動作について説明する。まず、ブローカ・コンピュータのメッセージ送受信部110は、他のノードからイベント通知メッセージを受信し(ステップS121)、当該イベント通知メッセージをメッセージ解析部120に出力する(ステップS123)。
メッセージ解析部120は、メッセージ送受信部110からイベント通知メッセージを受信し(ステップS125)、ルーティングテーブル130において、送信元ノードについての接続ノード情報1310のイベント逆経路決定機構1314に、イベント通知メッセージに係るイベント(ファイル名A.doc)を登録する(ステップS127)。
さらに、メッセージ解析部120は、親ノードフラグ1312がオンになっておらず、送信元ノード以外の接続ノード(すなわち配下の他の接続ノード)の接続ノード情報1310におけるサブスクリプション・リスト1313に、イベント通知メッセージに係るイベント(ファイル名A.doc)が登録されているか確認する(ステップS129)。登録されていない場合には(ステップS131:Noルート)、処理は端子Bを介して図11の処理に移行する。一方、本イベントがサブスクリプション・リスト1313に登録されている接続ノードが存在する場合には(ステップS131:Yesルート)、メッセージ解析部120は、本イベントがサブスクリプション・リスト1313に登録されている接続ノードのIPアドレス1311を読み出し、ファイル名A.docを含むイベント通知メッセージを生成する。そして、メッセージ解析部120は、読み出したIPアドレス宛にイベント通知メッセージを送信するように、イベント通知メッセージ及び当該イベント通知メッセージの送信依頼を、メッセージ送受信部110に送信する(ステップS133)。そして処理は端子Bを介して図11の処理に移行する。
メッセージ送受信部110は、メッセージ解析部120からイベント通知メッセージ及び当該イベント通知メッセージの送信依頼を受信し(ステップS135)、指定されたIPアドレス宛にイベント通知メッセージを送信する(ステップS137)。
例えば、ブローカBで処理を行う場合に、クライアント端末CもファイルA.docについてサブスクリプションを登録している場合には、クライアント端末Cにもイベント通知メッセージが送信される。
図11の処理の説明に移行して、メッセージ解析部120は、今回受信したイベント通知メッセージが、本ブローカ・コンピュータの下流(すなわち親ノードフラグ1312がオンに設定されていないノード)からのイベント通知メッセージであり、接続ノード情報1310においてオンになっている親ノードフラグ1312が存在しない、すなわち自ノードが最上位ノードであるか確認する(ステップS139)。このような条件を満たしている場合には(ステップS141:Yesルート)、メッセージ解析部120は、ファイル名A.docで、送信元ノード以外の接続ノードの接続ノード情報1310におけるサブスクリプション・リスト1313を検索し、いずれのサブスクリプション・リスト1313にもファイル名A.docが登録されていないという条件を満たしているかを確認し、この条件をさらに満たす場合には、不要イベント通知メッセージ送信処理を実施する(ステップS143)。この不要イベント通知メッセージ送信処理については、後に詳しく述べる。なお、ステップS143の条件を満たさない場合には、不要イベント通知メッセージ送信処理を行わない。
一方、ステップS139における条件を満たしていない場合には(ステップS141:Noルート)、メッセージ解析部120は、親ノードフラグ1312がオンになっている接続ノード情報1310におけるIPアドレス1311を読み出し、ファイル名A.docを含むイベント通知メッセージを生成する。そして、メッセージ解析部120は、読み出したIPアドレス宛にイベント通知メッセージを送信するように、イベント通知メッセージ及び当該イベント通知メッセージの送信依頼を、メッセージ送受信部110に出力する(ステップS145)。
メッセージ送受信部110は、メッセージ解析部120から、イベント通知メッセージ及びイベント通知メッセージの送信依頼を受信し(ステップS147)、指定IPアドレス宛にイベント通知メッセージを送信する(ステップS149)。ブローカBであれば、ブローカCが親ノードであるから、この親ノードであるブローカCにイベント通知メッセージを送信する。
このようにすれば、適切にイベント通知メッセージが配信されるようになる。
次に、図12乃至図14を用いて、不要イベント通知メッセージが送信される場面について説明する。
クライアント端末BのユーザBが、他のアプリケーション・プログラムにファイルB.docの編集を指示し、クライアント端末Bの他のアプリケーション・プログラムは、ユーザBからの編集指示を受け付け、編集処理を実施する(図12:ステップS151)。クライアント端末Bのインタフェース部230は、ファイルB.docの編集等を検出し、メッセージ解析部220にファイルB.docについてのイベント通知メッセージの送信依頼を出力する。メッセージ解析部220は、ファイルB.docについてのイベント通知メッセージの送信依頼を受信すると、不要イベント・リスト2412をファイル名B.docで検索し、今回検出したイベント(ここではファイル名B.doc)が不要イベント・リスト2412に登録されているか確認する(ステップS153)。通常初期的には不要イベント・リスト2412には何も登録されていないので、ファイル名B.docは不要イベント・リスト2412に登録されていないと判断したものとする。そうすると、メッセージ解析部220は、ファイル名B.docを含むイベント通知メッセージを生成し、メッセージ送受信部210に、接続されているブローカBに送信させる(ステップS155)。
ブローカBは、クライアント端末Bから、ファイル名B.docを含むイベント通知メッセージを受信する(ステップS157)。そうすると、ブローカBは、ルーティングテーブル130において、イベント通知メッセージの送信元ノードの接続ノード情報1310におけるイベント逆経路決定機構1314に、イベント通知メッセージについてのイベント(ここではファイル名B.doc)を登録する(ステップS159)。
ブローカBは、ルーティングテーブル130において親ノードフラグ1312がオンにセットされていない配下の他のノード(例えばクライアント端末C)が存在するか判断する。そして、ブローカBは、配下の他のノードが存在する場合には、そのノードについての接続ノード情報1310に含まれるサブスクリプション・リスト1313に、イベント通知メッセージに含まれるファイル名B.docが登録されているか否かを判断することにより、配下の他のノードに本イベントのサブスクリプションが登録されているかを確認する(ステップS161)。ここではサブスクリプションが登録されていないものとし、配下の他のノードに対してイベント通知メッセージを送信しないものとする。
さらに、ブローカBは、ルーティングテーブル130において親ノードフラグ1312がオンにセットされているノードが存在するか確認し、存在する場合には、ファイル名B.docを含むイベント通知メッセージを生成し、親ノードフラグ1312がオンにセットされているノード(ここではブローカC)のIPアドレス宛にイベント通知メッセージを送信する(ステップS163)。
これに対して、ブローカCは、ブローカBから、ファイル名B.docを含むイベント通知メッセージを受信する(ステップS165)。処理は端子Cを介して図13の処理に移行する。
図13の処理の説明に移行して、ブローカCは、ルーティングテーブル130において、イベント通知メッセージの送信元ノードの接続ノード情報1310におけるイベント逆経路決定機構1314に、イベント通知メッセージについてのイベント(ここではファイル名B.doc)を登録する(ステップS167)。また、ブローカCは、ルーティングテーブル130において親ノードフラグ1312がオンにセットされていない配下の他のノード(例えばブローカA)が存在するか判断する。そして、配下の他のノードが存在する場合には、ブローカCは、そのノードについての接続ノード情報1310に含まれるサブスクリプション・リスト1313に、イベント通知メッセージに含まれるファイル名B.docが登録されているか否かを判断することにより、配下の他のノードに本イベントのサブスクリプションが登録されているかを確認する(ステップS169)。ファイル名B.docは、まだいずれの接続ノードについての接続ノード情報1310のサブスクリプション・リスト1313にも登録されていないものとする。
ファイル名B.docについてのサブスクリプションが登録されていない場合には、ブローカCは、図11のステップS143で触れた不要イベント通知メッセージ送信処理を実施して、ファイル名B.docを含む不要イベント通知メッセージを生成し、ファイルB.docを送信してきたことがある接続ノードであるブローカBを特定し、当該ブローカBに不要イベント通知メッセージを送信する(ステップS171)。不要イベント通知メッセージについては、後に説明する。
ブローカBは、ブローカAから不要イベント通知メッセージを受信する(ステップS173)。そして、ブローカBは、不要イベント通知メッセージの送信元ノード以外の接続ノードの接続ノード情報1310におけるイベント逆経路決定機構1314にて、ファイル名B.docを含むイベント通知メッセージを送信してきたことがあるか確認して、ファイル名B.docを含むイベント通知メッセージを送信してきたことがある接続ノードを、不要イベント通知メッセージの送信先として特定する(ステップS175)。ここでは送信先はクライアント端末Bと特定されたものとする。そして、ブローカBは、不要イベント通知メッセージをクライアント端末Bに送信する(ステップS177)。
クライアント端末Bは、ブローカBから不要イベント通知メッセージを受信する(ステップS179)。そして、クライアント端末Bは、ルーティングテーブル240において、送信元ノードについての接続ノード情報2410の不要イベント・リスト2412に、不要イベント通知メッセージで通知されたイベント(すなわちファイル名B.doc)を登録する(ステップS181)。
このように、どのユーザも配信を希望していないイベントについては、クライアント端末側でイベント通知メッセージを送信しないように、不要イベント・リストに登録しておく。これによって不要なメッセージの数を削減できるようになる。
次に、図14を用いて、上で述べた不要イベント通知メッセージ送信処理の内容を説明する。ブローカCのメッセージ解析部120は、親ノードが無く且つ特定のイベント(例えばファイルB.doc)のサブスクリプションが存在していない場合、受信したイベント通知メッセージに係るイベント(例えばファイルB.doc)から、イベント通知メッセージの送信元ノード以外の接続ノードの接続ノード情報1310におけるイベント逆経路決定機構1314で、ファイル名B.docを含むイベント通知メッセージを送信してきた接続ノードを、不要イベント通知メッセージの送信先として特定する(ステップS191)。
また、メッセージ解析部120は、特定された接続ノードのIPアドレス1311も読み出し、ファイル名B.docを含むイベント通知メッセージを生成し(ステップS193)、当該不要イベント通知メッセージをIPアドレス1311宛に送信するように、不要イベント通知メッセージ及び当該不要イベント通知メッセージの送信依頼を、メッセージ送受信部110に出力する(ステップS195)。
メッセージ送受信部110は、メッセージ解析部120から不要イベント通知メッセージ及び不要イベント通知メッセージの送信依頼を受信し(ステップS197)、指定IPアドレス宛に不要イベント通知メッセージを送信する(ステップS199)。
このようにすれば、適切に不要イベント通知メッセージを送信することができるようになる。
次に、新たにファイルB.docについてサブスクリプションを登録するユーザが出現した場合の処理について図15乃至図17を用いて説明する。
まず、例えばクライアント端末AのユーザAから、クライアント端末Aは、ファイルB.docのログ収集指示を受け付け(ステップS201)、当該ファイル名B.docを含むサブスクリプション・リクエストを生成して、接続ノードのブローカAに送信する(ステップS203)。ブローカAは、クライアント端末Aから、ログを収集すべきファイルのファイル名B.docを含むサブスクリプション・メッセージを受信する(ステップS205)。そして、ブローカAは、ルーティングテーブル130において、クライアント端末Aについての接続ノード情報1310に含まれるサブスクリプション・リスト1313にファイル名B.docを登録することによって、サブスクリプション登録を行う(ステップS207)。また、ブローカAは、親ノードフラグ1312がオンにセットされている、すなわち親ノードとして指定されている接続ノードについての接続ノード情報1310が存在するか判断する。親ノードが存在する場合には、ブローカAは、当該親ノード(図2の場合ブローカC)に対して、ステップS205で受信したサブスクリプション・メッセージに含まれるファイル名B.docを含むサブスクリプション・メッセージを生成し、送信する(ステップS209)。
ブローカCは、ブローカAから、ログを収集すべきファイルのファイル名B.docを含むサブスクリプション・メッセージを受信する(ステップS211)。
そして、ブローカCは、ルーティングテーブル130において、ブローカAについての接続ノード情報1310に含まれるサブスクリプション・リスト1313にファイル名B.docを登録することによって、サブスクリプション登録を行う(ステップS213)。ここまでは図4の処理内容と同じである。
なお、ブローカCでも、親ノードフラグ1312がオンにセットされている、すなわち親ノードとして指定されている接続ノードについての接続ノード情報1310が存在するか判断する。しかし、ブローカCは最上位のブローカ・コンピュータであるから、上位のブローカ・コンピュータに、サブスクリプション・メッセージを送信することはない。
また、ブローカCは、サブスクリプション・リクエストの送信元ノード以外の他のノードの接続ノード情報1310におけるサブスクリプション・リスト1313に、ファイル名B.docが登録済みであるか確認する(ステップS214)。
ステップS211より前に、既に他の接続ノードからファイル名B.docを含むサブスクリプション・リクエストを受信している場合には、既に不要イベント通知メッセージを送信している可能性があるので、本ステップで確認している。
よって、ブローカCは、他の接続ノードについてファイル名B.docのサブスクリプションが未登録であると確認された場合には、送信元ノード(ここではブローカA)以外の接続ノードについての接続ノード情報1310におけるイベント逆経路決定機構1314に対してファイル名B.docを問い合わせることによって、ファイルB.docについて過去にイベント通知メッセージを送信してきたことがある接続ノードをイベント通知元として特定する(ステップS215)。上で述べたように、他の接続ノードについてファイル名B.docのサブスクリプションが未登録である場合には、まだ誰もイベント通知メッセージを受信するようになっていない。そして、ファイル名B.docを含むイベント通知メッセージを送信してきたことがある接続ノードが特定できれば、この接続ノードの方向には、ファイルB.docを編集等していたクライアント端末が存在する。このクライアント端末の不要イベント・リスト2412にはファイル名B.docが登録されてしまっている可能性があるので、以下の処理で不要イベント・リスト2412からファイル名B.docを削除する。処理は、端子Dを介して図16の処理に移行する。
図16の処理の説明に移行して、ブローカCは、イベント通知元が特定できた場合には、ファイル名B.docを含むイベント通知再開メッセージを生成し、イベント通知元(ここではブローカB)に送信する(ステップS217)。ブローカBは、ブローカCから、ファイル名B.docを含むイベント通知再開メッセージを受信すると(ステップS219)、イベント通知再開メッセージの送信元ノード以外の接続ノードの接続ノード情報1310におけるイベント逆経路決定機構1314で、ファイル名B.docを含むイベント通知メッセージを送信してきたことがある接続ノードを、イベント通知元として特定する(ステップS221)。そして、ブローカBは、ファイル名B.docを含むイベント通知再開メッセージを生成し、イベント通知元であるクライアント端末Bに送信する(ステップS223)。
クライアント端末Bのメッセージ送受信部210は、ブローカBから、ファイル名B.docを含むイベント通知再開メッセージを受信すると(ステップS225)、メッセージ解析部220に当該イベント通知再開メッセージを出力する。メッセージ解析部220は、当該イベント通知再開メッセージに含まれるファイル名B.docで、ルーティングテーブル240において、イベント通知再開メッセージの送信元ノードについての接続ノード情報2410における不要イベント・リスト2412を検索し、該当するデータを削除する(ステップS227)。
このようにすれば、次回クライアント端末BでファイルB.docが編集される場合等には、イベント通知メッセージが配信されるようになる。
なお、図15及び図16の処理の場面において、ブローカCの詳細な動作について図17を用いて説明しておく。なお、以下説明する処理は、図6で示した処理の後に実施される処理である。
ブローカ・コンピュータのメッセージ解析部120は、親ノードフラグ1312がオンにセットされている接続ノード情報1310が存在していない、すなわち親ノードが存在していない場合、サブスクリプション・リクエストの送信元ノード以外の他のノードの接続ノード情報1310におけるサブスクリプション・リスト1313に、ファイル名A.docが登録済みであるか確認する(ステップS241)。ファイル名A.docが登録済みである場合には、以下の処理は実施されない。
サブスクリプション・リクエストの送信元ノード以外の他のノードのいずれの接続ノード情報1310においても、サブスクリプション・リスト1313にファイル名A.docが未登録であれば、メッセージ解析部120は、サブスクリプション・リクエストの送信元ノード以外の接続ノードについての接続ノード情報1310におけるイベント逆経路決定機構1314に対してファイル名B.docを問い合わせる。これによって、メッセージ解析部120は、ファイルA.docについて過去にイベント通知メッセージを送信してきたことがある接続ノードをイベント通知元として特定する(ステップS243)。ファイル名A.docを含むイベント通知メッセージを送信してきたことがある接続ノードが特定できれば、この接続ノードの方向には、ファイルA.docを編集していたクライアント端末が存在する。このクライアント端末の不要イベント・リスト2412にはファイル名A.docが登録されてしまっている可能性があるので、不要イベント・リスト2412からファイル名A.docを削除することにする。
メッセージ解析部120は、イベント通知元が特定できた場合には、当該イベント通知元のIPアドレス1311を読み出し、ファイル名A.docを含むイベント通知再開メッセージを生成する(ステップS245)。そして、メッセージ解析部120は、イベント通知元のIPアドレス宛にイベント通知再開メッセージを送信するように、生成されたイベント通知再開メッセージ及び当該イベント通知再開メッセージの送信依頼をメッセージ送受信部110に出力する(ステップS247)。
メッセージ送受信部110は、イベント通知再開メッセージ及び当該イベント通知再開メッセージの送信依頼を受信し(ステップS249)、指定IPアドレス宛に、イベント通知再開メッセージを送信する(ステップS251)。
以上のような処理を実施すれば、適切にイベント通知メッセージの配信が再開される。
以上のような処理を実施すれば、不必要なイベント通知メッセージが配信されなくなるので、ネットワークを流れるメッセージの量を削減することができるようになる。
[実施の形態2]
本実施の形態では、ネットワークに流れるメッセージの量をさらに削減する構成を採用する。具体的には、ブローカ・コンピュータ1000は、図18に示すような構成を有する。
ブローカ・コンピュータ1000は、(A)ネットワークからメッセージを受信し、またメッセージをネットワークに送信するメッセージ送受信部110と、(B)メッセージ送受信部110が受信したメッセージを解析し、メッセージ送受信部110により送信すべきメッセージを生成する処理等を実施するメッセージ解析部122と、(C)メッセージ解析部122によって管理及び更新されるルーティングテーブル140とを有する。メッセージ送受信部110自体は、第1の実施の形態と同じである。ルーティングテーブル140は、第1の実施の形態とは異なっているので、メッセージ解析部122についてもその機能は異なっている。
ルーティングテーブル140は、ブローカ・コンピュータ1000のデータ記憶装置に格納される。ルーティングテーブル140は、当該ブローカ・コンピュータ1000の接続ノード毎に接続ノード情報1410を含む。接続ノード情報1410は、接続しているノードのIPアドレス1411と、接続しているノードが親ノードであるか否かを表す親ノードフラグ1412と、接続しているノードで興味のあるファイル等のファイル名(すなわち識別子)で表されるイベントと本データの所有者のユーザIDと例外的にイベント通知メッセージを転送しないこととする送信元ノードのリストである例外ノードリストとを含むサブスクリプションデータ1413と、イベント逆経路決定機構1414とを含む。
サブスクリプションデータ1413は、例えばイベントと所有者との組み合わせ毎に、必要なセット数用意される。IPアドレス1411と親ノードフラグ1412とイベント逆経路決定機構1414とは、第1の実施の形態と同様である。
また、クライアント端末3000は、図19に示すように、(A)ネットワークからメッセージを受信し、ネットワークに対してメッセージを送信するメッセージ送受信部310と、(B)メッセージ送受信部310が受信したメッセージを解析し、メッセージ送受信部310により送信すべきメッセージを生成する処理等を実施するメッセージ解析部320と、(C)ユーザからの指示やファイルの編集などを行う他のアプリケーション・プログラムによるファイルの編集や更新などのイベントを検出し、メッセージ解析部320に通知するインタフェース部330と、(D)メッセージ解析部320により管理及び更新されるルーティングテーブル340と、(E)イベントについてのログを格納するログ格納部350とを有する。メッセージ送受信部310とログ格納部350とは第1の実施の形態と対応する要素と同様である。
ルーティングテーブル340は、図19に示すように、クライアント端末のデータ記憶装置に格納される。そして、ルーティングテーブル340は、当該クライアント端末が接続しているノード毎に接続ノード情報3410を含む。接続ノード情報3410は、接続しているノードのIPアドレス3411と、イベントが発生してもイベント通知メッセージを送信する必要がないと指示されているイベント(又はファイル)のリストである不要イベント・リスト3412とを含む。さらに、接続されている特別のノードとして、ピアツーピアでイベント通知メッセージを送信するクライアント端末が存在する場合には、当該クライアント端末用の接続ノード情報3420をも含む。この接続ノード情報3420は、接続されているノードのIPアドレス3421と、サブスクリプションの対象であるファイル名のリストであるサブスクリプション・リスト3422とを含む。
本実施の形態では、図20に示すように、1つのブローカCに、クライアント端末A及びBが接続されている例を示す。ここでクライアント端末Aは、ログを収集するクライアント端末であり、クライアント端末Bは、イベント通知メッセージを配信するクライアント端末であるとする。
次に、図20に示したシステムの動作について説明する。基本的な動作は第1の実施の形態と同様であるが、クライアント端末Bからクライアント端末Aが、イベント通知メッセージを直接受信できるようにする機構を導入するに当たって変更された部分がある。この変更された部分を特に説明する。
まず、サブスクリプション・リクエストを送信する場面の基本的な処理は、第1の実施の形態と同じである。
但し、サブスクリプション・メッセージは、ログ収集対象ファイルのファイル名だけではなく、サブスクリプションの所有者(owner)の識別子(所有者IDと呼ぶ)を含むものとする。所有者IDは、ユーザのIDの場合もあればクライアント端末のIDの場合もある。そして、ブローカ・コンピュータ1000は、サブスクリプションデータ1413として、上で述べたようにファイル名と所有者IDとを対応付けて、ルーティングテーブル140に登録する。
一方、イベント通知メッセージは、編集等が行われたファイル名に加えて、本イベントの所有者(owner)の識別子(以下、ユーザIDと呼ぶ。)及びIPアドレスを含む。ユーザIDは、ユーザのIDの場合もあればクライアント端末のIDの場合もある。このように、サブスクリプションを登録した者(subscriber)に、イベントの所有者の識別子及びIPアドレスが通知されることになる。
このような設定の下、本実施の形態の主要な処理について図21乃至図28を用いて説明する。ユーザから指示等に応じて又はインタフェース部330がイベント通知メッセージの受信頻度等に応じて自動的に判断して、特定のクライアント端末(ここではクライアント端末Bとする)からの特定のイベント通知メッセージが直接配信されるように、ブローカC及び特定のクライアント端末に要求するものとする。これによって、イベント通知メッセージの、ブローカ経由での配信量が削減されるようになり、全体としてもメッセージの数が削減される。
まず、クライアント端末Aのインタフェース部330は、ユーザなどから、イベント通知メッセージに係るイベント(ここではファイル名)及び当該イベント通知メッセージの送信元クライアント端末のID(以下、除外ユーザID)の指定を受け付け、ファイル名及び除外ユーザIDをメッセージ解析部320に出力して、アンサブスクリプション・リクエストの送信を依頼する。メッセージ解析部320は、ファイル名及び除外ユーザIDを受信すると、受信したファイル名、所有者ID(すなわち、本メッセージの送信元のID。ここでは000A。)及び受信した除外ユーザID(ここでは000B)を含むアンサブスクリプション・リクエストを生成する。さらに、メッセージ解析部320は、ルーティングテーブル340において、ブローカCについての接続ノード情報3410からIPアドレス3411を読み出す。そして、メッセージ解析部320は、当該IPアドレス宛にサブスクリプション・リクエストを送信するように、生成したアンサブスクリプション・リクエスト及び当該アンサブスクリプション・リクエストの送信依頼をメッセージ送受信部310に出力する。メッセージ送受信部310は、メッセージ解析部320から、アンサブスクリプション・リクエスト及び当該アンサブスクリプション・リクエストの送信依頼を受信すると、指定IPアドレス3411宛(すなわち、接続している親ノードであるブローカCに)、アンサブスクリプション・リクエストを送信する(図21:ステップS261)。
ブローカCのメッセージ送受信部110は、クライアント端末Aから、ファイル名、所有者ID及び除外ユーザIDを含むアンサブスクリプション・リクエストを受信すると(ステップS263)、メッセージ解析部122に出力する。メッセージ解析部122は、ルーティングテーブル140において送信元ノードの接続ノード情報1410を特定し、当該接続ノード情報1410に含まれるサブスクリプションデータ1413のうち、受信したファイル名及び所有者IDについてのサブスクリプションデータ1413を特定し、特定されたサブスクリプションデータ1413に含まれる例外ノードリストに、除外ユーザIDを追加登録する(ステップS265)。
具体的には、サブスクリプションデータ1413は、図22の状態から図23の状態に変化する。図22は、サブスクリプション・リクエストで、ユーザA(所有者ID=000A)が、ファイルA.docのサブスクリプションを登録した状態である。そして、今回のアンサブスクリプション・リクエストを受信すると、図23に示すように、同じサブスクリプションデータ1413において、除外ユーザIDである「000B」が、例外ノードリストに追加登録される。
さらに、メッセージ解析部122は、ルーティングテーブル140において、親ノードフラグ1412がオンにセットされている接続ノード情報1410を検索し、親ノードフラグ1412がオンにセットされている接続ノード情報1410が存在する、すなわち親ノードが存在するか確認する。親ノードが存在する場合には、メッセージ解析部122は、当該親ノードのIPアドレス1411を読み出し、受信したファイル名、所有者ID及び除外ユーザIDを含むアンサブスクリプション・リクエストを生成する。そして、メッセージ解析部122は、読み出したIPアドレス1411宛にアンサブスクリプション・リクエストを送信するように、生成したアンサブスクリプション・リクエスト及びその送信依頼をメッセージ送受信部110に出力する。メッセージ送受信部110は、アンサブスクリプション・リクエスト及びその送信依頼を受信すると、指定IPアドレス宛に、アンサブスクリプション・リクエストを送信する(ステップS267)。親ノードが存在しない場合にはアンサブスクリプション・リクエストを転送することはない。なお、図20の例では、ブローカCの親ノードは存在しないので、処理はアンサブスクリプション・リクエストを転送することなく終了する。
一方、クライアント端末Aのメッセージ解析部320は、ファイル名(ここではA.doc)、本サブスクリプションの所有者ID(ユーザAのユーザID「000A」)及びクライアント端末AのIPアドレスを含むP2P(ピアツーピア:peer to peer)サブスクリプション・リクエストを生成する。そして、メッセージ解析部320は、イベント通知メッセージに含まれるクライアント端末BのIPアドレス宛にP2Pサブスクリプション・リクエストを送信するように、生成したP2Pサブスクリプション・リクエスト及び当該リクエストの送信依頼をメッセージ送受信部310に出力する。メッセージ送受信部310は、指定IPアドレス宛、すなわちクライアント端末Bに、P2Pサブスクリプション・リクエストを送信する(ステップS269)。この段階にて、クライアント端末Aのメッセージ解析部320は、ルーティングテーブル340において、クライアント端末Bのための接続ノード情報を格納するようにしても良い。この際少なくともクライアント端末BのIPアドレスを格納しておく。
クライアント端末Bのメッセージ送受信部310は、クライアント端末Aから、ファイル名(ここではA.doc)、所有者ID(ここでは「000A」)及びクライアント端末AのIPアドレスを含むP2Pサブスクリプション・リクエストを受信し(ステップS271)、メッセージ解析部320に出力する。メッセージ解析部320は、P2Pサブスクリプション・リクエストを受信すると、当該P2Pサブスクリプション・リクエストに応答するための接続ノード情報3420をルーティングテーブル340に追加する(ステップS273)。具体的には、P2Pサブスクリプション・リクエストに含まれる、クライアント端末AのIPアドレスを、IPアドレス3421として設定し、ファイル名A.doc及び所有者ID「000A」を、サブスクリプション・リスト3422に登録する。
このような処理を実施することによって、以下に述べるようにクライアント端末Bで次にファイルA.docについて編集などが行われた場合には、直接イベント通知メッセージがクライアント端末Aに配信されるようになる。
次に、図24乃至図28を用いて、クライアント端末BにおいてファイルA.docに対して編集などが行われた場面における処理内容について説明する。クライアント端末BのユーザBは、クライアント端末Bで実行されている他のアプリケーション・プログラムにファイルA.docの編集等を実施させる。これに対して、インタフェース部330は、ファイルA.docの編集等を検出し(ステップS281)、メッセージ解析部320に、ファイルA.docの編集を検出したことを通知する。メッセージ解析部320は、ファイルA.docの編集の検出を通知されると、当該ファイルA.docが不要イベント・リスト3412に登録されているか確認する(ステップS283)。ファイル名A.docが不要イベント・リスト3412に登録されていれば、その接続ノードについてはイベント通知メッセージを配信しない。ここでは、不要イベント・リスト3412に、ファイル名A.docは登録されていないものとする。
ファイル名A.docが登録されていなければ、メッセージ解析部320は、ブローカCのIPアドレスをブローカCの接続ノード情報3410から読み出し、ファイル名A.doc、イベントの所有者ID「000B」及びクライアント端末BのIPアドレスを含むイベント通知メッセージを生成する。そして、メッセージ解析部320は、ブローカCのIPアドレス宛にイベント通知メッセージを送信するように、生成したイベント通知メッセージ及びその送信依頼をメッセージ送受信部310に出力する。メッセージ送受信部310は、メッセージ解析部320から、イベント通知メッセージ及びその送信依頼を受信し、ブローカCへ送信する(ステップS285)。クライアント端末Bは、さらに端子E以降の処理を実施するが、ここでは先にブローカCの処理内容を説明する。
ブローカCのメッセージ送受信部110は、クライアント端末Bからイベント通知メッセージを受信すると(ステップS287)、メッセージ解析部122に出力する。メッセージ解析部122は、メッセージ送受信部110からイベント通知メッセージを受信すると、ルーティングテーブル140において、イベント通知メッセージの送信元の接続ノード情報1410におけるイベント逆経路決定機構1414に、イベント通知メッセージに係るイベント(ファイル名A.doc)を登録する(ステップS289)。さらに、メッセージ解析部122は、親ノードフラグ1412がオンに設定されていない接続ノード情報1410、すなわち配下の他のノードを検索する。そして、メッセージ解析部122は、該当する接続ノード情報1410が存在する場合には、イベント通知メッセージのイベント(ファイル名A.doc)が当該接続ノード情報1410におけるサブスクリプションデータ1413に含まれているか確認する(ステップS291)。例えば、ブローカCに接続している他のクライアント端末が存在するか確認するものである。
イベント通知メッセージのイベント(ファイル名A.doc)がサブスクリプションデータ1413に含まれている場合には、メッセージ解析部122は、イベント通知メッセージに含まれる所有者IDが、このサブスクリプションデータ1413の例外ノードリストに含まれるか確認する(ステップS293)。このステップについては、ステップS291でイベント通知メッセージのイベントがサブスクリプションデータ1413に含まれない場合には、実施されない。例えば、サブスクリプションデータ1413に図23に示すようなデータが登録されているとすると、イベント通知メッセージの所有者IDが「000B」であれば、例外ノードリストに登録されていることになる。処理は端子Fを介して図25の処理に移行する。
図25の処理の説明に移行して、イベント通知メッセージにおける送信元の所有者IDが、対応する例外ノードリストに登録されていない場合には、メッセージ解析部122は、ステップS291で特定されたサブスクリプションに係るIPアドレスを接続ノード情報1410から抽出し、ファイル名A.doc、所有者ID「000B」及びクライアント端末BのIPアドレスを含むイベント通知メッセージを生成する。また、メッセージ解析部122は、生成したイベント通知メッセージを配下の他のノードのIPアドレス宛に送信するように、イベント通知メッセージ及びその送信依頼をメッセージ送受信部110に出力する。メッセージ送受信部110は、メッセージ解析部122から、イベント通知メッセージ及びその送信依頼を受信すると、指定IPアドレス宛に、イベント通知メッセージを送信する(ステップS295)。ステップS295は、例外ノードリストにイベント通知メッセージにおける送信元の所有者IDが登録されているサブスクリプションについては実施されない。
また、メッセージ解析部122は、親ノードフラグ1412がオンにセットされている接続ノードが存在するか、すなわち親ノードが存在するか確認し、親ノードが存在する場合には、当該親ノードのIPアドレスを読み出す。そして、メッセージ解析部122は、ファイル名A.doc、所有者ID「000B」及びクライアント端末BのIPアドレスを含むイベント通知メッセージを生成する。そして、メッセージ解析部122は、生成したイベント通知メッセージを親ノードのIPアドレス宛に送信するように、イベント通知メッセージ及びその送信依頼をメッセージ送受信部110に出力する。メッセージ送受信部110は、メッセージ解析部122から、イベント通知メッセージ及びその送信依頼を受信すると、指定IPアドレス宛に、イベント通知メッセージを送信する(ステップS297)。親ノードが存在しない場合にはステップS297は実行されない。
また、クライアント端末Bのメッセージ解析部320は、P2Pサブスクリプション・リクエストに応じて生成した接続ノード情報3420がルーティングテーブル340に保持されている場合には、当該接続ノード情報3420のサブスクリプション・リスト3422についても、本イベント(ここではファイル名A.doc)が登録されているか確認する。ファイル名A.docが登録されている場合には、メッセージ解析部320は、ファイル名A.doc及び本イベントの所有者ID(ここでは「000B」)を含むP2Pイベント通知メッセージを生成し、クライアント端末AのIPアドレスを読み出す。そして、メッセージ解析部320は、クライアント端末AのIPアドレス宛にP2Pイベント通知メッセージを送信するように、P2Pイベント通知メッセージ及びその送信依頼を、メッセージ送受信部310に出力する。メッセージ送受信部310は、メッセージ解析部320から、P2Pイベント通知メッセージ及びその送信依頼を受信すると、指定IPアドレス宛にP2Pイベント通知メッセージを送信する(ステップS299)。
クライアント端末Aのメッセージ送受信部310は、クライアント端末BからP2Pイベント通知メッセージを受信すると、メッセージ解析部320に出力する。メッセージ解析部320は、P2Pイベント通知メッセージに係るイベント(ファイル名A.doc)などをログ格納部350に格納する(ステップS301)。
このような処理を行うことによって、例えば頻繁にクライアント端末BがファイルA.docを編集するような場合、ブローカCを経由してイベント通知メッセージを送信するよりも、ネットワーク全体のメッセージ送信量を削減することができる。
なお、図21で示したように、除外ユーザIDを含むアンサブスクリプション・リクエストを用いることで、サブスクリプション全てを削除せずに済むようになる。具体的には、図26に示すように、図21の単純化された状態ではなく、ブローカCにさらにクライアント端末Eが接続されており、さらにクライアント端末Eが、クライアント端末Bと同様にファイルA.docを編集するような場面を想定する。このような場合、ファイルA.docについてのサブスクリプションを全て削除してしまうと、クライアント端末Bからのイベント通知メッセージがクライアント端末Aに送信されなくなる。一方、上で述べたように例外ノードリストにクライアント端末BのID「000B」を登録することによって、それ以外のID「000E」などがイベント通知メッセージに含まれる場合については、通常どおりイベント通知メッセージが配信されるようになる。一方、クライアント端末Bからは、P2Pイベント通知メッセージが配信される。なお、クライアント端末A以外にファイルA.docについてサブスクリプションを登録しているクライアント端末がないことを検出したブローカCは、クライアント端末Bに対して不要イベント通知メッセージを送信して、ブローカCのための接続ノード情報3410における不要イベント・リスト3412にファイル名A.docを登録してしまえば、よりイベント通知メッセージの送信量を削減することができる。
なお、ブローカCが1段だけの場合ではなく、2段以上であっても処理は同様に行われる。図27及び図28を用いて簡単に説明する。図27に示すように、ブローカCの配下にクライアント端末A及びEが接続されており、ブローカCの親ノードとしてブローカFが接続されており、当該ブローカFの配下にクライアント端末B及びGが接続されているものとする。また、クライアント端末B及びGは、ファイルA.docに対して編集など行い、クライアント端末A及びEは、ファイルA.docについてサブスクリプションを登録しているものとする。但し、クライアント端末Aは、クライアント端末BからP2Pイベント通知メッセージを配信されるように例外ノードリストにクライアント端末BのID「000B」を登録しているものとする。そうすると、ブローカCの吹き出しで示すように、クライアント端末Aについてのサブスクリプションデータには、ファイル名A.doc、所有者ID「000A」及び例外ノードリストとしてID「000B」が含まれる。また、クライアント端末Eについてのサブスクリプションデータには、ファイルA.doc及び所有者ID「000E」が含まれる。一方、ブローカFの吹き出しで示すように、ブローカCについてのサブスクリプションデータとしては、ブローカCにおけるクライアント端末A及びEについてのサブスクリプションデータと同じものが含まれる。
このような場合には、図28に示すように、クライアント端末Bからクライアント端末AへはP2Pイベント通知メッセージdが送信される。クライアント端末Bからクライアント端末Eへは、通常のイベント通知メッセージaが送信される。また、クライアント端末Gからクライアント端末E及びAには、通常のイベント通知メッセージb及びcが送信される。
以上述べたような処理を行うことによって、ネットワーク全体のメッセージ送信量を削減できる。
以上本技術の実施の形態について説明したが、本技術はこれに限定されるものではない。例えば、機能ブロック図は一例であって、必ずしも実際のプログラムモジュール構成に一致するわけではない。また、処理フローについても処理結果が変わらない限り、実行順番を入れ替えたり、並列実行するようにしても良い。
さらに、最上位の親ノードか否かの判断については、親ノードフラグではなく別途設定を行っておき、その設定に基づいて判断するようにしても良い。また、全てのノードで同じプログラムを実行するが、そのノードの役割に応じて上で述べた機能のみが用いられるような実現方法を採用しても良い。
なお、上で述べたクライアント端末及びブローカ・コンピュータは、コンピュータ装置であって、図29に示すように、メモリ2501とプロセッサ(CPU2503)とハードディスク・ドライブ(HDD)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。必要に応じてCPU2503は、表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、必要な動作を行わせる。また、処理途中のデータについては、メモリ2501に格納され、必要があればHDD2505に格納される。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
HDD2505とメモリ2501との少なくともいずれかは、データ格納部として機能する。
以上述べた本実施の形態をまとめると、以下のようになる。
実施の形態の第1の側面に係るメッセージ処理方法は、ネットワーク中、親ブローカが設定されていないブローカとして機能するブローカ・コンピュータにより実行されるメッセージ処理方法であり、(A)特定のデータの識別子を含み且つ当該特定のデータについて処理が行われたことを表すイベントを通知するイベント通知メッセージを受信する受信ステップと、(B)あるデータの識別子を含み且つ当該あるデータについて興味があることを表すサブスクリプションデータが格納されているデータ格納部を特定のデータの識別子で検索して、特定のデータの識別子を含むサブスクリプションデータが存在するか確認するステップと、(C)特定のデータの識別子を含むサブスクリプションデータが存在しない場合に、イベント通知メッセージの送信元に対して、特定のデータの識別子を含む不要イベント通知メッセージを送信するステップとを含む。
このように不要イベント通知メッセージを送信することによって、イベント通知メッセージの送信側でイベント通知メッセージを送信しなくなる。よって、メッセージの送信量を削減することができる。
また、実施の形態の第1の側面において、上で述べた受信ステップに応じて、本ブローカ・コンピュータの接続先のうち特定のデータについてのイベント通知メッセージの送信元に係る接続先についての逆経路決定機構に、当該特定のデータについてのイベント通知メッセージを受信したことを登録するステップと、特定のデータの識別子を含み且つ当該特定のデータについて興味があることを表すサブスクリプション・リクエストを受信するステップと、各接続先の逆経路決定機構により特定のデータについてのイベント通知メッセージを受信したか否かを確認するステップと、特定のデータについてのイベント通知メッセージを受信したと確認された接続先に対して、特定のデータの識別子を含み且つ特定のデータについて処理が行われたことを表すイベントの通知の再開を要求するイベント通知再開リクエストを送信するステップとをさらに含むようにしても良い。後から、イベント通知メッセージが必要になる場合についても対処することができる。
実施の形態の第2の側面に係るメッセージ処理方法は、ネットワーク中、中継ノードとして機能するブローカ・コンピュータにより実行されるメッセージ処理方法であり、(A)親ブローカ・コンピュータから、特定のデータの識別子を含む不要イベント通知メッセージを受信するステップと、(B)あるデータの識別子を含み且つ当該あるデータについて処理が行われたことを表すイベントを通知するイベント通知メッセージを受信したことを当該イベント通知メッセージの送信元に係る接続先について登録している逆経路決定機構により、各接続先について、特定のデータについてのイベント通知メッセージを受信したか否かを確認するステップと、(C)特定のデータについてのイベント通知メッセージを受信したと確認された接続先に対して、不要イベント通知メッセージを送信するステップとを含む。
このように不要イベント通知メッセージを中継することによって、特定のデータに対して編集などの処理を行うクライアント端末でイベント通知メッセージを送信しないように設定させられるようになる。すなわち、メッセージの送信量を削減することができる。
実施の形態の第2の側面において、親ブローカ・コンピュータから、特定のデータの識別子を含み且つ特定のデータについて処理が行われたことを表すイベントの通知の再開を要求するイベント通知再開リクエストを受信するステップと、逆経路決定機構により各接続先について特定のデータについてのイベント通知メッセージを受信したか否かを確認するステップと、特定のデータについてのイベント通知メッセージを受信したと確認された接続先に対して、イベント通知再開リクエストを送信するステップとをさらに含むようにしてもよい。これによって、適切にイベント通知メッセージの配信を再開させることができるようになる。
実施の形態の第3の側面に係るメッセージ処理方法は、ネットワークを介してブローカ・コンピュータに接続されるクライアント端末により実行されるメッセージ処理方法であり、(A)ブローカ・コンピュータから、特定のデータの識別子を含む不要イベント通知メッセージを受信するステップと、(B)特定のデータの識別子を、不要イベント・リストに登録するステップと、(C)特定のデータについて処理が行われたことを検出した場合、不要イベント・リストを特定のデータの識別子で検索して登録されているか確認するステップと、(D)特定のデータの識別子が不要イベント・リストに登録済みの場合には、特定のデータについて処理が行われたことを表すイベントを通知するイベント通知メッセージの送信を中止(すなわち送信せずに処理を取りやめる)するステップとを含む。
このようにすれば無駄なイベント通知メッセージの送信量を削減することができる。
実施の形態の第3の側面において、ブローカ・コンピュータから、特定のデータの識別子を含み且つ特定のデータについて処理が行われたことを表すイベントの通知の再開を要求するイベント通知再開リクエストを受信するステップと、特定のデータの識別子を不要イベント・リストから削除するステップとをさらに含むようにしてもよい。これによって、適切にイベント通知メッセージの配信を再開することができる。
本技術の第4の側面に係るメッセージ処理方法は、ネットワークを介してブローカ・コンピュータに接続されるクライアント端末により実行されるメッセージ処理方法であり、(A)ブローカ・コンピュータから、特定のデータを処理したクライアント端末又は当該クライアント端末のユーザの識別子及びIPアドレスと特定のデータの識別子とを含むイベント通知メッセージを受信するステップと、(B)特定のデータの識別子とイベント通知メッセージの送信元クライアント端末又はユーザの識別子とを含み且つ当該送信元クライアント端末からの特定のデータについてのイベント通知メッセージが不要であることを通知するためのアンサブスクリプション・リクエストを、ブローカ・コンピュータに送信するステップと、(C)特定のデータの識別子と本クライアント端末のIPアドレスとを含むピアツーピア・サブスクリプション・リクエストを、送信元クライアント端末のIPアドレス宛に送信するステップとを含む。
このようにすればブローカで中継されるイベント通知メッセージの送信量が削減される。
実施の形態の第5の側面に係るメッセージ処理方法は、ネットワークに接続されているブローカ・コンピュータにより実行されるメッセージ処理方法であり、(A)第1の送信元クライアント端末又は第1のユーザの識別子と特定のデータの識別子を含み且つ当該特定のデータについて興味があることを表すサブスクリプション・リクエストを受信するステップと、(B)あるデータの識別子と興味を有するユーザのクライアント端末又はユーザの識別子とを含み且つ当該あるデータについて興味があることを表すサブスクリプションデータが格納されるデータ格納部に、特定のデータの識別子及び第1の送信元クライアント端末又は第1のユーザの識別子を登録するステップと、(C)第1の送信元クライアント端末から、当該第1の送信元クライアント端末又は第1のユーザの識別子と特定のデータの識別子とイベント通知メッセージの第2の送信元クライアント端末又は第2のユーザの識別子とを含み且つ当該第2の送信元クライアント端末からの特定のデータについてのイベント通知メッセージが不要であることを通知するためのアンサブスクリプション・リクエストを受信するステップと、(D)データ格納部において、特定のデータの識別子と第1の送信元クライアント端末又は第1のユーザの識別子とを含むサブスクリプションデータに対応付けて第2の送信元クライアント端末又は第2のユーザの識別子を登録するステップと、(E)特定のデータを処理した第2の送信元クライアント端末から、当該第2の送信元クライアント端末又は第2のユーザの識別子と特定のデータの識別子とを含むイベント通知メッセージを受信すると、データ格納部に格納されている特定のデータについてのサブスクリプションデータに基づきイベント通知メッセージの第1の送信元クライアント端末への送信を中止(すなわち送信せずに処理を取りやめる)するステップと、(F)特定のデータを処理した第3の送信元クライアント端末又は第3のユーザの識別子と特定のデータの識別子とを含むイベント通知メッセージを受信すると、データ格納部に格納されている特定のデータについてのサブスクリプションデータに基づきイベント通知メッセージを第1の送信元クライアント端末へ送信をするステップとを含む。
このようにすればイベント通知メッセージの送信を適切に制御して、ネットワーク内におけるメッセージの送信量を削減することができるようになる。
なお、上で述べたような処理をコンピュータに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、CD−ROM、光磁気ディスク、半導体メモリ(例えばROM)、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、RAM等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
ネットワーク中、親ブローカが設定されていないブローカとして機能するブローカ・コンピュータに実行させるためのメッセージ処理プログラムであって、
特定のデータの識別子と当該特定のデータについて処理が行われたことを表すイベント通知とを含むイベント通知メッセージを受信する受信ステップと、
あるデータの識別子と当該あるデータについて興味があることを表すデータとを含むサブスクリプションデータが格納されているデータ格納部を前記特定のデータの識別子で検索して、前記特定のデータの識別子を含むサブスクリプションデータが存在するか確認するステップと、
前記特定のデータの識別子を含むサブスクリプションデータが存在しない場合に、前記イベント通知メッセージの送信元に対して、前記特定のデータの識別子と送信不要であることを表す不要イベント通知とを含む不要イベント通知メッセージを送信するステップと、
を、ブローカ・コンピュータに実行させるためのメッセージ処理プログラム。
(付記2)
前記受信ステップに応じて、前記本ブローカ・コンピュータの接続先のうち前記特定のデータについての前記イベント通知メッセージの送信元に係る接続先についての逆経路決定機構に、当該特定のデータについての前記イベント通知メッセージを受信したことを登録するステップと、
前記特定のデータの識別子と当該特定のデータについて興味があることを表すデータとを含むサブスクリプション・リクエストを受信するステップと、
各前記接続先の前記逆経路決定機構により前記特定のデータについての前記イベント通知メッセージを受信したか否かを確認するステップと、
前記特定のデータについての前記イベント通知メッセージを受信したと確認された前記接続先に対して、前記特定のデータの識別子と前記特定のデータについて処理が行われたことを表すイベントの通知の再開を要求するデータとを含むイベント通知再開リクエストを送信するステップと、
をさらに、前記ブローカ・コンピュータに実行させるための付記1記載のメッセージ処理プログラム。
(付記3)
ネットワーク中、中継ノードとして機能するブローカ・コンピュータに実行させるためのメッセージ処理プログラムであって、
親ブローカ・コンピュータから、特定のデータの識別子と送信不要であることを表す不要イベント通知とを含む不要イベント通知メッセージを受信するステップと、
あるデータの識別子と当該あるデータについて処理が行われたことを表すイベント通知とを含むイベント通知メッセージを受信したことを当該イベント通知メッセージの送信元に係る接続先について登録している逆経路決定機構により、各前記接続先について、前記特定のデータについての前記イベント通知メッセージを受信したか否かを確認するステップと、
前記特定のデータについての前記イベント通知メッセージを受信したと確認された前記接続先に対して、前記不要イベント通知メッセージを送信するステップと、
を実行させるためのメッセージ処理プログラム。
(付記4)
前記親ブローカ・コンピュータから、前記特定のデータの識別子と前記特定のデータについて処理が行われたことを表すイベントの通知の再開を要求するデータとを含むイベント通知再開リクエストを受信するステップと、
前記逆経路決定機構により各前記接続先について前記特定のデータについての前記イベント通知メッセージを受信したか否かを確認するステップと、
前記特定のデータについての前記イベント通知メッセージを受信したと確認された前記接続先に対して、前記イベント通知再開リクエストを送信するステップと、
をさらに実行させるための付記3記載のメッセージ処理プログラム。
(付記5)
ネットワークを介してブローカ・コンピュータに接続されるクライアント端末に実行させるためのメッセージ処理プログラムであって、
前記ブローカ・コンピュータから、特定のデータの識別子と送信不要であることを表す不要イベント通知とを含む不要イベント通知メッセージを受信するステップと、
前記特定のデータの識別子を、不要イベント・リストに登録するステップと、
前記特定のデータについて処理が行われたことを検出した場合、前記不要イベント・リストを前記特定のデータの識別子で検索して登録されているか確認するステップと、
前記特定のデータの識別子が前記不要イベント・リストに登録済みの場合には、前記特定のデータについて処理が行われたことを表すイベントを通知するイベント通知メッセージの送信を中止するステップと、
を実行させるためのメッセージ処理プログラム。
(付記6)
前記ブローカ・コンピュータから、前記特定のデータの識別子と前記特定のデータについて処理が行われたことを表すイベントの通知の再開を要求するデータとを含むイベント通知再開リクエストを受信するステップと、
前記特定のデータの識別子を前記不要イベント・リストから削除するステップと、
をさらに実行させるための付記5記載のメッセージ処理プログラム。
(付記7)
ネットワークを介してブローカ・コンピュータに接続されるクライアント端末に実行させるためのメッセージ処理プログラムであって、
前記ブローカ・コンピュータから、特定のデータを処理したクライアント端末又は当該クライアント端末のユーザの識別子及びIPアドレスと前記特定のデータの識別子とを含むイベント通知メッセージを受信するステップと、
前記特定のデータの識別子と前記イベント通知メッセージの送信元クライアント端末又はユーザの識別子と当該送信元クライアント端末からの前記特定のデータについての前記イベント通知メッセージが不要であることを通知するためのデータとを含むアンサブスクリプション・リクエストを、前記ブローカ・コンピュータに送信するステップと、
前記特定のデータの識別子と本クライアント端末のIPアドレスとを含むピアツーピア・サブスクリプション・リクエストを、前記送信元クライアント端末のIPアドレス宛に送信するステップと、
を実行させるためのメッセージ処理プログラム。
(付記8)
ネットワークに接続されているブローカ・コンピュータに実行させるためのメッセージ処理プログラムであって、
第1の送信元クライアント端末又は第1のユーザの識別子と特定のデータの識別子と当該特定のデータについて興味があることを表すデータとを含むサブスクリプション・リクエストを受信するステップと、
あるデータの識別子と興味を有するユーザのクライアント端末又はユーザの識別子と当該あるデータについて興味があることを表すデータとを含むサブスクリプションデータが格納されるデータ格納部に、前記特定のデータの識別子及び前記第1の送信元クライアント端末又は第1のユーザの識別子を登録するステップと、
前記第1の送信元クライアント端末から、当該第1の送信元クライアント端末又は第1のユーザの識別子と前記特定のデータの識別子とイベント通知メッセージの第2の送信元クライアント端末又は第2のユーザの識別子と当該第2の送信元クライアント端末からの前記特定のデータについてのイベント通知メッセージが不要であることを通知するためのデータとを含むアンサブスクリプション・リクエストを受信するステップと、
前記データ格納部において、前記特定のデータの識別子と前記第1の送信元クライアント端末又は第1のユーザの識別子とを含むサブスクリプションデータに対応付けて前記第2の送信元クライアント端末又は第2のユーザの識別子を登録するステップと、
前記特定のデータを処理した前記第2の送信元クライアント端末から、当該第2の送信元クライアント端末又は第2のユーザの識別子と前記特定のデータの識別子とを含むイベント通知メッセージを受信すると、前記データ格納部に格納されている前記特定のデータについての前記サブスクリプションデータに基づき前記イベント通知メッセージの前記第1の送信元クライアント端末への送信を中止するステップと、
前記特定のデータを処理した第3の送信元クライアント端末又は第3のユーザの識別子と前記特定のデータの識別子とを含むイベント通知メッセージを受信すると、前記データ格納部に格納されている前記特定のデータについての前記サブスクリプションデータに基づき前記イベント通知メッセージを前記第1の送信元クライアント端末へ送信をするステップと、
を実行させるためのメッセージ処理プログラム。
(付記9)
ネットワーク中、親ブローカが設定されていないブローカとして機能するブローカ・コンピュータにより実行されるメッセージ処理方法であって、
特定のデータの識別子と当該特定のデータについて処理が行われたことを表すイベント通知とを含むイベント通知メッセージを受信する受信ステップと、
あるデータの識別子と当該あるデータについて興味があることを表すデータとを含むサブスクリプションデータが格納されているデータ格納部を前記特定のデータの識別子で検索して、前記特定のデータの識別子を含むサブスクリプションデータが存在するか確認するステップと、
前記特定のデータの識別子を含むサブスクリプションデータが存在しない場合に、前記イベント通知メッセージの送信元に対して、前記特定のデータの識別子と送信不要であることを表す不要イベント通知とを含む不要イベント通知メッセージを送信するステップと、
を含むメッセージ処理方法。
(付記10)
ネットワーク中、中継ノードとして機能するブローカ・コンピュータにより実行されるメッセージ処理方法であって、
親ブローカ・コンピュータから、特定のデータの識別子と送信不要であることを表す不要イベント通知とを含む不要イベント通知メッセージを受信するステップと、
あるデータの識別子と当該あるデータについて処理が行われたことを表すイベント通知とを含むイベント通知メッセージを受信したことを当該イベント通知メッセージの送信元に係る接続先について登録している逆経路決定機構により、各前記接続先について、前記特定のデータについての前記イベント通知メッセージを受信したか否かを確認するステップと、
前記特定のデータについての前記イベント通知メッセージを受信したと確認された前記接続先に対して、前記不要イベント通知メッセージを送信するステップと、
を含むメッセージ処理方法。
(付記11)
ネットワークを介してブローカ・コンピュータに接続されるクライアント端末により実行されるメッセージ処理方法であって、
前記ブローカ・コンピュータから、特定のデータの識別子と送信不要であることを表す不要イベント通知とを含む不要イベント通知メッセージを受信するステップと、
前記特定のデータの識別子を、不要イベント・リストに登録するステップと、
前記特定のデータについて処理が行われたことを検出した場合、前記不要イベント・リストを前記特定のデータの識別子で検索して登録されているか確認するステップと、
前記特定のデータの識別子が前記不要イベント・リストに登録済みの場合には、前記特定のデータについて処理が行われたことを表すイベントを通知するイベント通知メッセージの送信を中止するステップと、
を含むメッセージ処理方法。
(付記12)
ネットワークを介してブローカ・コンピュータに接続されるクライアント端末により実行されるメッセージ処理方法であって、
前記ブローカ・コンピュータから、特定のデータを処理したクライアント端末又は当該クライアント端末のユーザの識別子及びIPアドレスと前記特定のデータの識別子とを含むイベント通知メッセージを受信するステップと、
前記特定のデータの識別子と前記イベント通知メッセージの送信元クライアント端末又はユーザの識別子と当該送信元クライアント端末からの前記特定のデータについての前記イベント通知メッセージが不要であることを通知するためのデータとを含むアンサブスクリプション・リクエストを、前記ブローカ・コンピュータに送信するステップと、
前記特定のデータの識別子と本クライアント端末のIPアドレスとを含むピアツーピア・サブスクリプション・リクエストを、前記送信元クライアント端末のIPアドレス宛に送信するステップと、
を含むメッセージ処理方法。
(付記13)
ネットワークに接続されているブローカ・コンピュータにより実行されるメッセージ処理方法であって、
第1の送信元クライアント端末又は第1のユーザの識別子と特定のデータの識別子と当該特定のデータについて興味があることを表すデータとを含むサブスクリプション・リクエストを受信するステップと、
あるデータの識別子と興味を有するユーザのクライアント端末又はユーザの識別子と当該あるデータについて興味があることを表すデータとを含むサブスクリプションデータが格納されるデータ格納部に、前記特定のデータの識別子及び前記第1の送信元クライアント端末又は第1のユーザの識別子を登録するステップと、
前記第1の送信元クライアント端末から、当該第1の送信元クライアント端末又は第1のユーザの識別子と前記特定のデータの識別子とイベント通知メッセージの第2の送信元クライアント端末又は第2のユーザの識別子と当該第2の送信元クライアント端末からの前記特定のデータについてのイベント通知メッセージが不要であることを通知するためのデータとを含むアンサブスクリプション・リクエストを受信するステップと、
前記データ格納部において、前記特定のデータの識別子と前記第1の送信元クライアント端末又は第1のユーザの識別子とを含むサブスクリプションデータに対応付けて前記第2の送信元クライアント端末又は第2のユーザの識別子を登録するステップと、
前記特定のデータを処理した前記第2の送信元クライアント端末から、当該第2の送信元クライアント端末又は第2のユーザの識別子と前記特定のデータの識別子とを含むイベント通知メッセージを受信すると、前記データ格納部に格納されている前記特定のデータについての前記サブスクリプションデータに基づき前記イベント通知メッセージの前記第1の送信元クライアント端末への送信を中止するステップと、
前記特定のデータを処理した第3の送信元クライアント端末又は第3のユーザの識別子と前記特定のデータの識別子とを含むイベント通知メッセージを受信すると、前記データ格納部に格納されている前記特定のデータについての前記サブスクリプションデータに基づき前記イベント通知メッセージを前記第1の送信元クライアント端末へ送信をするステップと、
を含むメッセージ処理方法。
(付記14)
ネットワーク中、親ブローカが設定されていないブローカとして機能するブローカ・コンピュータであって、
特定のデータの識別子と当該特定のデータについて処理が行われたことを表すイベント通知とを含むイベント通知メッセージを受信するメッセージ送受信部と、
あるデータの識別子と当該あるデータについて興味があることを表すデータとを含むサブスクリプションデータが格納されているデータ格納部を前記特定のデータの識別子で検索して、前記特定のデータの識別子を含むサブスクリプションデータが存在するか確認するメッセージ解析部と、
を有し、
前記特定のデータの識別子を含むサブスクリプションデータが存在しない場合に、前記メッセージ送受信部は、前記イベント通知メッセージの送信元に対して、前記特定のデータの識別子と送信不要であることを表す不要イベント通知とを含む不要イベント通知メッセージを送信する
ブローカ・コンピュータ。
(付記15)
ネットワーク中、中継ノードとして機能するブローカ・コンピュータであって、
親ブローカ・コンピュータから、特定のデータの識別子と送信不要であることを表す不要イベント通知とを含む不要イベント通知メッセージを受信するメッセージ送受信部と、
あるデータの識別子と当該あるデータについて処理が行われたことを表すイベント通知とを含むイベント通知メッセージを受信したことを当該イベント通知メッセージの送信元に係る接続先について登録している逆経路決定機構により、各前記接続先について、前記特定のデータについての前記イベント通知メッセージを受信したか否かを確認するメッセージ解析部と、
を有し、
前記メッセージ送受信部は、
前記特定のデータについての前記イベント通知メッセージを受信したと確認された前記接続先に対して、前記不要イベント通知メッセージを送信する
ブローカ・コンピュータ。
(付記16)
ネットワークを介して接続されるブローカ・コンピュータから、特定のデータの識別子と送信不要であることを表す不要イベント通知とを含む不要イベント通知メッセージを受信するメッセージ送受信部と、
前記特定のデータの識別子を、不要イベント・リストに登録するメッセージ解析部と、
を有し、
前記メッセージ解析部は、前記特定のデータについて処理が行われたことを検出した場合、前記不要イベント・リストを前記特定のデータの識別子で検索して登録されているか確認し、前記特定のデータの識別子が前記不要イベント・リストに登録済みの場合には、前記特定のデータについて処理が行われたことを表すイベントを通知するイベント通知メッセージの送信を中止させる
クライアント端末。
(付記17)
ネットワークを介して接続されるブローカ・コンピュータから、特定のデータを処理したクライアント端末又は当該クライアント端末のユーザの識別子及びIPアドレスと前記特定のデータの識別子とを含むイベント通知メッセージを受信するメッセージ送受信部と、
前記特定のデータの識別子と前記イベント通知メッセージの送信元クライアント端末又はユーザの識別子と当該送信元クライアント端末からの前記特定のデータについての前記イベント通知メッセージが不要であることを通知するためのデータとを含むアンサブスクリプション・リクエストを生成し、前記メッセージ送受信部に、前記メッセージ解析部により生成された前記アンサブスクリプション・リクエストを、前記ブローカ・コンピュータに送信させるメッセージ解析部と、
を有し、
前記メッセージ解析部は、さらに、
前記特定のデータの識別子と本クライアント端末のIPアドレスとを含むピアツーピア・サブスクリプション・リクエストを生成し、前記メッセージ送受信部に、前記送信元クライアント端末のIPアドレス宛に送信させる
をクライアント端末。
(付記18)
ブローカ・コンピュータであって、
第1の送信元クライアント端末又は第1のユーザの識別子と特定のデータの識別子と当該特定のデータについて興味があることを表すデータとを含むサブスクリプション・リクエストを受信するメッセージ送受信部と、
あるデータの識別子と興味を有するユーザのクライアント端末又はユーザの識別子と当該あるデータについて興味があることを表すデータとを含むサブスクリプションデータが格納されるデータ格納部に、前記特定のデータの識別子及び前記第1の送信元クライアント端末又は第1のユーザの識別子を登録するメッセージ解析部と、
を有し、
前記メッセージ送受信部は、
前記第1の送信元クライアント端末から、当該第1の送信元クライアント端末又は第1のユーザの識別子と前記特定のデータの識別子とイベント通知メッセージの第2の送信元クライアント端末又は第2のユーザの識別子と当該第2の送信元クライアント端末からの前記特定のデータについてのイベント通知メッセージが不要であることを通知するためのデータとを含むアンサブスクリプション・リクエストを受信し、
前記メッセージ解析部は、
前記データ格納部において、前記特定のデータの識別子と前記第1の送信元クライアント端末又は第1のユーザの識別子とを含むサブスクリプションデータに対応付けて前記第2の送信元クライアント端末又は第2のユーザの識別子を登録し、
前記メッセージ送受信部が、前記特定のデータを処理した前記第2の送信元クライアント端末から、当該第2の送信元クライアント端末又は第2のユーザの識別子と前記特定のデータの識別子とを含むイベント通知メッセージを受信すると、前記データ格納部に格納されている前記特定のデータについての前記サブスクリプションデータに基づき前記イベント通知メッセージの前記第1の送信元クライアント端末への送信を中止させ、
前記メッセージ送受信部が、前記特定のデータを処理した第3の送信元クライアント端末又は第3のユーザの識別子と前記特定のデータの識別子とを含むイベント通知メッセージを受信すると、前記データ格納部に格納されている前記特定のデータについての前記サブスクリプションデータに基づき前記イベント通知メッセージを前記第1の送信元クライアント端末へ送信させる、
ブローカ・コンピュータ。