(57)【要約】【課題】  送信元が直接関与しないネットワークの動的変化があっても、全てのノードへのメッセージ転送を可能とするメッセージ転送技術を提供する。【解決手段】  複数のノードからなるネットワークにおいて接続ノード間でメッセージを転送するメッセージ転送技術に関し、送信元ノードに、予め自ノードに登録された送信先テーブルからメッセージ転送の送信先情報を取得し、取得した送信先情報と他ノードから受信したメッセージに含まれる転送経路情報とを比較し、当該転送経路情報にないノードを追加して転送経路情報を更新し、追加ノードに転送経路情報が更新されたメッセージを転送することを特徴とする。【選択図】図１
2011049621.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードからなるネットワークにおいて接続ノード間でメッセージを転送するメッセージ転送プログラムであって、  
送信元ノードに、
予め自ノードに登録された送信先テーブルからメッセージ転送の送信先情報を取得するステップと、
取得した前記送信先情報と他ノードから受信したメッセージに含まれる転送経路情報とを比較し、当該転送経路情報にないノードを追加して前記転送経路情報を更新するステップと、
前記追加ノードに前記転送経路情報が更新されたメッセージを転送するステップと、
を実行させるメッセージ転送プログラム。
【請求項２】
前記転送経路情報の更新ステップでは、自ノードが送信可能でかつ未送信のノードが存在するときに、その存在を示すマークを付与することを特徴とする請求項１に記載のメッセージ転送プログラム。
【請求項３】
前記転送ステップでは、転送先がない時、前記転送経路情報にマークが付与されたノードにメッセージを転送することを特徴とする請求項１または２に記載のメッセージ転送プログラム。
【請求項４】
複数のノードからなるネットワークにおいて接続ノード間でメッセージを転送するメッセージ転送方法であって、  
送信元ノードに、
予め自ノードに登録された送信先テーブルからメッセージ転送の送信先情報を取得するステップと、
取得した前記送信先情報と他ノードから受信したメッセージに含まれる転送経路情報とを比較し、当該転送経路情報にないノードを追加して前記転送経路情報を更新するステップと、
前記追加ノードに前記転送経路情報が更新されたメッセージを転送するステップと、
を実行させることを特徴とするメッセージ転送方法。
【請求項５】
複数のノードからなるネットワークにおいて接続ノード間でメッセージを転送するノードであって、
予め自ノードに登録された送信先テーブルからメッセージ転送の送信先情報を取得する手段と、
取得した前記送信先情報と他ノードから受信したメッセージに含まれる転送経路情報とを比較し、当該転送経路情報にないノードを追加して前記転送経路情報を更新する手段と、
前記追加ノードに前記転送経路情報が更新されたメッセージを転送する手段と、
を有することを特徴とするノード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のノードで構成されるネットワークにおいて、送信元ノードが直接関与しないノードに対してもメッセージ転送を行うメッセージ転送技術に関する。
【背景技術】
【０００２】
従来、複数のノードで構成されたネットワークにおいて、メッセージを送信する方式としは、一つのノードに一つずつ送信するキュー方式や、一度に複数のノードに送信するトピック方式がある。
【０００３】
しかし、従来のキュー方式あるいはトピック方式によるメッセージ送信技術では、ネットワークに障害が発生した場合に、送信メッセージを全てのノードに行き渡らせるのが困難となるという問題がある。
【０００４】
例えば、図１に示すようなネットワークにおいて、ノードＡからノードＨへメッセージを送信する場合に、Ａ→Ｈの通信路がエラーとなったとき、別のルートを探す処理は大変複雑となる。
【０００５】
こうしたネットワーク障害が生じたときの解決策として、メッセージ内に転送経路情報を持たせ、処理後の返信メッセージがその経路を逆に辿れるようにしたり（例えば、特許文献１参照）、経路に障害が発生したときに、当初のメッセージ転送経路を変更して迂回経路を設定する（例えば、特許文献２参照）ことが提案されている。
【０００６】
しかしながら、上記従来技術はいずれも、予め決められた各ノード間でメッセージ送受信を行うもので、接続ノードの登録や削除など、ネットワークに変更が生じる度に、メッセージを送信する全てのノードに対して、送信先及びメッセージ転送経路を再設定するという煩雑さを抱える。さらに、こうしたメッセージ送信を管理、コントロールするため、ホストや中継装置などの別装置を必要としていた。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平０５−２８２１７３号公報
【特許文献２】特開平０８−１６５３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述してきた問題を解決するため、本発明では、メッセージ送信制御のために特別な中継装置を必要とせずに、送信元が直接関与しないネットワークの動的変化があっても、全てのノードへのメッセージ転送を可能とするメッセージ転送技術を提供する。
【課題を解決するための手段】
【０００９】
本発明の一態様は、複数のノードからなるネットワークにおいて接続ノード間でメッセージを転送するメッセージ転送プログラムであって、送信元ノードに、予め自ノードに登録された送信先テーブルからメッセージ転送の送信先情報を取得するステップと、取得した前記送信先情報と他ノードから受信したメッセージに含まれる転送経路情報とを比較し、当該転送経路情報にないノードを追加して前記転送経路情報を更新するステップと、前記追加ノードに前記転送経路情報が更新されたメッセージを転送するステップと、を実行させるメッセージ転送プログラムに関する。
【発明の効果】
【００１０】
上記一態様の発明によれば、接続ノード間で送受信するメッセージの転送経路情報を自身の送信先情報と比較して、転送経路情報にないノードが存在した場合に、該ノードに対してメッセージを転送する構成とすることによって、メッセージ送信を制御するための特別な装置を必要とせずに、ネットワーク内の全ノードに漏れなくメッセージを転送することが可能となる。
【００１１】
その結果、ノードの登録及び削除などネットワークの変更が発生しても、当該ノード間の情報を更新するだけで、送信元が直接関与しないノードも含めてネットワークの全ノードに効率的にメッセージ転送を行うことが可能となる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態になるメッセージ転送システムの基本構成を示す図である。
【図２】本発明の実施の形態になる各ノードの送信先テーブルのデータ構造例を示す図である。
【図３】本発明の実施の形態になる送信メッセージのデータ構造例を示す図である。
【図４】本発明の実施の形態になる各ノードで管理するメッセージの処理履歴テーブルのデータ構造例を示す図である。
【図５】本発明の実施の形態になるキュー方式によるメッセージ転送の転送経路情報遷移例を示す図である。
【図６】本発明の実施の形態になるトピック方式によるメッセージ転送の転送経路情報遷移例を示す図である。
【図７】本発明の実施の形態になる送信元ノードにおけるキュー方式によるメッセージの送信フローを示す図である。
【図８】本発明の実施の形態になる受信先ノードにおけるキュー方式によるメッセージ転送フローを示す図である。
【図９】本発明の実施の形態になる送信元ノードにおけるトピック方式によるメッセージの送信フローを示す図である。
【図１０】本発明の実施の形態になる受信先ノードにおけるトピック方式によるメッセージ転送フローを示す図である。
【発明を実施するための形態】
【００１３】
以下、図面にもとづいて本発明の実施形態を説明する。
【００１４】
図１は、本発明のメッセージ転送システムの基本構成を示す。図１の上図は、本発明を適用するネットワークの構成例を示し、図中のＡ〜Ｈは、ノード名を表し、下図のノード１の機能を備えた装置となっている。また、ノード１は、ルータ、ハブ（ＨＵＢ）等の負荷分散機能を備える装置であってもよい。とくに、負荷分散機能を備える場合は、その負荷分散機能によって転送先の優先度を決定することが可能となる。
【００１５】
各ノード１（Ａ〜Ｈ）は、図示していないが、メモリ、ＣＰＵを有するコンピュータであり、補助記憶装置（図にない）に格納されたメッセージ転送プログラム１０を備えている。メッセージ転送プログラム１０は、起動時に、メモリに展開されて、ＣＰＵ(Central Processing Unit）によって処理される。また、該プログラムは、フレキシブルディスク、ＣＤ（Compact Disk）、ＭＯ（Magneto-Optical Disk）などの可搬記録媒体に記録され、各媒体に対応したドライバ装置によって読み取る構成としてもよい。
【００１６】
本メッセージ転送プログラム１０は、メッセージを送受信するメッセージ送受信部１１、メッセージの内容を実行処理するメッセージ処理部１２、今までの他ノード１との通信実績を見て、どのノード１と通信すれば、最小のコストで処理できるかを判断する情報をデータ記憶部１００の送信先テーブル１０１に格納する負荷分散部１３、および実際の通信処理（メッセージ送受信処理）でエラーが発生した場合に、送信メッセージの転送経路情報と、処理履歴テーブル１０２を参照して、別の転送経路を構築して再送信する障害対応部１４から構成されている。
【００１７】
さらに、図１のネットワークにおけるノード接続構成例から、本発明のメッセージ転送の仕組みを説明する。
【００１８】
まず、メッセージ転送プログラム１０は、送信元ノード１において、送信先ノード１の情報が予め登録された送信先テーブル１０１からメッセージ転送の送信先情報を取得し、取得した送信先情報をメッセージ内に設けた転送経路情報フィールドに書き込み、転送経路情報フィールドの転送経路情報に基づいて、直接接続していないノード１を含め全送信先ノード１にメッセージを送信する処理を行なう。
【００１９】
ここで、ノード１のデータ記憶部１００に送信先テーブル１０１として登録される送信先情報としては、自ノードに接続されているノードのノード情報が登録されていればよい。
【００２０】
例えば、ノードＡには、送信先として、ノードＢ、ＣおよびＨのノード情報が登録されていて、ノードＨには送信先として、ノードＡ、ＦおよびＧのノード情報が登録されている。このように、各ノード１には、ネットワーク上の全てのノード１を登録する必要はなく、例えば、ノードＡでは、ノードＤ、Ｅ、Ｆ、およびＧのノード情報が登録されていない。
【００２１】
図２は、送信先テーブル１０１のデータ構造例を示す。この送信先テーブル１０１の送信先情報を元にして、メッセージの送信先が決定される。送信先テーブル１０１は、「優先度」、「転送先」、「応答時間」、および「障害発生回数」の項目からなる複数のレコードから構成されている。
【００２２】
「応答時間」および「障害発生回数」には、負荷分散部１３や障害対応部などによって、過去のメッセージ処理の成績として測定された数値が書き込まれ、これらの成績を元にして「優先度」が順位付けられる。そして、メッセージ送受信部１１が、この送信先情報を参照してメッセージの送信先を決定する。
【００２３】
図２における送信先テーブル１０１では、ノードＡに登録されている送信先情報であり、例えば、ノードＡは、ノードＢに優先的にメッセージを転送する状態であることを示している。
【００２４】
なお、「転送先」には転送先の装置のＦＱＤＮ（Fully Qualified Domain Name ）、もしくはＩＰアドレスが格納される。また、負荷分散部１３を備えなくても、「優先度」および「転送先」の情報だけで運用することも可能である。また、各ノード間の登録および登録の解除は、手動または自動のどちらでもよい。必要に応じて、ノード間の登録に認証制を導入し、セキュリティ対策を行ってもよい。
【００２５】
図３は、メッセージのデータ構造例を示す。ノード１間で転送するメッセージは、ヘッダ、プロパティ、およびボディから構成される。実施例では、ネットワークを介してデータを送受信させるためのＪＭＳ（Java（登録商標）Message Service）を使用する場合の具体例を示している。
【００２６】
ヘッダは、「メッセージＩＤ」（例：MSG00020）、処理が完了した参照メッセージとしての「参照メッセージＩＤ」（例：MSG00015）、「優先度」（例：４）のフィールド項目から構成されている。
【００２７】
「参照メッセージＩＤ」では、送信元から送信したメッセージが通信路の故障で送信エラーとなったときに、該メッセージＩＤをそのまま参照メッセージＩＤとし、再度送信時に新しいメッセージＩＤが割り付けられる。
【００２８】
「優先度」は、メッセージ作成時、ユーザによって入力される。例えば、「優先度」を１０段階に設定し、その数値は大きいほど早い処理を意味し、優先度が５以上であればトピック方式、４以下であればキュー方式に自動的に決定され、該データはプロパティの「送信方式」に格納される。
【００２９】
また、プロパティは、キュー方式かトピック方式かを決定する「送信方式」（例：Queue ）、および「転送経路情報」（例：@a.domain1 b.domain2 c.domain3）のフィールド項目から構成されている。ここで、「転送経路情報」は、メッセージの送受信時にノード１の送信先テーブルを参照して更新される。
【００３０】
さらに、ボディには、各ノード１が処理するコンテンツが含まている。ボディには、ユーザによって入力された処理内容が格納される。
【００３１】
なお、上記「転送経路情報」における”＠”は、他に転送先（ノードＢ、Ｃ）が存在することを識別するためにノードＡのＦＱＤＮ（a.domain1 ）の前に付与したマークである（”＠”以外の文字（記号) や文字列を使うことも可能）。実施例では、送信元ノードＡが、転送するノードＢ、ＣのＦＱＤＮ（b.domain2 c.domain3 ）を「転送経路情報」に追加し転送することを示している。
【００３２】
また、受信先において、「転送経路情報」に存在しない転送先があれば、それを選んで転送しその転送先を「転送経路情報」に追加する。その際、受信元に他の転送先が存在する場合は、自ノードのＦＱＤＮにマークを付ける。そして、受信元において他に転送するノードがない場合は、「転送経路情報」を後ろから検索し、最初にマークがあるノードに転送する。そのとき、転送先ノードのマークは削除される。
【００３３】
図４は、各ノード１で管理するメッセージの処理履歴テーブル１０２のデータ構造例を示している。メッセージの処理履歴テーブル１０２は、重複メッセージをチェックするための「メッセージＩＤ」、「参照メッセージＩＤ」、メッセージの処理状況を表す「処理状況」（PROCESSED は処理済、PROCESSINGは処理中、NOT PROCESSED は未処理）、ノード内で処理する場合にメッセージに紐付けられた「処理ＩＤ」、「有効期限」、および「転送経路」のフィールド項目からなる複数のレコードから構成されている。
【００３４】
例えば、処理中の「メッセージＩＤ」MSG00002が転送経路でエラーが発生した場合に、送信元で改めて「メッセージＩＤ」MSG00003が作成され、MSG00002が「参照メッセージＩＤ」に設定されたことを示している。
【００３５】
本テーブルは、重複メッセージ送信防止およびネットワーク障害対応でメッセージが既に処理済みかどうかを判断するために用いられる。
【００３６】
図５は、図１のネットワークを例としてキュー方式でメッセージを転送した場合の転送経路情報の遷移例を示している。この例では、ノードＡ→ノードＢ→ノードＤ→ノードＦ→ノードＨ→ノードＧ→ノードＥ→ノードＣ→ノードＦ→ノードＤ→ノードＢ→ノードＡの流れで転送している。
（１）Ａ→Ｂの転送では、転送経路情報は「＠ＡＢ（＠はマーク）」で、ＡはＢ以外に転送先Ｃ、Ｈを持つことを示している。
（２）Ｂ→Ｄの転送では、転送経路情報は「＠Ａ＠ＢＤ」となり、ＢはＤ以外に転送先Ｇがあるため、マークが付加される。
（３）Ｄ→Ｆ→Ｈ→Ｇの転送では、Ｈは他に転送先がないため、転送経路情報は「＠Ａ＠Ｂ＠Ｄ＠ＦＨＧ」となる。
（４）Ｇ→Ｅ→Ｃの転送では、転送経路情報は「＠Ａ＠Ｂ＠Ｄ＠ＦＨＧＥＣ」となる。
（５）Ｃ→Ｆの転送では、Ｃは他に転送先がないので、転送経路情報を後ろから検索して最初にマークがある装置のＦに転送する。そして、転送経路情報は「＠Ａ＠Ｂ＠ＤＦＨＧＥＣ」となり、Ｆのマークは削除される。
（６）Ｆ→Ｄの転送では、Ｆは他に転送先がないのでＤに転送する。転送経路情報は「＠Ａ＠ＢＤＦＨＧＥＣ」となる。
（７）Ｄ→Ｂ→Ａの転送では、転送経路情報は「ＡＢＤＦＨＧＥＣ」となり、Ａは転送先がないので、ここで転送は終了する。
【００３７】
図６は、図１のネットワークを例としてトピック方式によるメッセージ転送の転送経路情報遷移例を示す。この例では、ノードＡからノードＢ、Ｃ、Ｈに一斉送信する経路と、ノードＢからノードＤ、Ｇに一斉送信する経路と、ノードＤからノードＥ、Ｆに一斉送信する経路とが存在する。
（１）Ａ→Ｂ，Ｃ，Ｈの転送では、全てのメッセージの転送経路情報は「ＡＢＣＨ」となる。以降、ＣとＨのノードで転送処理が遅延し、Ｂに転送したメッセージが先に転送される場合を仮定して以下の処理の流れを示す。
（２）Ｂ→Ｄ，Ｇの転送では、そのメッセージの転送経路情報は「ＡＢＣＨＤＧ」となる。
（３）Ｄ→Ｅ，Ｆの転送では、そのメッセージの転送経路は「ＡＢＣＨＤＧＥＦ」となり、Ｆでは転送先がないので転送処理は行わない。
【００３８】
上述してきたメッセージ転送についての処理フローを以下の図７〜図１０を用いて説明する。
【００３９】
図７は、キュー方式の場合に、送信元ノードにおいて処理する手順を示すフロー図である。
【００４０】
まず、ステップＳ１０において、メッセージ作成時に、ユーザが入力した優先度、メッセージの処理内容のデータを取得し、ステップＳ１１において、送信元ノードが、取得した優先度からメッセージを１通ずつ送信するキュー方式による送信方式を決定し、該データをメッセージのプロパティに格納する。
【００４１】
つぎに、ステップＳ１２において、送信先テーブル１０１を参照し、複数の送信先が存在するか否かを判定する。複数の送信先が存在すれば、ステップＳ１４において、自ノードをマーク付でメッセージの転送経路情報の最初に格納する。また、複数の送信先がなければ、ステップＳ１３において、自ノードをマークなしでメッセージの転送経路情報の最初に格納する。
【００４２】
そして、ステップＳ１５において、送信先テーブル１０１の優先度を基準として送信先を１つ決定し、ステップＳ１６において、送信先を転送経路情報の最後尾に追加する。ステップＳ１７において、こうして転送経路情報が書き込まれたメッセージを送信先に送信する。
【００４３】
図８は、キュー方式の場合に、メッセージを受信した受信先ノードにおいて処理する手順を示すフロー図である。
【００４４】
ステップＳ２１において、メッセージを受信した受信先ノードでは、処理履歴テーブル１０２を参照し、受信メッセージＩＤと同一のメッセージＩＤが存在するか否かを判定する。また、ステップＳ２２において、受信したメッセージが処理履歴テーブル１０２の参照メッセージＩＤと同一でかつ転送済か否かを判定する。
【００４５】
同一のメッセージＩＤがなく、同一の参照メッセージＩＤが存在し、未転送の状態であれば、ステップＳ２３において、メッセージ優先度を参照してキュー方式での転送を決定する。また、ステップＳ２１で同一メッセージＩＤに相当する場合、ステップＳ２２で転送済となっている場合には、ステップＳ２７に進み、メッセージを処理履歴テーブル１０２に追加して終了する。
【００４６】
つぎに、ステップＳ２４において、メッセージの転送経路情報にない転送先が存在するか否かを判定する。転送経路情報にない転送先が存在しなければ、ステップＳ２５において、メッセージの転送経路情報にマークされた転送先があるか否かを最後尾から検索する。
【００４７】
マーク付きの転送先がなければ、ステップＳ２６において、最初の送信先にメッセージを転送し、ステップＳ２７において、メッセージの処理履歴テーブル１０２に追加処理する。
【００４８】
一方、ステップＳ２４で、転送経路情報にない転送先が存在するときは、ステップＳ２９において、送信先テーブル１０１の優先度を基準として転送先を１つ決定し、ステップＳ３０において、転送先を転送経路情報の最後尾に追加する。
【００４９】
つぎに、ステップＳ３１において、自ノードに、他に転送先があるか否かを判定する。判定の結果、他に転送先があれば、ステップＳ３２において、転送経路情報にある自ノードにマークを付加する。さらに、ステップＳ３３において、当該メッセージを転送先に転送する。また、ステップＳ３１において、他に転送先がなければ、ステップＳ３１のメッセージ転送を行い、ステップＳ２７のメッセージ処理履歴への追加処理を行って本フローを終了する。
【００５０】
なお、ステップＳ２５において、転送経路情報にマークされた転送先がある場合には、ステップＳ２８において、転送経路情報にある当該転送先マークを外し、転送先に決定し、ステップＳ３１に進んで以降の処理を行う。
【００５１】
図９は、トピック方式（メッセージを一斉に送信）の場合に、送信元で処理する手順を示すフロー図である。
【００５２】
まず、ステップＳ４０において、ユーザが入力した優先度とメッセージの処理内容を取得し、ステップＳ４１において、送信元ノードが、メッセージを送信する方式としてトピック方式を決定し、該データをメッセージのプロパティに格納する。つぎに、ステップＳ４２において、送信先テーブル１０１を参照して複数の送信先を決定する。
【００５３】
そして、ステップＳ４３において、複数の送信先をメッセージの転送経路情報に追加し、ステップＳ４４において、当該メッセージを送信する。そして、ステップＳ４５において、送信結果をメッセージの処理履歴テーブル１０２に追加する。
【００５４】
図１０は、トピック方式（メッセージを一斉に送信）の場合に、受信先で処理する手順を示すフロー図である。
【００５５】
まず、ステップＳ５１において、処理履歴テーブル１０２を参照し、同一メッセージがあるか否かをメッセージＩＤから判定する。同一メッセージがなければ、ステップＳ５２において、メッセージの処理履歴テーブル１０２に同一の参照メッセージがあり、かつ転送済か否かを判定する。転送済でなければ、ステップＳ５３において、メッセージ優先度を参照してトピック方式での転送を決定する。
【００５６】
また、ステップＳ５１で、同一メッセージがあり、ステップＳ５２で、同一の参照メッセージが転送済の場合は、本フローは終了となる。
【００５７】
つぎに、ステップＳ５４において、メッセージの転送経路情報にない転送先があるか否かを判定する。転送経路情報にない転送先がある場合には、ステップＳ５５において、転送先を全て転送先リストに追加し、ステップＳ５６において、該転送先を転送経路情報の最後尾に追加する。
【００５８】
さらに、ステップＳ５７において、転送経路情報にマークされた転送先があるか否かを判定する。マークされた転送先がある場合には、ステップＳ５８において、転送経路情報にある当該転送先マークを削除し、転送先リストに追加する。
【００５９】
そして、ステップＳ５９において、転送先リストに該当転送先があるか否かを判定する。転送先がある場合には、ステップＳ６０において、当該メッセージを転送し、ステップＳ６１において、処理履歴テーブル１０２に追加し本フローを終了する。
【００６０】
一方、ステップＳ５９において、転送先がない場合には、ステップＳ６２において、最初の送信元ノードにメッセージを転送し、ステップＳ６１において、処理履歴テーブル１０２に追加処理して終了する。
【産業上の利用可能性】
【００６１】
コンピュータネットワーク上で、送信元ノードが直接関与しないノードに対しても漏れなくメッセージ転送を行うメッセージ処理システム。
【符号の説明】
【００６２】
１  ノード
２  通信路
１０  メッセージ転送プログラム
１１  メッセージ送受信部
１２  メッセージ処理部
１３  負荷分散部
１４  障害対応部
１００  データ記憶部
１０１  送信先テーブル
１０２  処理履歴テーブル
【図１】
2011049621.tif 000003
【図２】
2011049621.tif 000004
【図３】
2011049621.tif 000005
【図４】
2011049621.tif 000006
【図５】
2011049621.tif 000007
【図６】
2011049621.tif 000008
【図７】
2011049621.tif 000009
【図８】
2011049621.tif 000010
【図９】
2011049621.tif 000011
【図１０】
2011049621.tif 000012