(57)【特許請求の範囲】
【請求項１】
メッセージ処理システムであって、
プロセッサであって、
メッセージ配信者によって配信される、メッセージタイプを含むメッセージを受信するように構成され、
前記メッセージタイプに少なくとも部分的に基づいて、複数の購読者グループの中から、前記メッセージタイプを購読登録している購読者グループを検索するように構成され、前記複数の購読者グループの各グループは、一意の識別子を有するとともに１つ又は複数のメッセージ購読者ノードを含み、前記複数の購読者グループの各グループの前記１つ又は複数のメッセージ購読者ノードの少なくとも一部は、前記メッセージ処理システムに接続され、
前記検索された購読者グループに属する複数のメッセージ購読者ノードの中から１つのメッセージ購読者ノードを選択するように構成され、前記検索された購読者グループに属する前記複数のメッセージ購読者ノードの少なくとも１つの部分集合のそれぞれは、前記検索された購読者グループに関連する機能を奏するように構成され、
前記検索された購読者グループに属する前記選択されたメッセージ購読者ノードに前記メッセージを送るように構成され、前記選択されたメッセージ購読者ノードは、前記検索された購読者グループに関連する前記機能に少なくとも部分的に基づいて、前記メッセージを処理するように構成される、
プロセッサと、
前記プロセッサに接続され、前記プロセッサに命令を提供するように構成されるメモリと、
を備えるメッセージ処理システム。
【請求項２】
請求項１に記載のシステムであって、
前記検索された購読者グループに属する前記複数のメッセージ購読者ノードは、前記メッセージ処理システムに接続される、システム。
【請求項３】
請求項１に記載のシステムであって、
前記メッセージ購読者ノードは、前記複数のメッセージ購読者ノードの中からランダムに選択される、システム。
【請求項４】
請求項１に記載のシステムであって、
前記メッセージ購読者ノードは、前記複数のメッセージ購読者ノードの中からアイドルノードに対応して選択される、システム。
【請求項５】
請求項１に記載のシステムであって、
前記メッセージ処理システムは、更に、前記複数の購読者グループの１つ又は複数のメッセージ購読者ノードに対してロング接続モードで１つ又は複数の接続を維持するように構成された通信インターフェースを備えるシステム。
【請求項６】
請求項５に記載のシステムであって、
前記通信インターフェースは、更に、前記複数の購読者グループの中の一グループに新しく追加されるノードに接続するように構成され、前記新しく追加されるノードは、前記複数の購読者グループの中の前記一グループの一意の識別子に基づいて前記複数の購読者グループの中の前記一グループに関連付けられる、システム。
【請求項７】
請求項１に記載のシステムであって、
前記複数の購読者グループの中から、前記メッセージタイプを購読登録している購読者グループを検索することは、前記メッセージタイプと前記メッセージタイプを購読登録している購読者グループの一意の識別子との間の対応関係を格納するように構成されたデータベースを検索することを含む、システム。
【請求項８】
メッセージを処理するための方法であって、
メッセージ配信者によって配信される、メッセージタイプを含むメッセージをメッセージ処理システムにおいて受信することと、
前記メッセージタイプに少なくとも部分的に基づいて、複数の購読者グループの中から、前記メッセージタイプを購読登録している購読者グループを検索することであって、前記複数の購読者グループの各グループは、一意の識別子を有するとともに１つ又は複数のメッセージ購読者ノードを含み、前記複数の購読者グループの各グループの前記１つ又は複数のメッセージ購読者ノードの少なくとも一部は、前記メッセージ処理システムに接続される、検索することと、
前記検索された購読者グループに属する複数のメッセージ購読者ノードの中から１つのメッセージ購読者ノードを選択することであって、前記検索された購読者グループに属する前記複数のメッセージ購読者ノードの少なくとも１つの部分集合のそれぞれは、前記検索された購読者グループに関連する機能を奏するように構成される、選択することと、
前記検索された購読者グループに属する前記選択されたメッセージ購読者ノードに前記メッセージを送ることであって、前記選択されたメッセージ購読者ノードは、前記検索された購読者グループに関連する前記機能に少なくとも部分的に基づいて、前記メッセージを処理するように構成される、送ることと、
を備える方法。
【請求項９】
請求項８に記載の方法であって、
前記検索された購読者グループに属する前記複数のメッセージ購読者ノードは、前記メッセージ処理システムに接続される、方法。
【請求項１０】
請求項８に記載の方法であって、
前記メッセージ購読者ノードは、前記複数のメッセージ購読者ノードの中からランダムに選択される、方法。
【請求項１１】
請求項８に記載の方法であって、
前記メッセージ購読者ノードは、前記複数のメッセージ購読者ノードの中からアイドルノードに対応して選択される、方法。
【請求項１２】
請求項８に記載の方法であって、更に
前記複数の購読者グループの１つ又は複数のメッセージ購読者ノードに対してロング接続モードで１つ又は複数の接続を維持することを備える方法。
【請求項１３】
請求項１２に記載の方法であって、更に、
前記複数の購読者グループのなかの一グループに新しく追加されるノードに接続することを備え、前記新しく追加されるノードは、前記複数の購読者グループの中の前記一グループの一意の識別子に基づいて前記複数の購読者グループの中の前記一グループに関連付けられる、方法。
【請求項１４】
請求項１２に記載の方法であって、
前記複数の購読者グループの中から、前記メッセージタイプを購読登録している購読者グループを検索することは、前記メッセージタイプと前記メッセージタイプを購読登録している購読者グループの一意の識別子との間の対応関係を格納するように構成されたデータベースを検索することを含む、方法。
【請求項１５】
メッセージ処理システムであって、
メッセージタイプを含むメッセージを配信するように構成されたメッセージ配信者と、
ミドルウェアサーバであって、
前記メッセージを受信するように構成され、
前記メッセージタイプに少なくとも部分的に基づいて、複数の購読者グループの中から、前記メッセージタイプを購読登録している購読者グループを検索するように構成され、前記複数の購読者グループの各グループは、一意の識別子を有するとともに１つ又は複数のメッセージ購読者ノードを含み、前記複数の購読者グループの各グループの前記１つ又は複数のメッセージ購読者ノードの少なくとも一部は、前記メッセージ処理システムに接続され、
前記検索された購読者グループに属する複数のメッセージ購読者ノードの中から１つのメッセージ購読者ノードを選択するように構成され、前記検索された購読者グループに属する前記複数のメッセージ購読者ノードの少なくとも１つの部分集合のそれぞれは、前記検索された購読者グループに関連する機能を奏するように構成され、
前記検索された購読者グループに属する前記選択されたメッセージ購読者ノードに前記メッセージを送るように構成され、前記選択されたメッセージ購読者ノードは、前記検索された購読者グループに関連する前記機能に少なくとも部分的に基づいて、前記メッセージを処理するように構成される、
ミドルウェアサーバと、
前記メッセージを受信して、前記メッセージの内容に基づいて適切な処理行動をとるように構成された前記メッセージ購読者ノードと、
を備えるメッセージ処理システム。
【発明の詳細な説明】
【背景技術】
【０００１】
［関連出願の相互参照］
本出願は、２００８年９月２日付けで出願された、発明の名称を「MESSAGE PROCESSING METHOD AND SYSTEM（メッセージ処理の方法及びシステム）」とする中国特許出願第２００８１０２１４３３２．４号に基づく優先権を主張する。当該出願は、あらゆる目的のために参照によって本明細書に組み込まれる。
【０００２】
既存のウェブサービスシステムの中には、システム内のイベントを処理するためにパブリッシュ−サブスクライブ・モデルを使用するシステムがある。代表的なシステムは、メッセージ配信者と、メッセージ購読者と、ミドルウェアとを含む。
【０００３】
メッセージのデータは、メッセージ配信者とメッセージ購読者との間でミドルウェアを介して送られる。メッセージ配信者は、色々なトピックスに関する様々なタイプのメッセージを配信し得る。メッセージ購読者は、関心のあるメッセージを購読登録し得る。ミドルウェアは、メッセージ配信者によって配信されるトピックのメッセージを、その特定のメッセージトピックを購読登録しているメッセージ購読者に送信し得る。同じトピックのメッセージが、複数の異なるメッセージ購読者によって購読登録され得る。異なるメッセージ購読者は、受信されたメッセージを異なるやり方で処理することができる。例えば、２つのメッセージ購読者、すなわち購読者Ａ及び購読者Ｂが、例えばトピックＡ等の同じトピックを購読しているとすると、各メッセージ購読者は、受信されたトピックＡのメッセージを自身のやり方で処理し得る。
【０００４】
例えば、電子商取引において、取引が成功裏に成されたとき、取引処理システムなどのメッセージ配信者は、その取引の成功を通知する通知メッセージを送信し得る。取引ログサーバなどのメッセージ購読者は、取引ログを記録するためにその通知メッセージを購読登録し、売り主通知サーバなどの別のメッセージ購読者もまた、商品が売れたことを売り主に通知するためにその通知メッセージを購読登録し得る。すなわち、これらの２つのサーバは、同じメッセージを異なるやり方で処理できる。
【０００５】
応用のシナリオの中には、サービスシステムにおいて２つ以上の購読者が同じトピックのメッセージを購読登録するものがある。このようなケースでは、ミドルウェアは、同じトピックのメッセージを２つ以上の購読者に送るために使用される。代表的なシステムでは、各メッセージ購読者は、単独のノードによって形成され、これは、サービスの提供に１つのデバイスのみが使用可能であることを意味する。処理されるべきデータの量が増すにつれて、このような代表的なシステムは、多くの場合、幾つかの理由によって、大量のデータの要求に応えられなくなる。
【０００６】
第１の理由は、あるメッセージ購読者ノードが機能しなくなると、そのメッセージ購読者は、ミドルウェアからの購読メッセージを受信できなくなること、あるいは、たとえ、メッセージが受信された場合でもその購読メッセージを処理できなくなる可能性があることである。このような場合には、メッセージ購読者によるメッセージ処理が中断され、そのため、そのメッセージ購読者に関連付けられたその他のシステムによる処理にも悪影響が及ぶ。
【０００７】
第２の理由は、単独のノードでは、大量のメッセージトラフィックを処理できない可能性があることである。したがって、メッセージの量が単独のノードにとって多すぎるときは、大量のデータに適応するために、ハードウェアのアップグレードが必要になるであろう。本発明は、以下の適用例として実現可能である。
［適用例１］
メッセージ処理システムであって、
プロセッサであって、
メッセージ配信者によって配信される、メッセージタイプを含むメッセージを受信するように構成され、
前記メッセージタイプに少なくとも部分的に基づいて、複数の購読者グループの中から、前記メッセージタイプを購読登録している購読者グループを検索するように構成され、前記複数の購読者グループの各グループは、一意の識別子を有するとともに１つ又は複数のメッセージ購読者ノードを含み、前記複数の購読者グループの各グループの前記１つ又は複数のメッセージ購読者ノードの少なくとも一部は、前記メッセージ処理システムに接続され、
前記検索された購読者グループに属するメッセージ購読者ノードに前記メッセージを送るように構成される、
プロセッサと、
前記プロセッサに接続され、前記プロセッサに命令を提供するように構成されるメモリと、
を備えるメッセージ処理システム。
［適用例２］
適用例１に記載のシステムであって、
前記プロセッサは、更に、前記メッセージ処理システムに接続された、前記購読者グループの複数のメッセージ購読者ノードの中から、前記メッセージ購読者ノードを検索するように構成される、システム。
［適用例３］
適用例２に記載のシステムであって、
前記メッセージ購読者ノードは、前記複数のメッセージ購読者ノードの中からランダムに選択される、システム。
［適用例４］
適用例２に記載のシステムであって、
前記メッセージ購読者ノードは、前記複数のメッセージ購読者ノードの中からアイドルノードに対応して選択される、システム。
［適用例５］
適用例１に記載のシステムであって、
前記メッセージ処理システムは、更に、前記複数の購読者グループの１つ又は複数のメッセージ購読者ノードに対してロング接続モードで１つ又は複数の接続を維持するように構成された通信インターフェースを備えるシステム。
［適用例６］
適用例５に記載のシステムであって、
前記通信インターフェースは、更に、前記複数の購読者グループの中の一グループに新しく追加されるノードに接続するように構成され、前記新しく追加されるノードは、前記複数の購読者グループの中の前記一グループの一意の識別子に基づいて前記複数の購読者グループの中の前記一グループに関連付けられる、システム。
［適用例７］
適用例１に記載のシステムであって、
前記複数の購読者グループの中から、前記メッセージタイプを購読登録している購読者グループを検索することは、前記メッセージタイプと前記メッセージタイプを購読登録している購読者グループの一意の識別子との間の対応関係を格納するように構成されたデータベースを検索することを含む、システム。
［適用例８］
メッセージを処理するための方法であって、
メッセージ配信者によって配信される、メッセージタイプを含むメッセージをメッセージ処理システムにおいて受信することと、
前記メッセージタイプに少なくとも部分的に基づいて、複数の購読者グループの中から、前記メッセージタイプを購読登録している購読者グループを検索することと、前記複数の購読者グループの各グループは、一意の識別子を有するとともに１つ又は複数のメッセージ購読者ノードを含み、前記複数の購読者グループの各グループの前記１つ又は複数のメッセージ購読者ノードの少なくとも一部は、前記メッセージ処理システムに接続されることと、
前記検索された購読者グループに属するメッセージ購読者ノードに前記メッセージを送ることと、
を備える方法。
［適用例９］
適用例８に記載の方法であって、更に、
前記メッセージ処理システムに接続された、前記購読者グループの複数のメッセージ購読者ノードの中から、前記メッセージ購読者ノードを検索することを備える方法。
［適用例１０］
適用例９に記載の方法であって、
前記メッセージ購読者ノードは、前記複数のメッセージ購読者ノードの中からランダムに選択される、方法。
［適用例１１］
適用例９に記載の方法であって、
前記メッセージ購読者ノードは、前記複数のメッセージ購読者ノードの中からアイドルノードに対応して選択される、方法。
［適用例１２］
適用例８に記載の方法であって、更に
前記複数の購読者グループの１つ又は複数のメッセージ購読者ノードに対してロング接続モードで１つ又は複数の接続を維持することを備える方法。
［適用例１３］
適用例１２に記載の方法であって、更に、
前記複数の購読者グループのなかの一グループに新しく追加されるノードに接続することを備え、前記新しく追加されるノードは、前記複数の購読者グループの中の前記一グループの一意の識別子に基づいて前記複数の購読者グループの中の前記一グループに関連付けられる、方法。
［適用例１４］
適用例１２に記載の方法であって、
前記複数の購読者グループの中から、前記メッセージタイプを購読登録している購読者グループを検索することは、前記メッセージタイプと前記メッセージタイプを購読登録している購読者グループの一意の識別子との間の対応関係を格納するように構成されたデータベースを検索することを含む、方法。
［適用例１５］
メッセージ処理システムであって、
メッセージタイプを含むメッセージを配信するように構成されたメッセージ配信者と、
ミドルウェアサーバであって、
前記メッセージを受信するように構成され、
前記メッセージタイプに少なくとも部分的に基づいて、複数の購読者グループの中から、前記メッセージタイプを購読登録している購読者グループを検索するように構成され、前記複数の購読者グループの各グループは、一意の識別子を有するとともに１つ又は複数のメッセージ購読者ノードを含み、前記複数の購読者グループの各グループの前記１つ又は複数のメッセージ購読者ノードの少なくとも一部は、前記メッセージ処理システムに接続され、
前記検索された購読者グループに属するメッセージ購読者ノードに前記メッセージを送るように構成される、
ミドルウェアサーバと、
前記メッセージを受信して、前記メッセージの内容に基づいて適切な処理行動をとるように構成された前記メッセージ購読者ノードと、
を備えるメッセージ処理システム。
【図面の簡単な説明】
【０００８】
以下の詳細な説明及び添付の図面において、発明の様々な実施形態が開示される。
【０００９】
【図１】メッセージ処理システムの一実施形態を示すブロック図である。
【００１０】
【図２】メッセージ処理システムの別の実施形態を示すブロック図である。
【００１１】
【図３】メッセージ処理システムの一実施形態にしたがった、購読者によるメッセージ購読登録手順を示すフローチャートである。
【００１２】
【図４】メッセージ処理手順の一実施形態を示すフローチャートである。
【発明を実施するための形態】
【００１３】
本発明は、プロセス、装置、システム、合成物、コンピュータ可読記憶媒体に組み込まれたコンピュータプログラム製品、並びに／又は結合先のメモリに格納された命令及び／若しくは結合先のメモリによって提供される命令を実行するように構成されたプロセッサを含む、数々の形態で実現することができる。本明細書において、これらの実現の形態、又は発明が取りえるその他の任意の形態は、技術と称されてよい。総じて、開示されたプロセスのステップの順序は、発明の範囲内において変更されてよい。別途明記されない限り、タスクを実施するように構成されるものとして説明されるプロセッサ又はメモリなどのコンポーネントは、所定時にタスクを実施するように一時的に構成される汎用コンポーネント、又はタスクを実施するように製造された特殊コンポーネントとして導入されてよい。本明細書において使用される「プロセッサ」という用語は、コンピュータプログラム命令などのデータを処理するように構成された１つ又は複数のデバイス、回路、及び／又は処理コアを意味するものとする。
【００１４】
発明の原理を例示した添付の図面を伴って、以下において、発明の１つ又は複数の実施形態に関する詳細な説明が提供される。発明は、このような実施形態に関連して説明されるが、どの実施形態にも限定されない。発明の範囲は、特許請求の範囲によってのみ限定され、数々の代替、変更、及び等価な形態を内包する。以下の説明では、発明の完全な理解を可能にするために、数々の詳細が特定される。これらの詳細は、例示を目的として提供されるものであり、発明は、これらの詳細の一部又は全部を伴わずとも、特許請求の範囲にしたがって実施されえる。記載を明瞭とするため、発明に関連した技術分野において知られている構成要素は、発明が不必要に不明瞭にされないように、詳細な説明を省略される。
【００１５】
図１は、メッセージ処理システムの一実施形態を示すブロック図である。図１に示されるように、メッセージ処理システムは、メッセージ配信者Ｕ１１と、ミドルウェアＵ１２と、幾つかのメッセージ購読者Ｕ１３とを含む。一部の実施形態では、メッセージ配信者、ミドルウェア、及びメッセージ購読者は、適切なソフトウェアを伴うサーバなどのデバイスを使用して実現される。デバイスは、有線ネットワーク、無線ネットワーク、又はローカルエリアネットワーク（ＬＡＮ）若しくは広域ネットワーク（ＷＡＮ）などの混合ネットワークを通じて接続される。この例では、メッセージ配信者Ｕ１１及びメッセージ購読者Ｕ１３は、ミドルウェアＵ１２を実装しているサーバに接続される。メッセージ配信者によって生成されたメッセージ（例えば、ユーザ取引を処理する取引サーバによって生成されたメッセージ）は、ミドルウェアに送信され、ミドルウェアは、そのメッセージを適切な（１又は複数の）購読者に再送する。
【００１６】
この例では、メッセージ購読者Ｕ１３は、購読者の機能にしたがって、図１に示されるように、例えば購読者グループＡ、Ｂなどのグループに分けられる。例えば、取引情報を記録する幾つかのログサーバは、購読者グループＡとしてグループ分けされ、幾つかの売り主通知サーバは、購読者グループＢとしてグループ分けされる。各グループは、そのグループを一意に識別するために使用される一意のグループ識別子（グループＩＤ）を割り当てられる。各購読者グループは、１又は複数のノードを含んでよい。同じグループのノードは、同じグループＩＤを共有する。購読者ノードとミドルウェアとの間で接続が成されると直ちに、その接続に関する情報がリストに追加される。一部の実施形態では、情報は、接続ＩＤと、購読者ノードのグループＩＤとを含む。一部の実施形態では、情報は、購読者ノード及びミドルウェアサーバのＩＤ及び／又はアドレスを含む。
【００１７】
メッセージ配信者Ｕ１１は、ミドルウェアＵ１２のサーバにメッセージを配信するように構成される。ミドルウェアＵ１２は、受信されたメッセージのメッセージタイプにしたがって、そのメッセージタイプに対応する（１又は複数の）グループＩＤを検索する。メッセージタイプに対応するグループＩＤが検索されると、ミドルウェアＵ１２は、検索されたグループＩＤを有するグループのノードの中からノードを選択し、その選択されたノードにメッセージを転送することができる。同じトピックのメッセージが、幾つかの異なる購読者グループによって購読され得るので、メッセージは、幾つかの購読者ループに送られ、各グループにおいて、１つのノードのみによって受信される。
【００１８】
購読者グループの購読者ノードは、受信したメッセージを処理するように構成される。同一購読者グループのノードは、同じメッセージを同じ方法で処理することができ、異なるグループのノードは、受信したメッセージを異なる方法で処理することができる。所定の一グループにおいて、１つのメッセージは、そのグループ内の１つのノードによってのみ処理される。例えば、電子商取引において、取引ログサーバからなる購読者グループの各デバイス／ノードは、取引の成功を知らせるメッセージを、取引ログを記録するために使用するように構成され、売り主通知サーバからなる購読者グループの各デバイス／ノードは、同じメッセージを、何らかの商品が売れたことを売り主に通知するために使用することができる。
【００１９】
一部の実施形態では、メッセージ処理システムは、更に、データベースＵ１４を含む。この例では、データベースＵ１４は、ミドルウェアＵ１２に接続され、ミドルウェアによって受信されたメッセージ、各メッセージタイプと各購読者グループの識別との間の対応関係、並びにノードとそれらに対応するグループ識別子及び購読者グループとの間の対応関係を格納するように構成される。一部の実施形態では、情報は、ミドルウェアＵ１２のサーバ内の内部記憶構造に格納される。異なる実施形態では、その他の適切な構成を使用することができる。
【００２０】
上述のように、システムでは、各メッセージ購読者グループにおいて複数のノードが作業負荷を共有するように構成される。したがって、このように構成されたシステムは、優れた対故障能力を有するように構成され、大量のメッセージトラフィックを処理することができる。
【００２１】
購入者グループの１つのノードが機能しなくなると、同じ購入者グループのその他のノードが、（１つ又は複数の）受信されたメッセージの処理を続ける。このようにすれば、メッセージは中断なく処理され、システム全体に優れた耐故障性が付与される。
【００２２】
一部の実施形態では、大量のトラフィックが受信されたときに、処理負荷を分担させるために１つ又は複数の新しいノードが追加されてよい。例えば、購読者グループが５つのノードを有し、特定のトピックのメッセージが毎秒５００個の速さで生成されると仮定すると、これら５つのノードは全て、５００個のメッセージを処理するために使用されてよく、この場合には、各ノードが毎秒１００個のメッセージを処理することができる。たとえ５つのノードの１つが機能しなくなっても、残りのその他の４つのノードが５００個のメッセージを処理することができる。このようにすれば、システム全体によるメッセージ処理は、１つのノードの不具合によって中断されることはない。
【００２３】
一部の実施形態では、購読者ノードは、使用可能なミドルウェアサーバのアドレス及びポートの情報を得る。購読者ノードの各ノードは、ロング接続モードでミドルウェアのサーバに接続されてよい。例えば、使用されている通信プロトコルが伝送制御プロトコル（ＴＣＰ）であるならば、ロング接続は、ＴＣＰロング接続である。本明細書において使用される「ロング接続」という用語は、「ショート接続」とは区別される。ショート接続モードでは、２つのデバイス間で確立される接続は、処理が終了するとすぐに、切断される。ロング接続モードでは、接続のリストが維持され、このリストは、各グループの識別子に関する情報、並びにそれに対応するロング接続情報（ロング接続しているグループ内の各購読者ノードの名称及び／又はアドレスや、対応するミドルウェアサーバの名称／アドレスなど）を含む。確立された接続は、処理の終了後も維持される。ロング接続を使用すれば、送られるべきメッセージがあるときに、ミドルウェアのサーバは、ミドルウェアに対して確立されている現行の接続の中から、メッセージを購読登録している（１つ又は複数の）購読者グループの（１つ又は複数の）ノードに対する（１つ又は複数の）接続を検索し、その（１つ又は複数の）購読者の（１つ又は複数の）ノードにメッセージを転送することができる。ロング接続は、接続の確立及び切断の繰り返しを回避することによって、優れたリアルタイムパフォーマンスを有する。メッセージは、ロング接続モードで迅速に送ることができる。サーバが再起動された場合又はネットワーク接続に何らかの問題がある場合には、購読者ノードは、ＴＣＰロング接続の再確立を試みる。
【００２４】
図１に示されるようなシステムでは、各購読者グループのノードの数が、動的に調整されてよい。すなわち、必要に応じて、購読者グループに対して１つ又は複数のノードの追加又は削除が行われてよい。メッセージトラフィックが重くなり、それらのメッセージの処理に購読者グループのノードがそれらのメッセージの処理に十分でないときは、１つ又は複数の新しいノードが追加されてよい。新しいノードを追加は、この購読者グループのグループＩＤを使用して、それらの新しいノードをミドルウェアのサーバに関連付けることにより行われる。購読者グループに含まれるノードが多すぎるならば、メッセージの処理から排除されるべきノードを停止させることによって、それらのノードをグループから排除してよい。
【００２５】
一部の実施形態では、より優れた冗長性を提供するために、複数のメッセージ配信者が存在する。メッセージ配信者は、グループ分けされてもよい。各配信者グループは、一意のグループＩＤを割り当てられてよく、１つ又は複数のノードを含んでよい。同じグループのノードは、同じグループＩＤを共有する。各ノードは、ミドルウェアサーバに接続され、その接続は、グループＩＤを使用して識別される。メッセージを配信する用意が整うと、そのメッセージを送るために、グループのなかからメッセージ配信者ノードが選択される。複数のメッセージ配信者ノードが使用可能な実施形態では、メッセージを送るために、ランダムに１つのノードが選択されてよく、又は最もビジーでないノードが選択され得る。このようにすれば、メッセージの配信は、配信者グループの中の１つのノードが機能しなくなっても中断されない。また、配信されるべきメッセージトラフィックが重いときは、配信者の処理負荷を分担するために、グループの中の複数のノードが使用されてよい。図２は、メッセージ処理システムの別の実施形態を示すブロック図である。この例では、メッセージ購読者は、グループＡ及びグループＢに分けられ、各グループは、２つのノードを含み、メッセージ配信者は、グループＣ及びグループＤに分けられ、各グループは、やはり２つのノードを含む。その他の実施形態では、異なる配置のグループ及びノードを使用することができる。
【００２６】
一部の実施形態では、メッセージ処理システムは、購読登録手順及びメッセージ処理手順を実施する。２つの手順の例が、以下で説明される。
【００２７】
図３は、メッセージ処理システムの一実施形態にしたがった、購読者によるメッセージ購読登録手順を示すフローチャートである。
【００２８】
プロセス３００は、例えば、図１のＵ１２のようなミドルウェア上で実施されてよい。ステップ３０１では、メッセージ購読者から、そのメッセージ購読者が関心のある特定のトピックを購読登録する旨を示す購読登録情報が受信される。メッセージ購読者は、購読者グループを代行して購読登録することができる。購読登録情報は、グループＩＤ、及びその購読者グループによって購読登録されるメッセージタイプを含む。
【００２９】
ステップ３０２では、グループＩＤと、メッセージ購読者によって購読登録されたメッセージタイプとの間の対応付けなどの、購読登録情報が記録される。記録された情報は、例えば、ミドルウェア上のメモリ／ストレージに又はミドルウェアによってアクセス可能なデータベースに格納される。
【００３０】
ステップ３０３では、メッセージ購読者に対して購読登録の成功を示す肯定応答メッセージが送信される。購読登録情報の受信又は記録が失敗した場合は、メッセージ購読者が購読登録情報を再送信できるように、否定応答が送信される。プロセス３００は、メッセージ購読者が複数のメッセージタイプを購読登録するために繰り返されてよい。
【００３１】
上記の手順にしたがってメッセージ購読者がメッセージを購読登録した後、ミドルウェアは、メッセージ購読者にメッセージを転送することができ、具体的には、メッセージ購読者の購読者グループのなかから選択されたノードにメッセージを転送することができる。
【００３２】
図４は、メッセージ処理手順の一実施形態を示すフローチャートである。プロセス４００は、図１のＵ１２などのミドルウェア上で実施されてよい。
【００３３】
ステップ４０１では、メッセージ配信者によって送信されたメッセージが受信される。
【００３４】
ステップ４０２では、配信が成功したことを示す肯定応答がメッセージ配信者に送信される。一部の実施形態では、メッセージは、受信されると直ちに、適切な購読者に再送信される。一部の実施形態では、処理されるべきメッセージの順序を管理するために、タスク待ち行列が保持される。したがって、メッセージは格納され、メッセージ転送タスクがタスク待ち行列に加えられる。
【００３５】
ステップ４０３では、タスク待ち行列からメッセージ転送タスクが取り出され、メッセージタイプにしたがって、１つ又は複数の対応する購読者グループの（１つ又は複数の）グループＩＤが検索される。例えば、メッセージタイプを適切なグループＩＤに対応付けるマッピングテーブルに購読登録情報を格納される実施形態では、（１つ又は複数の）対応する購読者グループＩＤを検索するためのテーブルに対する索引として、受信されたメッセージのメッセージタイプが使用される。
【００３６】
ステップ４０４では、受信されたメッセージタイプを購読登録していることが判明した、対応する各購読者グループが処理される。具体的には、メッセージタイプを購読登録している各購読者グループについて、ミドルウェアに対して接続を持つノードが検索される。ミドルウェアと購読者グループのそれぞれのノードとの間のアクティブ接続のリストが保持される実施形態では、現メッセージタイプを購読登録している購読者グループの接続が検索される。１つの接続のみが見つかったならば、その接続がそのまま使用される。複数の接続が見つかったならば、それらの接続の中から１つの接続がランダムに選択されてよい。一部の実施形態では、ノード／接続をランダムに選ぶのではなく、アクティブ接続を持つ購読者グループの各ノードが、それがアイドルであるかどうかを判定するためにポーリングされる。そして、メッセージを送るために、アイドルノードが選択される。
【００３７】
ステップ４０５では、（１つ又は複数の）選択されたノードに、（１つ又は複数の）それぞれの接続を通じてメッセージが送られる。
【００３８】
メッセージを受信すると、ノードは、メッセージを処理して適切な行動をとる。例えば、取引成功メッセージがログサーバ及び売り主通知サーバによって受信された場合には、前者はログ情報を更新し、後者はｅｍａｉｌ（電子メール）による通知を売り主に送信する。
【００３９】
一部の実施形態では、購読者グループの各ノードは、ひとたび確立されると、接続がオープンのままであるロング接続モードでミドルウェアのサーバに接続される。このようにすれば、ミドルウェアのサーバは、メッセージを受信したときに、現行の接続の中から、そのメッセージを購読登録している（１つ又は複数の）購読者の（１つ又は複数の）ノードに対する（１つ又は複数の）接続を検索し、（１つ又は複数の）検索された接続を通じて（１つ又は複数の）ノードにメッセージを転送することができる。
【００４０】
一実施形態では、１つ又は複数の配信者グループに分けられた１つ又は複数のメッセージ配信者が存在し得る。各配信者グループは、１つ又は複数のノードを含み得る。各配信者グループは、メッセージをミドルウェアに配信するために、１つのノードを選択する。このようにすれば、メッセージの配信は、たとえ配信者グループのなかの１つのノードが機能しなくなっても中断されなくてすむ。また、配信されるべきメッセージトラフィックが重いときは、配信者の処理負荷を分担するために、グループの中の複数のノードが使用されてよい。
【００４１】
メッセージ処理の方法及びシステムは、本発明の一部の実施形態にしたがって上述されている。上記の特定の実施形態は、本発明の着想及び解決策に対するより良い理解を可能にするために、本発明の原理を示す例として説明されている。また、当業者ならば、本発明の開示内容から逸脱することなく本発明の実施形態及び応用に対する多くの変形又は変更に気付くことができることがわかる。
【００４２】
以上の実施形態は、理解を明瞭にする目的で幾らか詳細に説明されてきたが、本発明は、提供された詳細に限定されず、本発明を実現するには、多くの代替方法がある。開示された実施形態は、例示的なものであり、限定的なものではない。
【図１】
0005398836.tif 000002
【図２】
0005398836.tif 000003
【図３】
0005398836.tif 000004
【図４】
0005398836.tif 000005