(57)【特許請求の範囲】
【請求項１】
それぞれトランザクション識別子を有し、トランザクションを構成する複数のメッセージを処理するメッセージ処理装置であって、
メッセージ振分け手段と、
複数の処理手段と、
構成変更手段と、
データ処理部と、
前記トランザクション識別子についての振分けルールを格納する振分ルール格納部と、を備え、
前記メッセージ振分け手段は、受信したメッセージを前記振分けルールに基づいて、前記複数の処理手段のいずれかに出力し、
前記複数の処理手段は、それぞれ、前記メッセージ振分け手段より受信したメッセージを格納するキューを有し、前記キューに格納された複数のメッセージを前記トランザクション毎に揃えてからデータ処理部に出力し、
前記処理手段のいずれかが起動または停止したとき、前記構成変更手段は前記振分けルールを変更し、
前記複数の処理手段は、それぞれ、前記キューに格納されているメッセージのうち少なくとも再振分けが必要となるメッセージを前記メッセージ振分け手段に出力する、
ことを特徴とするメッセージ処理装置。
【請求項２】
前記構成変更手段が前記振分けルールの変更を行った場合、前記振分けルールの変更を検出した前記メッセージ振分け手段が、各前記処理手段に、変更通知を出力し、
前記複数の処理手段は、それぞれ、前記変更通知を受信した場合に、前記キューに格納されているメッセージを前記メッセージ振分け手段に出力する、
ことを特徴とする請求項１記載のメッセージ処理装置。
【請求項３】
前記構成変更手段が前記振分けルールの変更を行った場合、前記振分けルールの変更を検出した前記メッセージ振分け手段が、各前記処理手段に、変更後の前記振分けルールについてのデータを含む変更通知を出力し、
前記複数の処理手段は、それぞれ、前記変更通知を受信した場合に、前記キューに格納されているメッセージのうち、前記変更通知に含まれる変更後の前記振分けルールについてのデータに従って他の前記処理手段に振分けられるべきメッセージを特定し、前記メッセージ振分け手段に出力する、
ことを特徴とする請求項１記載のメッセージ処理装置。
【請求項４】
特定の前記処理手段の停止の際に、各前記処理手段による前記メッセージ振分け手段へのメッセージの出力の終了後に、前記構成変更手段が、特定の前記処理手段に停止を指示する、
ことを特徴とする請求項１記載のメッセージ処理装置。
【請求項５】
メッセージ振分け手段と、
それぞれメッセージを格納するキューを有する複数の処理手段と、
構成変更手段と、
データ処理部と、
トランザクション識別子についての振分けルールを格納する振分ルール格納部と、を備え、
且つそれぞれ前記トランザクション識別子を有し、トランザクションを構成する複数のメッセージを処理するメッセージ処理装置によるメッセージ処理方法であって、
前記メッセージ振分け手段が、受信したメッセージを、前記振分けルールに基づいて、前記複数の処理手段のいずれかに出力するステップと、
前記処理手段が、前記メッセージ振分け手段より受信したメッセージを前記キューに格納し、前記キューに格納された複数のメッセージを前記トランザクション毎に揃えてからデータ処理部に出力するステップと、
前記処理手段のいずれかが起動または停止したとき、前記構成変更手段が前記振分けルールを変更するステップと、
前記処理手段が、前記キューに格納されているメッセージのうち少なくとも再振分けが必要となるメッセージを前記メッセージ振分け手段に出力するステップと、
を含むことを特徴とするメッセージ処理方法。
【請求項６】
トランザクション識別子についての振分けルールを格納する振分ルール格納部と、
メッセージを格納する複数のキューと、
データ処理部と、を備え、
且つそれぞれ前記トランザクション識別子を有し、トランザクションを構成する複数のメッセージを処理するコンピュータに、
メッセージ振分け手段と、
複数の処理手段と、
構成変更手段と、を実現させ、
前記メッセージ振分け手段が、受信したメッセージを、前記振分けルールに基づいて、前記複数の処理手段のいずれかに出力する処理と、
前記処理手段が、前記メッセージ振分け手段より受信したメッセージを当該処理手段に対応するキューに格納し、前記キューに格納された複数のメッセージを前記トランザクション毎に揃えてからデータ処理部に出力する処理と、
前記処理手段のいずれかが起動または停止したとき、前記構成変更手段が前記振分けルールを変更する処理と、
前記処理手段が、前記キューに格納されているメッセージのうち少なくとも再振分けが必要となるメッセージを前記メッセージ振分け手段に出力する処理と、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メッセージの紐付け処理を並列化するための技術に関する。
【背景技術】
【０００２】
電子商取引など複数階層のサーバに渡ってメッセージが交換され処理が進行するシステムでは、大量のメッセージを高速に処理するために、複数のサーバを使った並列処理が不可欠である。例えば、図１にシステムの一例を示す。ネットワーク１には、複数のユーザ端末３ａ及び３ｂが接続されており、さらに、ユーザ端末３ａ及び３ｂからのリクエストをＷｅｂサーバのいずれかに負荷分散させるように分配する分配装置５１を介してＷｅｂサーバ６１乃至６４も接続されている。Ｗｅｂサーバ６１は、さらに１又は複数のアプリケーションサーバ７１や同じく１又は複数のＤＢサーバ８１及び８３などにもバックグランドで接続されている。このようなシステムでは、Ｗｅｂサーバ６１乃至６４で受信されたリクエスト毎に、当該リクエストに必要となる処理をアプリケーションサーバ７１に要求して処理結果を得たり、リクエストに必要なＤＢ参照・更新などをＤＢサーバ８１及び８３に要求して処理結果を得たりして、サーバ間で複数のメッセージを交換して処理が行われてゆく。
【０００３】
なお、１リクエストの応答に必要なメッセージについては、メッセージに含まれるキーワード等によって１つのトランザクションとして認識される。例えば、以下のようなメッセージ群が存在する場合を考える。
ｍｓｇ１ａ（ＴａｇＡ＝１０，．．．）
ｍｓｇ１ｂ（ＴａｇＡ＝１０，．．．）
ｍｓｇ１ｃ（ＴａｇＡ＝１０，ＴａｇＢ＝Ｘ．．．）
ｍｓｇ１ｄ（ＴａｇＢ＝Ｘ，．．．）
このような例の場合、ＴａｇＡという共通するタグを有し且つＴａｇＡの値が同一のため、ｍｓｇ１ａ、ｍｓｇ１ｂ及びｍｓｇ１ｃについては同一のトランザクションに係るメッセージとして認識できる。一方、ｍｓｇ１ｄについてはＴａｇＡを有していないので、この点からするとｍｓｇ１ａ等と同一のトランザクションに係るメッセージでないと判断される。しかし、ｍｓｇ１ｄとｍｓｇ１ｃとはＴａｇＢという共通のタグを有しており且つＴａｇＢの値「Ｘ」が同一であるので、ｍｓｇ１ｃとｍｓｇ１ｄは同一のトランザクションに係るメッセージであると判断できる。このようにＴａｇＡに係るメッセージのグループと、ＴａｇＢに係るメッセージのグループとでは重複するメッセージが存在するので、上で列挙したｍｓｇ１ａ乃至ｍｓｇ１ｄは同一のトランザクションに係るメッセージであると特定することができる。本願では、このような同一トランザクションに係るメッセージを特定する技術については既に存在するものとする。そして、各メッセージには、トランザクションＩＤ又はそれに相当するデータ（キーワードやタグの値など）が含まれており、このトランザクションＩＤ又はそれに相当するデータによって、何れのトランザクションに係るメッセージであるかが特定されるものとする。本願では、トランザクションＩＤ又はそれに相当するデータについては、「トランザクションＩＤ」として総称するものとする。上で述べた例では、例えばＴａｇＡの値「１０」をトランザクションＩＤとして用いるようにしても良い。
【０００４】
このようなシステムの挙動監視やリクエスト遅延問題を解析するために、メッセージ紐付け処理が行われる。例えばトランザクションが２つ存在し、それぞれａ乃至ｆの６つのメッセージが含まれる場合、図２に示すように（例えばｍｓｇ２ｄは、トランザクション２の４番目のメッセージを表す）、メッセージの出現は順番不定である。すなわち、トランザクション毎に分かれて出現するわけではなく混ざっており、またトランザクション内のメッセージも順番が入れ替わることもある。メッセージ紐付け処理は、図２に示すようなメッセージ群を、トランザクション毎に分け、さらにトランザクションに属するメッセージを取り揃える処理である。すなわち、図３（ａ）に示すように、トランザクション１に属するメッセージｍｓｇ１ａ乃至ｍｓｇ１ｆを分別して取り揃え、図３（ｂ）に示すように、トランザクション２に属するメッセージｍｓｇ２ａ乃至ｍｓｇ２ｆを分別して取り揃える。
【０００５】
なお、分散トランザクション処理システムにおいて、処理側システムでリカバリ処理が失敗したときにもデータの整合性が保たれるようにする技術が存在する。具体的には、トランザクション振り分け処理部はトランザクションが自システム内で処理可能かどうかを判断して自システムまたは他システムに振り分け、トランザクション実行制御部は振り分けられたトランザクションの実行を制御する。トランザクション処理制御部は、処理側システムでトランザクションが完了したときに互いの転送情報記憶領域の転送情報のクリア要求を発行するとともに、処理側システムがシステムダウン後に再立ち上げした場合のトランザクション処理を保証するために、通信パスが張り直された後に依頼側システムが処理側システムに対しトランザクションの状況を問い合わせ、必要に応じて転送情報の再転送を行う。しかし、トランザクションを構成するメッセージを相互に関連付ける処理は行われていない。
【０００６】
また、障害に対して適切な処理を自動的に行う技術が存在する。具体的には、バッファメモリに常駐する多重処理実行状況テーブルは、第１次〜第ｎ次処理でのユーザプログラムの実行開始時、正常終了時、異常終了時に対応するフラグが更新される。また、連続実行プログラムは、利用者が自動復旧させたい時刻を設定する機能を有し、システムタイマで常に時間を確認する。設定した時刻になったら連続実行プログラムは、多重処理実行状況テーブルを参照しにいく。テーブル上に異常終了のフラグが検出された場合、異常終了の情報を連続実行プログラムが判断して、リカバリ・プログラムの起動がかかり、自動復旧を行なう。次に、リカバリ・プログラムが終了したときに多重処理実行状況テーブルの異常終了フラグを正常終了に書き換える。この技術では、構成変更に対して即時に対応することができるようにはなっていない。
【特許文献１】特開平１１−５３３２３号公報
【特許文献２】特開平５−６１６９７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上で述べたようなメッセージ紐付け処理は負荷が高いため並列化させる場合があるが、単に並列化を行う場合には以下のような問題がある。
【０００８】
例えば図４に示すように、メッセージ振分け部が、トランザクション１及び４を担当する紐付けサーバ１に、トランザクション１及び４に属するメッセージを割り振り、トランザクション３、６及び７を担当する紐付けサーバ２に、トランザクション３、６及び７に属するメッセージを割り振り、トランザクション２及び５を担当する紐付けサーバ３に、トランザクション２及び５に属するメッセージを割り振ることを想定する。ここで、紐付けサーバ３を動的に停止させなければならない場合には、メッセージ振分け部で振分けルールを変更して、トランザクション２及び５に属するメッセージを紐付けサーバ１又は２に割り振るようにする。しかしながら、図４に示すように紐付けサーバ３で保持されていたｍｓｇ２ｂ、ｍｓｇ２ｃ及びｍｓｇ５ａは、紐付けされることなく破棄されるようになる。また、振分けルールを変更した後に出現する、トランザクション２及び５に属するメッセージについては、紐付けサーバ１又は２に振分けられるようになるが、紐付けサーバ１及び２でも、いつまでたっても紐付けサーバ３に割り振られてしまって破棄されてしまったメッセージは届かないので、時間切れになっていずれ破棄されるようになる。従って、トランザクション２及び５のメッセージは揃わないので全て破棄され、システムの解析
には用いられない。
【０００９】
図４では紐付けサーバの停止の例を示したが、動的に増設の場合においても同様である。すなわち、メッセージ振分け部における振分けルールが変更になり、いままで担当してきたトランザクションを担当しなくなる場合が生ずる。そうすると、担当しなくなったトランザクションの一部のメッセージについては当該トランザクションを構成するメッセージが全て揃わないので、いずれ破棄されることになる。
【００１０】
このように、並列に漏れなくメッセージ紐付け処理を行うには、全てのメッセージを１つの紐付けサーバに振分けることが必要であるが、そのためにはシステム全体を停止してから紐付けサーバの追加又は削除を行う必要がある。これは現実的ではない。しかし、システム全体を停止することなく動的に停止又は増設するような場合には、従来技術では、停止又は増設前後の一定期間のメッセージ紐付け処理を漏れなく行うことはできない。
【００１１】
従って、本発明の目的は、メッセージ紐付け処理を行うサーバ等を動的に増設又は停止する場合においてもメッセージ紐付け処理を漏れなく行うことができるようにするための技術を提供することである。
【課題を解決するための手段】
【００１２】
メッセージ紐付け処理装置は、複数のトランザクションに係り且つ該当するトランザクション識別子を各々有する複数のメッセージを順番不定で受信する受信手段と、担当するトランザクションに係るメッセージを格納するキューを有し、当該キュー内のメッセージをトランザクション毎に取り揃えてからメッセージ処理部に出力する複数の紐付け処理手段と、受信したメッセージを、当該メッセージのトランザクション識別子と当該トランザクション識別子について予め定められている振分けルールとから特定されるいずれかの紐付け処理手段に出力するメッセージ振分け手段と、紐付け処理手段の起動及び停止時に振分けルールを変更する構成変更手段とを有する。そして、構成変更手段が振分けルールの変更を行った場合、各紐付け処理手段が、キュー内に格納されているメッセージのうち少なくとも再振分けが必要となるメッセージをメッセージ振分け手段に出力するものである。
【発明の効果】
【００１３】
メッセージ紐付け処理を行うサーバ等を動的に増設又は停止する場合においても漏れなくメッセージ紐付け処理を行うことができるようになる。
【発明を実施するための最良の形態】
【００１４】
図５に、本発明の一実施の形態に係るメッセージ紐付け処理装置のシステム概要を示す。本実施の形態におけるメッセージ紐付け処理装置は、各トランザクションに係るメッセージを受信するメッセージ受信部１０１と、ユーザからの指示若しくは追加又は停止のスケジューリングに従って振分ルールの変更を設定する構成変更部１０７と、構成変更部１０７によって設定される振分ルールについてのデータを格納する振分ルール格納部１０５と、メッセージ受信部１０１が受信したメッセージ等を一時的に格納する振分キュー１０３１を有し、振分ルール格納部１０５に格納されている振分ルールに従って振分キュー１０３に格納されているメッセージを、担当紐付け処理部に振分けるメッセージ振分部１０３と、メッセージ振分部１０３から振分けられたメッセージを格納する紐付けキュー１０９１乃至１１５１を有し、紐付けキュー１０９１乃至１１５１内のメッセージをトランザクション毎に紐付けする処理を実施する紐付け処理部１０９乃至１１５と、紐付け処理部１０９乃至１１５から受信し且つ紐付けされたメッセージについて統計処理などを実施するデータ処理部１１７とを有する。
【００１５】
なお、構成変更部１０７は、紐付け処理部１０９乃至１１５に対して起動又は停止の指示を行うようになっている。また、図５では、紐付け処理部１１５が現在停止していることを表すため、紐付け処理部１１５は点線で示されている。
【００１６】
また、振分ルール格納部１０５は、例えば幾つの紐付け処理部が動作しているかを表すデータ及び各紐付け処理部１０９乃至１１５にどのトランザクションを割り当てるかを表すデータが格納される。例えば、図５の例のように３つの紐付け処理部が動作している場合には、「３」及び例えばハッシュ関数値（例えば剰余）と紐付け処理部との変更後の対応関係を表すデータが振分ルール格納部１０５に格納される。メッセージ振分部１０３は、例えば受信したメッセージのトランザクションＩＤを「３」で除して、その余りが「０」であれば紐付け処理部１０９に振分け、余りが「１」であれば紐付け処理部１１１に振分け、余りが「２」であれば紐付け処理部１１３に振分けるといったような処理を行う。また、紐付け処理部１１５を起動する場合には、構成変更部１０７は、例えば「４」及び例えばハッシュ関数値（例えば剰余）と紐付け処理部との変更後の対応関係を表すデータを振分ルール格納部１０５に格納する。これによって、メッセージ振分部１０３は、受信したメッセージのトランザクションＩＤを「４」で除して、その余りによって振分け先の紐付け処理部を特定するようにする。なお、このような振分けルールは一例であって、他の方法であっても良い。本実施の形態では振分けルールに特徴はなく、一般的な手法を用いることができる。
【００１７】
また、紐付け処理部１０９乃至１１５は、例えば別サーバ上に構成されるものとする。さらに、データ処理部１１７は、１つではなく、紐付け処理部１０９乃至１１５に対応して複数個設けるようにして、各データ処理部１１７の処理結果を集計する処理部を設けるようにしても良い。
【００１８】
次に、図６乃至図１２を用いて、本実施の形態に係るメッセージ紐付け処理装置の処理内容について説明する。まず、図６を用いて、紐付け処理部を追加する場合における、構成変更部１０７の処理について説明する。構成変更部１０７は、例えばユーザからの、紐付け処理部の追加指示又はスケジューリングによる紐付け処理部の追加時間を認識すると（ステップＳ１）、今回該当する紐付け処理部（例えば紐付け処理部１１５）を特定して、当該紐付け処理部１１５を起動させる（ステップＳ３）。さらに、構成変更部１０７は、振分ルール格納部１０５に格納されている振分ルールについてのデータを、変更後の状態に変更して更新登録する（ステップＳ５）。すなわち、今回起動した紐付け処理部１１５にもメッセージが振分けられるように設定する。
【００１９】
次に、図７及び図８を用いてメッセージ振分部１０３の処理内容について説明する。メッセージ振分部１０３は、メッセージ受信部１０１が受信したメッセージをメッセージ受信部１０１から受け取ると一旦振分キュー１０３１に格納している。以下でも述べるが、紐付け処理部１０９乃至１１３から受信したメッセージについても振分キュー１０３１に格納する。そして、受信した順番で振分キュー１０３１から１つメッセージを読み出し（図７：ステップＳ１１）、振分ルール格納部１０５に格納されている振分ルールについてのデータと当該メッセージに含まれるトランザクションＩＤとから、処理を行うべき紐付け処理部を特定する（ステップＳ１３）。この処理については、上で述べたような処理を行う。そして、特定された紐付け処理部にメッセージを出力する（ステップＳ１５）。ステップＳ１１乃至Ｓ１５に係る処理を、処理終了すべきタイミングまで繰り返す（ステップＳ１７）。
【００２０】
図７に示した処理を実施しつつ別スレッドで、メッセージ振分部１０３は、振分ルール格納部１０５に格納されている振分ルールについてのデータの変更がなされたか判断する（ステップＳ２１）。変更がなければ図７の処理を実施していればよいので、ステップＳ２１に戻る。一方、変更がある場合には、ルール変更通知を生成して、現在動作している全ての紐付け処理部１０９乃至１１３に出力する（ステップＳ２３）。ここで、ルール変更通知には、単に変更を通知するものの場合もあれば、変更後の振分ルールについてのデータを含むルール変更通知である場合もある。どの紐付け処理部がどのトランザクションについて紐付け処理を実施するかを特定するためのデータが変更後の振分けルールとしてルール変更通知に含まれる。このような処理が処理終了まで繰り返される（ステップＳ２５）。
【００２１】
次に、図９及び図１０を用いて各紐付け処理部の処理内容について説明する。紐付け処理部１０９は、紐付けキュー１０９１を探索してどのようなメッセージが格納されているか特定する（ステップＳ３１）。そして、特定のトランザクションに属する全てのメッセージが揃ったか判断する（ステップＳ３３）。例えば各トランザクションがａ乃至ｆの６つのメッセージで構成される場合には、同一トランザクションについてａ乃至ｆの６つのメッセージが紐付けキュー１０９１に格納されているか判断する。まだ、紐付けキュー１０９においてどのトランザクションについてもメッセージが揃っていない場合にはステップＳ３１に戻る。
【００２２】
特定のトランザクションに属する全てのメッセージが揃っている場合には、紐付け処理部１０９は、特定のトランザクションに属する全てのメッセージをデータ処理部１１７に出力する（ステップＳ３５）。このようなステップＳ３１乃至Ｓ３５を紐付け処理部１０９自身の停止又は処理終了が指示されるまで実施する（ステップＳ３７）。
【００２３】
図９に示した処理を実施しつつ別スレッドで、紐付け処理部１０９は、ルール変更通知を受信したか判断する（ステップＳ４１）。ルール変更通知を受信していなければそれまで待機する。一方、ルール変更通知を受信し、当該ルール変更通知に変更後の振分ルールについてのデータが含まれていない場合には（ステップＳ４３：Ｎｏルート）、紐付けキュー１０９１を探索して、全てのメッセージが揃っていないトランザクション（未完トランザクションとも呼ぶ）が存在するか判断する（ステップＳ４９）。未完トランザクションが存在しなければステップＳ５３に移行する。一方、未完トランザクションが存在する場合には、未完トランザクションに属するメッセージを紐付けキュー１０９１から取り出し、メッセージ振分部１０３に返信する（ステップＳ５１）。メッセージ振分部１０３は、受信したメッセージを振分キュー１０３１に格納する。そして処理はステップＳ５３に移行する。
【００２４】
ルール変更通知に変更後の振分ルールについてのデータが含まれている場合には（ステップＳ４３：Ｙｅｓルート）、紐付けキュー１０９１内のメッセージのうち、変更後の振分けルールに基づけば他の紐付け処理部に出力すべきメッセージを特定する（ステップＳ４５）。例えば、トランザクションＩＤが、「３」「６」「９」「１２」「１５」．．．．．を担当していたが、振分けルールの変更に伴い、「４」「８」「１２」「１６」．．．．を担当するようになると判断される場合には、トランザクションＩＤが「１２」のメッセージを除き、他の紐付け処理部が担当することになるので、トランザクションＩＤが「１２」以外のメッセージを特定する。そして、特定されたメッセージをメッセージ振分部１０３に返信する（ステップＳ４７）。このような処理を行うことによって、メッセージ振分部１０３の処理負荷を下げることができる。処理は、ステップＳ５３に移行する。
【００２５】
ステップＳ５３では処理を終了すべきか否かを判断し、処理終了すべきではない場合にはステップＳ４１に戻る。一方、処理終了すべき場合（例えば処理終了や停止を指示された場合など）には、処理を終了する。
【００２６】
このような処理を実施することによって、紐付け処理部の追加の際にも、未完トランザクションのメッセージは変更後の振分けルールに従って新たに担当する紐付け処理部に振分けされるようになるので、漏れなくメッセージの紐付け処理が行われるようになる。
【００２７】
次に、紐付け処理部の停止時における処理を図１１及び図１２を用いて説明する。構成変更部１０７は、紐付け処理部の停止時には図１１に示すような処理を実施する。
【００２８】
構成変更部１０７は、例えばユーザからの、紐付け処理部の停止指示又はスケジューリングによる紐付け処理部の停止時間を認識すると（ステップＳ６１）、今回該当する紐付け処理部（例えば紐付け処理部１１５）を特定して、振分ルール格納部１０５に格納されている振分ルールについてのデータを、変更後の状態に変更して更新登録する（ステップＳ６３）。すなわち、紐付け処理部１１５へのメッセージ振分けが停止されるように設定する。そして所定時間後に、停止すべき紐付け処理部１１５に対して停止指示を出力する（ステップＳ６５）。所定時間は、メッセージ振分部１０３に各紐付け処理部からメッセージを返信する処理が完了する時間より長く設定される。但し、各紐付け処理部からメッセージの返信が完了したような通知を受けるようにして、それから該当する紐付け処理部を停止させるようにしても良い。
【００２９】
メッセージ振分部１０３については、紐付け処理部の停止時でも追加時でも同じ処理が行われる。
【００３０】
次に、紐付け処理部の停止時における各紐付け処理部の処理内容について図１２を用いて説明する。紐付け処理部１０９は、ルール変更通知を受信したか判断する（ステップＳ７１）。ルール変更通知を受信していなければそれまで待機する。一方、ルール変更通知を受信し、当該ルール変更通知に変更後の振分けルールについてのデータが含まれていない場合には（ステップＳ７３：Ｎｏルート）、紐付けキュー１０９１を探索して、未完トランザクションが存在するか判断する（ステップＳ７９）。未完トランザクションが存在しなければステップＳ８３に移行する。一方、未完トランザクションが存在する場合には、未完トランザクションに属するメッセージを紐付けキュー１０９１から取り出し、メッセージ振分部１０３に返信する（ステップＳ８１）。メッセージ振分部１０３は、受信したメッセージを振分キュー１０３１に格納する。そして処理はステップＳ８３に移行する。
【００３１】
ルール変更通知に変更後の振分ルールについてのデータが含まれている場合には（ステップＳ７３：Ｙｅｓルート）、紐付けキュー１０９１内のメッセージのうち、変更後の振分けルールに基づけば他の紐付け処理部に出力すべきメッセージを特定する（ステップＳ７５）。例えば、トランザクションＩＤが、「３」「６」「９」「１２」「１５」．．．．．を担当していたとしても、振分けルールの変更に伴い、停止する紐付き処理部の場合には全く担当するトランザクションが無くなる。このような場合には、全てのメッセージを返信すべきメッセージとして特定する。そして、特定されたメッセージをメッセージ振分部１０３に返信する（ステップＳ７７）。このような処理を行うことによって、メッセージ振分部１０３の処理負荷を下げることができる。処理は、ステップＳ８３に移行する。
【００３２】
ステップＳ８３では、紐付け処理部１０９は、ルール変更通知受信後から所定時間内に構成変更部１０７から停止指示を受信したか判断する（ステップＳ８３）。停止指示を受信していない場合にはステップＳ７１に戻る。一方、構成変更部１０７から停止指示を受信した場合には、自紐付け処理部１０９を停止させる（ステップＳ８５）。
【００３３】
このような処理を実施することによって、停止時にも漏れなくメッセージの紐付け処理を実施できるようになる。
【００３４】
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、処理フローについては処理結果が変わらなければ処理順番を入れ替えても良い。また、図５で示した構成については、複数のコンピュータで実現されることが前提であるが、どの構成要素をどのコンピュータに実装するかは任意である。例えば複数の紐付け処理部を１つのコンピュータで起動させるようにしても良い。
【００３５】
上で述べた実施の形態をまとめると、メッセージ紐付け処理装置は、複数のトランザクションに係り且つ該当するトランザクション識別子（トランザクションＩＤそのものである場合だけではなく、キーワード、タグ値その他のトランザクションを特定するために用いることができる全てのデータを含む。）を各々有する複数のメッセージを順番不定で受信する受信手段と、担当するトランザクションに係るメッセージを格納するキューを有し、当該キュー内のメッセージをトランザクション毎に取り揃えてからメッセージ処理部に出力する複数の紐付け処理手段と、受信したメッセージを、当該メッセージのトランザクション識別子と当該トランザクション識別子について予め定められている振分けルールとから特定されるいずれかの紐付け処理手段に出力するメッセージ振分け手段と、紐付け処理手段の起動及び停止時に振分けルールを変更する構成変更手段とを有する。そして、構成変更手段が振分けルールの変更を行った場合、各紐付け処理手段が、キュー内に格納されているメッセージのうち少なくとも再振分けが必要となるメッセージをメッセージ振分け手段に出力するものである。
【００３６】
このようにすれば、振分けルールが変更されて振分け先の紐付け処理手段が変更になろうとも、再度メッセージ振分け手段によって振分けが行われるようになるので、漏れなく紐付け処理を行うことができるようになる。
【００３７】
なお、構成変更手段が振分けルールの変更を行った場合、振分けルールの変更を検出したメッセージ振分け手段が、各紐付け処理手段に、変更通知を出力するようにしてもよい。なお、構成変更手段が各紐付け処理手段に変更通知を出力しても良い。そして、各紐付け処理手段は、変更通知を受信した場合に、キューに格納されているメッセージをメッセージ振分け手段に出力するようにする。これによって漏れなく新たな担当紐付け処理手段に振分け直されるようになる。
【００３８】
また、構成変更手段が振分けルールの変更を行った場合、振分けルールの変更を検出したメッセージ振分け手段が、各紐付け処理手段に、変更後の振分けルールについてのデータを含む変更通知を出力するようにしてもよい。そして、各紐付け処理手段は、変更通知を受信した場合に、キューに格納されているメッセージのうち、変更通知に含まれる変更後の振分けルールについてのデータに従って他の紐付け処理手段に振分けられるべきメッセージを特定し、メッセージ振分け手段に出力するようにする。このようにすれば、メッセージ振分け手段に返信されるメッセージの数を減らすことができ、メッセージ振分け手段の負荷を減らすことができるようになる。
【００３９】
さらに、特定の紐付け処理手段の停止の際に、各紐付け処理手段によるメッセージ振分け手段へのメッセージの出力の終了後に、構成変更手段が、特定の紐付け処理手段に停止を指示するようにしてもよい。再度のメッセージ振分け処理を保証するためである。
【００４０】
なお、上記装置を実現するためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等の記憶媒体又は記憶装置に格納される。また、ネットワークなどを介してデジタル信号として配信される場合もある。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【００４１】
なお、図５で示した構成で用いられるコンピュータは、図１３に示すように、メモリ２５０１（記憶部）とＣＰＵ２５０３（処理部）とハードディスク・ドライブ（ＨＤＤ）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。ＯＳ及びＷｅｂブラウザを含むアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。必要に応じてＣＰＵ２５０３は、表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、必要な動作を行わせる。また、処理途中のデータについては、メモリ２５０１に格納され、必要があればＨＤＤ２５０５に格納される。このようなコンピュータは、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【００４２】
（付記１）
複数のトランザクションに係り且つ該当するトランザクション識別子を各々有する複数のメッセージを順番不定で受信する受信手段と、
担当するトランザクションに係るメッセージを格納するキューを有し、当該キュー内のメッセージを前記トランザクション毎に取り揃えてからメッセージ処理部に出力する複数の紐付け処理手段と、
受信した前記メッセージを、当該メッセージのトランザクション識別子と当該トランザクション識別子について予め定められている振分けルールとから特定されるいずれかの前記紐付け処理手段に出力するメッセージ振分け手段と、
前記紐付け処理手段の起動及び停止時に前記振分けルールを変更する構成変更手段と、
を有し、
前記構成変更手段が前記振分けルールの変更を行った場合、各前記紐付け処理手段が、前記キュー内に格納されているメッセージのうち少なくとも再振分けが必要となるメッセージを前記メッセージ振分け手段に出力する
メッセージ紐付け処理装置。
【００４３】
（付記２）
前記構成変更手段が前記振分けルールの変更を行った場合、前記振分けルールの変更を検出した前記メッセージ振分け手段が、各前記紐付け処理手段に、変更通知を出力し、
各前記紐付け処理手段は、前記変更通知を受信した場合に、前記キューに格納されているメッセージを前記メッセージ振分け手段に出力する
付記１記載のメッセージ紐付け処理装置。
【００４４】
（付記３）
前記構成変更手段が前記振分けルールの変更を行った場合、前記振分けルールの変更を検出した前記メッセージ振分け手段が、各前記紐付け処理手段に、変更後の前記振分けルールについてのデータを含む変更通知を出力し、
各前記紐付け処理手段は、前記変更通知を受信した場合に、前記キューに格納されているメッセージのうち、前記変更通知に含まれる変更後の前記振分けルールについてのデータに従って他の前記紐付け処理手段に振分けられるべきメッセージを特定し、前記メッセージ振分け手段に出力する
付記１記載のメッセージ紐付け処理装置。
【００４５】
（付記４）
特定の前記紐付け処理手段の停止の際に、各前記紐付け処理手段による前記メッセージ振分け手段へのメッセージの出力の終了後に、前記構成変更手段が、特定の前記紐付け処理手段に停止を指示する
付記１記載のメッセージ紐付け処理装置。
【００４６】
（付記５）
複数のトランザクションに係り且つ該当するトランザクション識別子を各々有する複数のメッセージを順番不定で受信するステップと、
前記受信ステップにおいて受信したメッセージのトランザクション識別子と当該トランザクション識別子について予め定められている振分けルールとから、担当するトランザクションに係るメッセージを格納するキュー内のメッセージを前記トランザクション毎に取り揃えてからメッセージ処理部に出力する複数の紐付け処理部のうち担当する紐付け処理部を特定して、当該紐付け処理部に前記受信ステップにおいて受信したメッセージを出力するステップと、
前記紐付け処理部の起動又は停止時に前記振分けルールを変更するステップと、
前記構成変更ステップにおいて前記振分けルールの変更が行われた場合、各前記紐付け処理部の前記キュー内に格納されているメッセージのうち少なくとも再振分けが必要となるメッセージを取り戻し、当該メッセージのトランザクション識別子と変更後の前記振分けルールとから変更後の前記紐付け処理部を特定して、当該紐付け処理部に取り戻した前記メッセージを出力するステップと、
を含む、コンピュータに実行されるメッセージ紐付け処理方法。
【００４７】
（付記６）
コンピュータに、
複数のトランザクションに係り且つ該当するトランザクション識別子を各々有する複数のメッセージを順番不定で受信する受信手段と、
担当するトランザクションに係るメッセージを格納するキュー内のメッセージを各トランザクション毎に取り揃えてからメッセージ処理部に出力する複数の紐付け処理手段と、
受信した前記メッセージを、当該メッセージのトランザクション識別子と当該トランザクション識別子について予め定められている振分けルールとから特定されるいずれかの前記紐付け処理手段に出力するメッセージ振分け手段と、
前記紐付け処理手段の起動及び停止時に前記振分けルールを変更する構成変更手段と、
を実現させ、
前記構成変更手段が前記振分けルールの変更を行った場合、各前記紐付け処理手段が、前記キュー内に格納されているメッセージのうち少なくとも再振分けが必要となるメッセージを前記メッセージ振分け手段に出力させる
メッセージ紐付け処理プログラム。
【図面の簡単な説明】
【００４８】
【図１】従来の多階層システムの一例を示す図である。
【図２】メッセージの出現態様を説明するための図である。
【図３】（ａ）及び（ｂ）は、メッセージ紐付け処理を説明するための図である。
【図４】従来技術の問題点を説明するための図である。
【図５】本発明の実施の形態に係るメッセージ紐付け処理装置の機能ブロック図である。
【図６】紐付け処理部追加時における構成変更部の処理フローを示す図である。
【図７】メッセージ振分部の通常処理の処理フローを示す図である。
【図８】メッセージ振分部のルール変更通知についての処理の処理フローを示す図である。
【図９】紐付け処理部の通常処理の処理フローを示す図である。
【図１０】紐付け処理部追加時における紐付け処理部の処理の処理フローを示す図である。
【図１１】紐付け処理部停止時における構成変更部の処理フローを示す図である。
【図１２】紐付け処理部停止時における紐付け処理部の処理フローを示す図である。
【図１３】コンピュータの機能ブロック図である。
【符号の説明】
【００４９】
１０１  メッセージ受信部    １０３  メッセージ振分部
１０５  振分ルール格納部    １０７  構成変更部
１０９，１１１，１１３，１１５  紐付け処理部
１１７  データ処理部
１０３１  振分キュー
１０９１，１１１１，１１３１，１１５１  紐付けキュー
【図１】
0005088234.tif 000002
【図２】
0005088234.tif 000003
【図３】
0005088234.tif 000004
【図４】
0005088234.tif 000005
【図５】
0005088234.tif 000006
【図６】
0005088234.tif 000007
【図７】
0005088234.tif 000008
【図８】
0005088234.tif 000009
【図９】
0005088234.tif 000010
【図１０】
0005088234.tif 000011
【図１１】
0005088234.tif 000012
【図１２】
0005088234.tif 000013
【図１３】
0005088234.tif 000014