(57)【要約】【課題】多数対多数の複雑な接続環境においても、一群のメッセージを転送する際の順序性及び同一受信先性を保証する。【解決手段】取出部２４ｎＡが、送信元アプリ２２ｎにより送信され格納されたメッセージを、送信キュー２３ｎから取り出す。送信側選択部２４ｎＢが、取り出されたメッセージが保証メッセージの場合には、保証メッセージの転送を担当していない受信側転送部３４ｎ、または同一のメッセージ群に含まれる保証メッセージの転送を担当している受信側転送部３４ｎを選択し、保証メッセージ以外の場合には、保証メッセージの転送を担当していない受信側転送部３４ｎを選択する。転送部２４ｎＣが、選択された受信側転送部３４ｎへメッセージを転送する。【選択図】図６
2015091107.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
複数の送信元の各々から転送されたメッセージが格納された複数の送信キューのうち、対応する送信キューからメッセージを取り出し、
取り出したメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージの場合には、複数の受信先のいずれかへメッセージを転送する複数の受信側転送部から、保証メッセージの転送を担当していない受信側転送部、または取り出したメッセージと同一のメッセージ群に含まれる保証メッセージの転送を担当している受信側転送部を選択し、取り出したメッセージが、保証メッセージ以外の場合には、保証メッセージの転送を担当していない受信側転送部を選択し
選択した受信側転送部へメッセージを転送する
ことを含む処理を実行させるための転送プログラム。
【請求項２】
前記コンピュータに、
前記メッセージを取り出すこと、前記受信側転送部を選択すること、及び前記メッセージを転送することを含む処理を複数実行させ、
前記受信側転送部を選択する際に、前記保証メッセージの転送先として選択した受信側転送部の情報を、受信側転送部を選択する複数の処理で共通して参照される送信管理テーブルに登録する
ことを含む処理を実行させるための請求項１記載の転送プログラム。
【請求項３】
前記コンピュータに、メッセージ群に含まれる全ての保証メッセージの転送が終了した場合に、前記メッセージ群に含まれる保証メッセージの転送を担当していた受信側転送部の情報を、前記送信管理テーブルから削除することを含む処理を実行させるための請求項２記載の転送プログラム。
【請求項４】
前記コンピュータに、
前記受信側転送部を選択する際に、前記送信管理テーブルに、前記受信側転送部を選択する毎に更新する更新時期の情報を登録し、
前記送信管理テーブルに登録された更新時期の情報に基づいて、前記受信側転送部を選択する処理で、所定時間以上選択されていない受信側転送部の情報を、前記送信管理テーブルから削除する
ことを含む処理を実行させるための請求項２または請求項３記載の転送プログラム。
【請求項５】
コンピュータに、
複数の送信側転送部の各々から転送されたメッセージを受け付け、
受け付けたメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージの場合には、複数の受信先の各々に対応する複数の受信キューから、保証メッセージの格納を担当していない受信キュー、または受け付けたメッセージと同一のメッセージ群に含まれる保証メッセージの格納を担当している受信キューを選択し、受け付けたメッセージが、保証メッセージ以外の場合には、保証メッセージの格納を担当していない受信キューを選択し、
選択した受信キューへメッセージを格納する
ことを含む処理を実行させるための転送プログラム。
【請求項６】
前記コンピュータに、
前記メッセージを受け付けること、前記受信キューを選択すること、及び前記メッセージを格納することを含む処理を複数実行させ、
前記受信キューを選択する際に、前記保証メッセージの格納先として選択した受信キューの情報を、受信キューを選択する複数の処理で共通して参照する受信管理テーブルに登録する
ことを含む処理を実行させるための請求項５記載の転送プログラム。
【請求項７】
前記コンピュータに、メッセージ群に含まれる全ての保証メッセージの格納が終了した場合に、前記メッセージ群に含まれる保証メッセージの格納を担当していた受信キューの情報を、前記受信管理テーブルから削除することを含む処理を実行させるための請求項６記載の転送プログラム。
【請求項８】
前記コンピュータに、
前記受信キューを選択する際に、前記受信管理テーブルに、前記受信キューを選択する毎に更新する更新時期の情報を登録し、
前記受信管理テーブルに登録された更新時期の情報に基づいて、前記受信キューを選択する処理で、所定時間以上選択されていない受信キューの情報を、前記受信管理テーブルから削除する
ことを含む処理を実行させるための請求項６または請求項７記載の転送プログラム。
【請求項９】
複数の送信元の各々から転送されたメッセージが格納された複数の送信キューのうち、対応する送信キューからメッセージを取り出す取出部と、
前記取出部により取り出されたメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージの場合には、複数の受信先のいずれかへメッセージを転送する複数の受信側転送部から、保証メッセージの転送を担当していない受信側転送部、または前記取出部により取り出されたメッセージと同一のメッセージ群に含まれる保証メッセージの転送を担当している受信側転送部を選択し、前記取出部により取り出されたメッセージが、保証メッセージ以外の場合には、保証メッセージの転送を担当していない受信側転送部を選択する送信側選択部と、
前記送信側選択部により選択された受信側転送部へメッセージを転送する転送部と、
を含む転送装置。
【請求項１０】
複数の送信側転送部の各々から転送されたメッセージを受け付ける受付部と、
前記受付部により受け付けられたメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージの場合には、複数の受信先の各々に対応する複数の受信キューから、保証メッセージの格納を担当していない受信キュー、または前記受付部により受け付けられたメッセージと同一のメッセージ群に含まれる保証メッセージの格納を担当している受信キューを選択し、前記受付部により受け付けられたメッセージが、保証メッセージ以外の場合には、保証メッセージの格納を担当していない受信キューを選択する受信側選択部と、
前記受信側選択部により選択された受信キューへメッセージを格納する格納部と、
を含む転送装置。
【請求項１１】
コンピュータに、
複数の送信元の各々から転送されたメッセージが格納された複数の送信キューのうち、対応する送信キューからメッセージを取り出し、
取り出したメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージの場合には、複数の受信先のいずれかへメッセージを転送する複数の受信側転送部から、保証メッセージの転送を担当していない受信側転送部、または取り出したメッセージと同一のメッセージ群に含まれる保証メッセージの転送を担当している受信側転送部を選択し、取り出したメッセージが、保証メッセージ以外の場合には、保証メッセージの転送を担当していない受信側転送部を選択し
選択した受信側転送部へメッセージを転送する
ことを含む処理を実行させる転送方法。
【請求項１２】
コンピュータに、
複数の送信側転送部の各々から転送されたメッセージを受け付け、
受け付けたメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージの場合には、複数の受信先の各々に対応する複数の受信キューから、保証メッセージの格納を担当していない受信キュー、または受け付けたメッセージと同一のメッセージ群に含まれる保証メッセージの格納を担当している受信キューを選択し、受け付けたメッセージが、保証メッセージ以外の場合には、保証メッセージの格納を担当していない受信キューを選択し、
選択した受信キューへメッセージを格納する
ことを含む処理を実行させる転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
開示の技術は、転送プログラム、転送装置、及び転送方法に関する。
【背景技術】
【０００２】
従来、メッセージを高信頼に非同期転送するコンピュータシステムが提案されている。以下、メッセージを高信頼に非同期転送することを、「高信頼メッセージング」と記述する。「メッセージ」とは、ある意味を持ったデータの固まりで、高信頼メッセージングにおいては、メッセージ単位でデータの転送が行われる。「非同期転送」とは、送信元と受信先とが同時に動作しなくてもよい転送方式である。送信元は送信元の都合（タイミング）でメッセージを送信し、受信先は受信先のタイミングでメッセージを受信する。高信頼メッセージングにおける「高信頼」とは、各メッセージが一度だけ確実に転送されることを保証する機能である。
【０００３】
また、従来、非同期転送は、送信元１対受信先１の接続環境で用いられてきたが、処理性能を向上させ、かつリソースをなるべく無駄にしない構成とするために、多数対多数の接続環境が用いられるようになってきた。リソースとは、複数の送信元からのメッセージを転送するための複数の送信キュー及び複数の送信側転送装置、並びに、複数の受信先へメッセージを転送するための複数の受信キュー及び複数の受信側転送装置である。複数の送信元及び複数の受信先の各々が、同一の処理を分散して実行していることを前提とする。この場合、多数対多数の接続環境における高信頼メッセージングでは、複数の送信元の各々から送信されたメッセージは、リソースが有効活用されるように振り分けられて、複数の受信先の各々へ転送される。
【０００４】
また、複数のメッセージが一群として意味を成す場合がある。例えば、ＸＭＬの採用や、画像データなどテキスト以外のデータの送受信によるメッセージサイズの肥大化に伴って、ネットワークへの負荷を避けるために、メッセージを分割して転送する場合がある。この場合、分割されたメッセージ群は、本来は一つのメッセージとして処理されるべき単位である。このような一群のメッセージについて、多数対多数の接続環境における高信頼メッセージングを行う場合には、順序性及び同一受信先性が保証される必要がある。順序性の保証とは、一群のメッセージに含まれる各メッセージが、順序を保持したまま受信先へ転送されることを保証する機能である。また、同一受信先性の保証とは、一群のメッセージに含まれる各メッセージが、同一の受信先へ転送されることを保証する機能である。
【０００５】
このような、メッセージを転送する際の順序性及び同一受信先性の保証に関し、サーバ待ち行列システムに関する技術が提案されている。この技術では、１つのサブシステムが非同期的に１つまたは複数の順序付けされた動作を実行しようとする場合、待ち行列サーバが信頼性の高いメッセージ転送のために使用される。メッセージは、１つまたは複数のメッセージを有するグループとして待ち行列に送り出され、特定のグループ内のメッセージは、所定の順序で処理される。また、メッセージグループは、特定の相関関係内のすべてのグループが所定の順序で処理されるように、相関関係にあるようマークされる。
【０００６】
また、非同期通信において送信データの順序性を保証する方法が提案されている。この技術では、送信システム及び受信システムは、業務グループを構成し、送信システムは、各々順序番号管理システムへ業務グループについて順序番号の発行要求を送信する。順序番号管理システムは、業務グループについての順序番号を要求元へ返信する。送信システムは、各々業務グループについて発行された順序番号を付加した送信データを受信システムへ送信し、受信システムは、受信したデータをその順序番号の順に処理する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６−１９０２６５号公報
【特許文献２】特開２００３−０４６５１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記の従来技術では、複数の送信キュー、複数の送信側の転送装置、複数の受信キュー、及び複数の受信側転送装置を含む多数対多数の複雑な接続環境を前提としていない。従って、多数対多数の複雑な接続環境における高信頼メッセージングにおいて、順序性及び同一受信先性が保証できない場合がある、という問題がある。
【０００９】
開示の技術は、多数対多数の複雑な接続環境においても、一群のメッセージを転送する際の順序性及び同一受信先性を保証することが目的である。
【課題を解決するための手段】
【００１０】
開示の技術は、複数の送信元の各々から転送されたメッセージが格納された複数の送信キューのうち、対応する送信キューからメッセージを取り出す。また、開示の技術は、取り出したメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージか否かを判定する。保証メッセージの場合には、複数の受信先のいずれかへメッセージを転送する複数の受信側転送部から、保証メッセージの転送を担当していない受信側転送部を選択する。または、取り出したメッセージと同一のメッセージ群に含まれる保証メッセージの転送を担当している受信側転送部を選択する。また、取り出したメッセージが、保証メッセージ以外の場合には、保証メッセージの転送を担当していない受信側転送部を選択する。また、開示の技術は、選択した受信側転送部へメッセージを転送する。
【００１１】
また、開示の技術は、複数の送信側転送部の各々から転送されたメッセージを受け付ける。また、開示の技術は、受け付けたメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージか否かを判定する。保証メッセージの場合には、複数の受信先の各々に対応する複数の受信キューから、保証メッセージの格納を担当していない受信キューを選択する。または受け付けたメッセージと同一のメッセージ群に含まれる保証メッセージの格納を担当している受信キューを選択する。また、開示の技術は、受け付けたメッセージが、保証メッセージ以外の場合には、保証メッセージの格納を担当していない受信キューを選択する。また、開示の技術は、選択した受信キューへメッセージを格納する。
【発明の効果】
【００１２】
開示の技術は、一つの側面として、多数対多数の複雑な接続環境においても、一群のメッセージを転送する際の順序性及び同一受信先性を保証することができる、という効果を有する。
【図面の簡単な説明】
【００１３】
【図１】送信元１対受信先１の単純な接続環境の一例を示す概略図である。
【図２】多数対多数の複雑な接続環境の一例を示す概略図である。
【図３】多数対多数の複雑な接続環境の一例を示す概略図である。
【図４】ＳＯＡの概念を示す概略図である。
【図５】多数対多数の複雑な接続環境の一例を示す概略図である。
【図６】本実施形態に係る転送システム１０の概略構成を示すブロック図である。
【図７】メッセージのデータ構成の一例を示す図である。
【図８】送信側転送部の概略構成を示すブロック図である。
【図９】送信管理テーブルの一例を示す図である。
【図１０】受信側転送部の概略構成を示すブロック図である。
【図１１】受信管理テーブルの一例を示す図である。
【図１２】送信部として機能するコンピュータの概略構成を示すブロック図である。
【図１３】受信部として機能するコンピュータの概略構成を示すブロック図である。
【図１４】送信側転送処理の一例を示すフローチャートである。
【図１５】受信側転送処理の一例を示すフローチャートである。
【図１６】削除処理の一例を示すフローチャートである。
【図１７】メッセージ転送の一例を説明するための概略図である。
【図１８】メッセージ転送の一例を説明するための概略図である。
【図１９】メッセージ転送の一例における送信管理テーブルの一例を示す図である。
【図２０】メッセージ転送の一例における受信管理テーブルの一例を示す図である。
【図２１】メッセージ転送の一例を説明するための概略図である。
【図２２】メッセージ転送の一例における送信管理テーブルの一例を示す図である。
【図２３】メッセージ転送の一例における受信管理テーブルの一例を示す図である。
【図２４】メッセージ転送の一例を説明するための概略図である。
【図２５】メッセージ転送の一例を説明するための概略図である。
【発明を実施するための形態】
【００１４】
まず、本実施形態の前提となる多数対多数の複雑な接続環境について説明する。比較例として、送信元１対受信先１の単純な接続環境の一例を説明する。図１に示すように、送信元１対受信先１の単純な接続環境では、送信側には、１つの送信元に対応して、１つの送信キュー及び１つの転送装置（送信側）が設けられている。また、送信側とネットワークを介して接続されている受信側には、１つの受信先に対応して、１つの受信キュー及び１つの転送装置（受信側）が設けられている。この構成の場合、順序性及び同一受信先性が保証されることが必要なメッセージ群に含まれるメッセージ（以下、「保証メッセージ」という。図１の例では、丸印の「１」、「２」、及び「３」）は、順序を保持したまま同一の受信先へ転送される。
【００１５】
しかし、処理性能を向上させ、かつリソースをなるべく無駄にしない構成とするために、多数対多数の複雑な接続環境が用いられるようになってきた。図２に、多数対多数の複雑な接続環境の一例を示す。図２の例では、送信側には、３つの送信元（Ａ、Ｂ、Ｃ）に対応して、２つの送信キュー（Ａ１、Ａ２）及び２つの転送装置（Ａ、Ｂ）（送信側）が設けられている。また、送信側とネットワークを介して接続されている受信側には、４つの受信先（Ａ、Ｂ、Ｃ、Ｄ）に対応して、４つの受信キュー（Ｂ１、Ｂ２、Ｂ３、Ｂ４）及び３つの転送装置（Ａ、Ｂ、Ｃ）（受信側）が設けられている。
【００１６】
この場合、送信元から送信キューへメッセージを格納する際には、効率的にリソースが活用できるように、送信キューが選択される。同様に、転送装置（送信側）から転送装置（受信側）へメッセージを転送する際、及び転送装置（受信側）から受信キューへメッセージを格納する際も、効率的にリソースを活用できるように、転送装置（受信側）、及び受信キューが選択される。その結果、保証メッセージ群であっても、各保証メッセージの順序が保持されずに受信先に転送されたり、異なる受信先にばらばらに転送されたりする場合がある。すなわち、順序性及び同一受信先性が保証されない場合がある。
【００１７】
例えば、図２の例では、送信元Ｃから送信されたメッセージ「Ｃ１」、「Ｃ２」、及び「Ｃ３」が保証メッセージ群であったとする。送信元Ｃから送信キューＡ２に格納されたメッセージ「Ｃ１」、「Ｃ２」、及び「Ｃ３」は、転送装置Ｂ（送信側）により順次取り出される。そして、転送装置Ｂがリソースを効率的に活用できるように転送装置（受信先）を選択して、各メッセージを転送する。その結果、メッセージ「Ｃ１」及び「Ｃ３」は転送装置Ｂ（受信側）、メッセージ「Ｃ２」は転送装置Ｃ（受信側）に転送されている。さらに、メッセージ「Ｃ３」は、転送装置Ｂ（受信側）から受信キューＢ２に格納され、メッセージ「Ｃ１」は、転送装置Ｂ（受信側）から受信キューＢ３に格納され、メッセージ「Ｃ２」は、転送装置Ｃ（受信側）から受信キューＢ４に格納されている。その結果、メッセージ「Ｃ１」は受信先Ｃに転送され、メッセージ「Ｃ２」は受信先Ｄに転送され、メッセージ「Ｃ３」は受信先Ｂに転送されてしまう。従って、保証メッセージ「Ｃ１」、「Ｃ２」、及び「Ｃ３」を含む保証メッセージ群について、同一受信先性が保証できていない。また、受信先Ｂ、Ｃ、及びＤは、それぞれのタイミングで各受信先に対応する受信キューからメッセージを取り出すため、順序性も保証できていない。
【００１８】
また、図２の例で、送信元Ａから送信されたメッセージ「Ａ１」及び「Ａ２」が保証メッセージ群であったとする。この保証メッセージ群が送信キューＡ１に格納される際、送信元Ｂから送信されたメッセージ「Ｂ４」が間に入ってしまい、その状態で受信先Ａまで転送されている。保証メッセージ群に含まれる各保証メッセージは、同一受信先により、順番で処理されるべきものであるため、このように、保証メッセージの間に別のメッセージが入り込んでしまっている場合も、順序性が保証できていないといえる。
【００１９】
上記のような多数対多数の複雑な接続環境における問題点を解消するために、図３に示すように、保証メッセージ専用のキュー及び転送装置を作成することが考えられる。図３の例では、保証メッセージＡ専用のルート（送信元Ａ→送信キューＡ１→転送装置Ａ（送信側）→転送装置Ａ（受信側）→受信キューＢ１→受信先Ａ）が作成されている。
【００２０】
しかし、この場合、専用ルートのためにリソースを余計に確保する必要がある。また、新たな目的の保証メッセージの転送が必要になった場合には、新たな保証メッセージ専用のルートを作成するためのリソースが必要になり、拡張性に乏しく、リソースの無駄も多くなる。図３の例では、保証メッセージＡとは目的が異なる保証メッセージＤ専用の新たなルート（送信元Ｄ→送信キューＡ４→転送装置Ｄ（送信側）→転送装置Ｄ（受信側）→受信キューＢ５→受信先Ｆ）が作成された例を示している。目的が異なる保証メッセージとは、例えば、伝票管理システムにおける売上伝票に関連するメッセージと、発注伝票に関連するメッセージなどがある。
【００２１】
また、ＳＯＡ（Service Oriented Architecture）を利用して、上記のような多数対多数の複雑な接続環境における問題点を解消することも考えられる。図４に示すように、ＳＯＡの概念は、ＥＳＢ（Enterprise Service Bus）上にＥｎｄＰｏｉｎｔがあり、ＥｎｄＰｏｉｎｔ対して送信元及び受信先の各々がメッセージの格納及び取り出しを行うものである。
【００２２】
しかし、ＳＯＡには、そもそも転送という概念がない。また、ＳＯＡ環境で順序性を保証する場合は、図３の場合と同様に、専用のＥｎｄＰｏｉｎｔを作成し、送信元と受信先との合意の上、その専用ルートを自分たちだけで使用するように設計することが必要となる。
【００２３】
そこで、本実施形態では、図５に示すように、保証メッセージ群（図５中網掛けの丸で示した「Ｃ１」、「Ｃ２」、及び「Ｃ３」）が、多数対多数の複雑な接続環境においても、順序性及び同一受信先性が保証されるように、受信先へ転送する。
【００２４】
以下、図面を参照して開示の技術に係る実施形態の一例を詳細に説明する。
【００２５】
図６に示すように、本実施形態に係る転送システム１０は、送信側情報処理装置２０及び受信側情報処理装置３０を含んでいる。送信側情報処理装置２０及び受信側情報処理装置３０の各々は、例えば、物理サーバや仮想サーバである。
【００２６】
送信側情報処理装置２０では、複数の送信側アプリケーション（アプリ）２２１、２２２、２２３による処理が実行される。送信側アプリ２２１、２２２、２２３の各々を区別なく説明する場合には、「送信側アプリ２２ｎ」と表記する。送信側アプリ２２ｎの数は３つに限定されず、２つであってもよいし、４つ以上であってもよい。なお、送信側アプリ２２ｎは、開示の技術の送信元の一例である。また、送信側情報処理装置２０は、送信部２１を含む。送信部２１は、開示の技術の転送装置の一例である。送信部２１は、送信キュー２３１、２３２、送信側転送部２４１、２４２、送信管理テーブル２５、及び送信側削除部２６を含む。送信キュー２３１、２３２の各々を区別なく説明する場合には、「送信キュー２３ｎ」と表記する。また、送信側転送部２４１、２４２の各々を区別なく説明する場合には、「送信側転送部２４ｎ」と表記する。送信キュー２３ｎ及び送信側転送部２４ｎの数は各々２つに限定されず、３つ以上であってもよい。
【００２７】
受信側情報処理装置３０では、複数の受信側アプリ３２１、３２２、３２３による処理が実行される。受信側アプリ３２１、３２２、３２３の各々を区別なく説明する場合には、「受信側アプリ３２ｎ」と表記する。受信側アプリ３２ｎの数は３つに限定されず、２つであってもよいし、４つ以上であってもよい。なお、受信側アプリ３２ｎは、開示の技術の受信先の一例である。また、受信側情報処理装置３０は、受信部３１を含む。受信部３１は、開示の技術の転送装置の一例である。受信部３１は、受信キュー３３１、３３２、３３３、受信側転送部３４１、３４２、３４３、受信管理テーブル３５、及び受信側削除部３６を含む。受信キュー３３１、３３２、３３３の各々を区別なく説明する場合には、「受信キュー３３ｎ」と表記する。また、受信側転送部３４１、３４２、３４３の各々を区別なく説明する場合には、「受信側転送部３４ｎ」と表記する。受信キュー３３ｎ及び受信側転送部３４ｎの数は各々３つに限定されず、２つであってもよいし、４つ以上であってもよい。
【００２８】
送信側アプリ２２ｎは、リソースを有効活用できるように、送信キュー２３１または送信キュー２３２を選択して、メッセージを格納する。例えば、格納されているデータ量が少ない方の送信キュー２３ｎを選択して、メッセージを格納する。また、送信側アプリ２２ｎは、保証メッセージ群に含まれる各保証メッセージについては、保証メッセージであることを示す保証メッセージＩＤを付与する。保証メッセージＩＤとしては、保証メッセージ群を識別するための保証メッセージ群毎に異なる値が付与される。また、送信側アプリ２２ｎは、各保証メッセージが保証メッセージ群の最終の保証メッセージか否かを示す最終フラグを付与する。
【００２９】
図７に、送信アプリから送信されるメッセージ１２の一例を示す。メッセージ１２は、保証ＩＤが記憶される領域１２１、最終フラグが記憶される領域１２２、及びメッセージの内容を示すデータが記憶される領域１２３を有する。保証メッセージではないメッセージの場合は、保証ＩＤが記憶される領域１２１はブランクとなる。また、保証メッセージ群の最終の保証メッセージの場合は、最終フラグが記憶される領域１２２に、最終メッセージであることを示す最終フラグが設定され、最終メッセージではない場合には、最終フラグは設定されない。
【００３０】
送信側アプリ２２ｎは、同一の保証ＩＤを付与した保証メッセージは、順序を保持した状態で、送信キュー２３１または送信キュー２３２に格納する。
【００３１】
送信キュー２３ｎは、送信側アプリ２２ｎから送信されたメッセージが、送信された順に格納されるキューである。送信キュー２３ｎは、送信側転送部２４ｎの各々に対応して設けられる。
【００３２】
送信側転送部２４ｎは、図８に示すように、取出部２４ｎＡ、送信側選択部２４ｎＢ、及び転送部２４ｎＣを含んでいる。
【００３３】
取出部２４ｎＡは、送信側転送部２４ｎに対応する送信キュー２３ｎに格納されたメッセージを順番に取り出す。
【００３４】
送信側選択部２４ｎＢは、送信管理テーブル２５を参照して、取り出したメッセージを転送する受信側転送部３４ｎを選択する。送信側選択部２４ｎＢは、受信部３１に存在する受信側転送部３４ｎの情報を保持している。ここでは、送信側選択部２４ｎＢは、受信側転送部３４ｎとして、受信側転送部３４１、３４２、３４３が存在するという情報を保持している。
【００３５】
また、送信管理テーブル２５には、図９に示すように、受信側転送部３４ｎで転送を担当している保証メッセージの情報が格納される。図９の例では、送信管理テーブル２５には、保証ＩＤ、受信側転送部名、更新時刻、及びエントリ削除時間の情報が記憶される。送信管理テーブル２５は、例えば保証ＩＤをキーとし、受信側転送部名、更新時刻、及びエントリ削除時間の各値を持つエントリが格納されたハッシュテーブルとすることができる。
【００３６】
「更新時刻」には、送信管理テーブル２５にエントリが追加された時刻、または受信側転送部３４ｎが選択された最終時刻が格納される。「エントリ削除時間」には、エントリが削除されることなく残ってしまうことを防止するために、所定時間経過後にエントリを自動で削除するための値が格納される。所定時間は、ユーザにより定義可能である。所定時間は、固定の時間としてもよいし、保証メッセージの種類や目的毎に異なる時間を定めてもよい。例えば、サイズの大きなメッセージが分割された保証メッセージ群の場合には、一群のメッセージに含まれる各メッセージが、間を置かず転送されてくるため、比較的短めの時間（例えば、５分）を、エントリ削除時間として定めておくことができる。また、例えば、伝票管理システムにおける、同一種類の伝票処理の所定期間分（例えば、１時間分）の処理に関連したメッセージ群を保証メッセージ群としたい場合には、その所定期間（例えば、１時間）をエントリ削除時間として定めておくことができる。
【００３７】
なお、送信管理テーブル２５は、送信側転送部２４１、２４２の各々の送信側選択部２４１Ｂ、２４２Ｂが共通して参照するテーブルである。
【００３８】
送信側選択部２４ｎＢは、取出部２４ｎＡにより取り出されたメッセージが、保証ＩＤが付与された保証メッセージか否かを判定する。保証メッセージの場合には、送信管理テーブル２５を参照して、取出部２４ｎＡにより取り出されたメッセージと同一の保証メッセージ群に含まれる保証メッセージの転送を担当している受信側転送部３４ｎを選択する。同一の保証メッセージ群の転送を担当している受信側転送部３４ｎが存在しない場合には、保証メッセージの転送を担当していない受信側転送部３４ｎを選択する。より具体的には、送信側選択部２４ｎＢは、取出部２４ｎＡにより取り出されたメッセージが保証メッセージの場合、送信管理テーブル２５から、その保証メッセージに付与された保証ＩＤをキーとするエントリを検索する。対応するエントリが存在しない場合には、受信部３１に存在する受信側転送部３４ｎのうち、送信管理テーブル２５にエントリが存在しない受信側転送部３４ｎを選択する。対応するエントリが存在する場合には、そのエントリの「受信側転送部名」が示す受信側転送部３４ｎを選択する。
【００３９】
また、送信側選択部２４ｎＢは、取出部２４ｎＡにより取り出されたメッセージが、保証メッセージ以外の場合には、保証メッセージの転送を担当していない受信側転送部３４ｎを選択する。より具体的には、送信側選択部２４ｎＢは、受信部３１に存在する受信側転送部３４ｎのうち、送信管理テーブル２５にエントリが存在しない受信側転送部３４ｎを選択する。
【００４０】
さらに送信側選択部２４ｎＢは、取出部２４ｎＡにより取り出されたメッセージが、保証メッセージで、かつ保証メッセージ群の最終の保証メッセージの場合には、送信管理テーブル２５から該当のエントリを削除する。該当エントリの削除は、該当のメッセージの転送先である受信側転送部３４ｎを選択した後に行う。
【００４１】
転送部２４ｎＣは、取出部２４ｎＡにより取り出されたメッセージを、送信側選択部２４ｎＢにより選択された受信側転送部３４ｎへ転送する。
【００４２】
送信側削除部２６は、送信管理テーブル２５に格納されたエントリ毎に、現在時刻と更新時刻との差が、エントリ削除時間を超えている場合には、該当のエントリを削除する。
【００４３】
受信側転送部３４ｎは、図１０に示すように、受付部３４ｎＡ、受信側選択部３４ｎＢ、及び格納部３４ｎＣを含んでいる。
【００４４】
受付部３４ｎＡは、送信側転送部２４ｎの各々から転送されたメッセージを受け付ける。
【００４５】
受信側選択部３４ｎＢは、受信管理テーブル３５を参照して、受け付けたメッセージを格納する受信キュー３３ｎを選択する。受信側選択部３４ｎＢは、受信部３１に存在する受信キュー３３ｎの情報を保持している。ここでは、受信側選択部３４ｎＢは、受信キュー３３ｎとして、受信キュー３３１、３３２、３３３が存在するという情報を保持している。
【００４６】
また、受信管理テーブル３５には、図１１に示すように、受信キュー３３ｎで格納を担当している保証メッセージの情報が格納される。図１１の例では、受信管理テーブル３５には、保証ＩＤ、受信キュー名、更新時刻、及びエントリ削除時間の情報が記憶される。受信管理テーブル３５は、「受信側転送部名」の部分が「受信キュー名」になっている以外は、図９に示した送信管理テーブル２５と同様であるため、詳細な説明を省略する。なお、受信管理テーブル３５は、受信側転送部３４１、３４２、３４３の各々の受信側選択部３４１Ｂ、３４２Ｂ、３４３Ｂが共通して参照するテーブルである。
【００４７】
受信側選択部３４ｎＢが受信キュー３３ｎを選択する具体的な処理は、送信側転送部２４ｎの送信側選択部２４ｎＢが、受信側転送部３４ｎを選択する処理と同様であるため、詳細な説明を省略する。
【００４８】
格納部３４ｎＣは、受付部３４ｎＡにより受け付けられたメッセージを、受信側選択部３４ｎＢにより選択された受信キュー３３ｎへ格納する。
【００４９】
受信側削除部３６は、受信管理テーブル３５に格納されたエントリ毎に、現在時刻と更新時刻との差が、エントリ削除時間を超えている場合には、該当のエントリを削除する。
【００５０】
受信キュー３３ｎは、受信側アプリ３２ｎの各々に対応して設けられる。
【００５１】
受信側アプリ３２ｎは、各々のタイミングで、各々に対応する受信キュー３３ｎに格納されたメッセージを順番に取り出す。
【００５２】
送信部２１は、例えば図１２に示すコンピュータ４０で実現することができる。コンピュータ４０はＣＰＵ４２、メモリ４４、不揮発性の記憶部４６、入出力インターフェース（Ｉ／Ｆ）４７、及びネットワークＩ／Ｆ４８を備えている。ＣＰＵ４２、メモリ４４、記憶部４６、入出力Ｉ／Ｆ４７、及びネットワークＩ／Ｆ４８は、バス４９を介して互いに接続されている。
【００５３】
記憶部４６はＨＤＤ（Hard Disk Drive）やフラッシュメモリ等によって実現できる。記憶媒体としての記憶部４６には、コンピュータ４０を送信部２１として機能させるための送信プログラム５０が記憶されている。また、記憶部４６は、送信キュー領域５３、及び送信管理テーブル記憶領域５５を有する。ＣＰＵ４２は、送信プログラム５０を記憶部４６から読み出してメモリ４４に展開し、送信プログラム５０が有するプロセスを順次実行する。
【００５４】
送信プログラム５０は、取出プロセス５４ｎＡ、送信側選択プロセス５４ｎＢ、転送プロセス５４ｎＣを含む送信側転送プロセス５４ｎ、並びに送信側削除プロセス５６を有する。送信側転送プロセス５４ｎは、作成する送信側転送部２４ｎの数と同一の数含まれる。ＣＰＵ４２は、取出プロセス５４ｎＡを実行することで、図８に示す取出部２４ｎＡとして動作する。また、ＣＰＵ４２は、送信側選択プロセス５４ｎＢを実行することで、図８に示す送信側選択部２４ｎＢとして動作する。また、ＣＰＵ４２は、転送プロセス５４ｎＣを実行することで、図８に示す転送部２４ｎＣとして動作する。また、ＣＰＵ４２は、送信側削除プロセス５６を実行することで、図６に示す送信側削除部２６として動作する。
【００５５】
送信部２１がコンピュータ４０で実現される場合、送信キュー領域５３は、図６に示す送信キュー２３ｎとして用いられる。また、送信管理テーブル記憶領域５５は、図６に示す送信管理テーブル２５が記憶される記憶領域として用いられる。これにより、送信プログラム５０を実行したコンピュータ４０が、送信部２１として機能することになる。
【００５６】
また、受信部３１も、送信部２１と同様、図１３に示すコンピュータ４０で実現することができる。コンピュータ４０で受信部３１を実現する場合、記憶部４６には、コンピュータ４０を受信部３１として機能させるための受信プログラム６０が記憶されている。また、記憶部４６は、受信キュー領域６３、及び受信管理テーブル記憶領域６５を有する。ＣＰＵ４２は、受信プログラム６０を記憶部４６から読み出してメモリ４４に展開し、受信プログラム６０が有するプロセスを順次実行する。
【００５７】
受信プログラム６０は、受付プロセス６４ｎＡ、受信側選択プロセス６４ｎＢ、格納プロセス６４ｎＣを含む受信側転送プロセス６４ｎ、並びに受信側削除プロセス６６を有する。受信側転送プロセス６４ｎは、作成する受信側転送部３４ｎの数と同一の数含まれる。ＣＰＵ４２は、受付プロセス６４ｎＡを実行することで、図１０に示す受付部３４ｎＡとして動作する。また、ＣＰＵ４２は、受信側選択プロセス６４ｎＢを実行することで、図１０に示す受信側選択部３４ｎＢとして動作する。また、ＣＰＵ４２は、格納プロセス６４ｎＣを実行することで、図１０に示す格納部３４ｎＣとして動作する。また、ＣＰＵ４２は、受信側削除プロセス６６を実行することで、図６に示す受信側削除部３６として動作する。
【００５８】
受信部３１がコンピュータ４０で実現される場合、受信キュー領域６３は、図６に示す受信キュー３３ｎとして用いられる。また、受信管理テーブル記憶領域６５は、図６に示す受信管理テーブル３５が記憶される記憶領域として用いられる。これにより、受信プログラム６０を実行したコンピュータ４０が、受信部３１として機能することになる。
【００５９】
なお、送信部２１及び受信部３１は、例えば半導体集積回路、より詳しくはＡＳＩＣ（Application Specific Integrated Circuit）等で実現することも可能である。
【００６０】
次に、本実施形態に係る転送システム１０の作用について説明する。送信側アプリ２２ｎの各々から送信されたメッセージが、送信キュー２３ｎの各々に格納される。そして、送信部２１の送信側転送部２４ｎの各々が、図１４に示す送信側転送処理を実行する。ここで、送信側アプリ２２ｎから送信されるメッセージには、保証メッセージ及び保証メッセージ以外のメッセージが含まれる。そして、送信側転送部２４ｎの各々から受信側情報処理装置３０へメッセージが転送されると、受信部３１の受信側転送部３４ｎの各々が、図１５に示す受信側転送処理を実行する。また、送信側転送処理及び受信側転送処理と並行して、送信側削除部２６及び受信側削除部３６の各々が、図１６に示す削除処理を実行する。以下、各処理について詳述する。
【００６１】
まず、送信側転送処理について説明する。図１４に示す送信側転送処理のステップＳ１１で、取出部２４ｎＡが、送信側転送部２４ｎに対応する送信キュー２３ｎに格納されたメッセージを、送信キュー２３ｎの先頭から１つ取り出す。
【００６２】
次に、ステッＳ１２で、送信側選択部２４ｎＢが、上記ステップＳ１１で取り出されたメッセージが、保証ＩＤが付与された保証メッセージか否かを判定する。この判定は、例えば図７に示すメッセージ１２の領域１２１に格納された情報に基づいて行うことができる。保証ＩＤが付与された保証メッセージの場合には、ステップＳ１３へ移行し、保証メッセージではない場合には、ステップＳ２０へ移行する。
【００６３】
ステップＳ１３では、送信側選択部２４ｎＢが、上記ステップＳ１１で取り出された保証メッセージに付与された保証ＩＤをキーとするエントリを、送信管理テーブル２５から検索する。保証ＩＤに対応するエントリが存在する場合には、ステップＳ１６へ移行し、対応するエントリが存在しない場合には、ステップＳ１４へ移行する。
【００６４】
ステップＳ１４では、送信側選択部２４ｎＢが、送信管理テーブル２５を参照して、保証メッセージの転送を担当していない受信側転送部３４ｎを選択する。具体的には、送信側選択部２４ｎＢは、受信部３１に存在する受信側転送部３４ｎのうち、送信管理テーブル２５にエントリが存在しない受信側転送部３４ｎを選択する。
【００６５】
次に、ステップＳ１５で、送信側選択部２４ｎＢが、上記ステップＳ１１で取り出された保証メッセージに付与された保証ＩＤをキーとする新規エントリを追加して、ステップＳ２１へ移行する。新規エントリには、上記ステップＳ１４で選択した受信側転送部３４ｎを示す受信側転送部名、新規エントリを追加した時刻（更新時刻）、及びエントリ削除時間の情報を格納する。エントリ削除時間は、予め定めた固定時間を格納してもよいし、メッセージの領域１２３に格納されたデータからメッセージの目的や種類を判断し、メッセージの目的や種類に応じて予め定めた時間を格納してもよい。
【００６６】
一方、ステップＳ１６では、送信側選択部２４ｎＢが、上記ステップＳ１１で取り出されたメッセージと同一の保証メッセージ群に含まれる保証メッセージの転送を担当している受信側転送部３４ｎを選択する。具体的には、送信側選択部２４ｎＢは、上記ステップＳ１３で検索されたエントリの「受信側転送部名」が示す受信側転送部３４ｎを選択する。
【００６７】
次に、ステップＳ１７で、送信側選択部２４ｎＢが、選択した受信側転送部３４ｎに対応するエントリの「更新時刻」を、受信側転送部３４ｎを選択した時刻に更新する。
【００６８】
次に、ステップＳ１８で、送信側選択部２４ｎＢが、上記ステップＳ１１で取り出されたメッセージが、保証メッセージ群の最終の保証メッセージか否かを判定する。この判定は、例えば図７に示すメッセージ１２の領域１２２に格納された最終フラグに基づいて行うことができる。最終のメッセージの場合には、ステップＳ１９へ移行して、送信側選択部２４ｎＢが、送信管理テーブル２５から該当のエントリを削除して、ステップＳ２１へ移行する。最終のメッセージではない場合には、ステップＳ１９をスキップしてステップＳ２１へ移行する。
【００６９】
一方、ステップＳ２０へ移行した場合、すなわち上記ステップＳ１１で取り出されたメッセージが保証メッセージ以外の場合では、送信側選択部２４ｎＢが、送信管理テーブル２５を参照して、保証メッセージの転送を担当していない受信側転送部３４ｎを選択する。具体的には、送信側選択部２４ｎＢは、受信部３１に存在する受信側転送部３４ｎのうち、送信管理テーブル２５にエントリが存在しない受信側転送部３４ｎを選択して、ステップＳ２１へ移行する。
【００７０】
ステップＳ２１では、転送部２４ｎＣが、上記ステップＳ１１で取り出されたメッセージを、上記ステップＳ１４、Ｓ１６、またはＳ２０で選択された受信側転送部３４ｎへ転送して、送信側転送処理を終了する。
【００７１】
次に、受信側転送処理について説明する。なお、送信側転送処理と同様の処理については、詳細な説明を省略する。
【００７２】
図１５に示す受信側転送処理のステップＳ３１で、受付部３４ｎＡが、送信側転送部２４ｎの各々から転送されたメッセージを受け付ける。
【００７３】
次に、ステッップＳ３３で、受信側選択部３４ｎＢが、上記ステップＳ３１で受け付けられたメッセージが、保証ＩＤが付与された保証メッセージか否かを判定する。保証ＩＤが付与された保証メッセージの場合には、ステップＳ３３へ移行し、保証メッセージではない場合には、ステップＳ４０へ移行する。
【００７４】
ステップＳ３３では、受信側選択部３４ｎＢが、上記ステップＳ３１で受け付けられた保証メッセージに付与された保証ＩＤをキーとするエントリを、受信管理テーブル３５から検索する。保証ＩＤに対応するエントリが存在する場合には、ステップＳ３６へ移行し、対応するエントリが存在しない場合には、ステップＳ３４へ移行する。
【００７５】
ステップＳ３４で、受信側選択部３４ｎＢが、受信管理テーブル３５を参照して、保証メッセージの格納を担当していない受信キュー３３ｎを選択する。次に、ステップＳ３５で、受信側選択部３４ｎＢが、上記ステップＳ１１で取り出された保証メッセージに付与された保証ＩＤをキーとする新規エントリを追加して、ステップＳ４１へ移行する。
【００７６】
一方、ステップＳ３６では、受信側選択部３４ｎＢが、上記ステップＳ３１で受け付けられたメッセージと同一の保証メッセージ群に含まれる保証メッセージの格納を担当している受信キュー３３ｎを選択する。次に、ステップＳ３７で、受信側選択部３４ｎＢが、選択した受信キュー３３ｎに対応するエントリの「更新時刻」を、受信キュー３３ｎを選択した時刻に更新する。
【００７７】
次に、ステップＳ３８で、受信側選択部３４ｎＢが、上記ステップＳ３１で受け付けられたメッセージが、保証メッセージ群の最終の保証メッセージか否かを判定する。最終のメッセージの場合には、ステップＳ３９へ移行して、受信側選択部３４ｎＢが、受信管理テーブル３５から該当のエントリを削除して、ステップＳ４１へ移行する。最終のメッセージではない場合には、ステップＳ３９をスキップしてステップＳ４１へ移行する。
【００７８】
一方、ステップＳ４０へ移行した場合、すなわち上記ステップＳ３１で受け付けられたメッセージが保証メッセージ以外の場合では、受信側選択部３４ｎＢが、受信管理テーブル３５を参照して、保証メッセージの格納を担当していない受信キュー３３ｎを選択する。そして、ステップＳ４１へ移行する。
【００７９】
ステップＳ４１では、格納部３４ｎＣが、上記ステップＳ３１で受け付けられたメッセージを、上記ステップＳ３４、Ｓ３６、またはＳ４０で選択された受信キュー３３ｎへ格納して、受信側転送処理を終了する。
【００８０】
次に、削除処理について説明する。なお、送信側削除部２６が実行する削除処理と、受信側削除部３６が実行する削除処理とは、処理対象が、送信管理テーブル２５と受信管理テーブル３５とで異なるだけであるので、ここでは、送信側削除部２６が実行する削除処理について説明する。
【００８１】
図１６に示す削除処理のステップＳ５１で、送信側削除部２６が、変数ｉに０を設定する。次に、ステップＳ５２で、送信側削除部２６が、変数ｉを１インクリメントする。
【００８２】
次に、ステップＳ５３で、送信側削除部２６が、送信管理テーブル２５のｉ番目のエントリから、更新時刻及びエントリ削除時間を取得する。
【００８３】
次に、ステップＳ５４で、送信側削除部２６が、現在時刻と更新時刻との差が、エントリ削除時間を超えているか否かを判定する。エントリ削除時間を超えている場合には、ステップＳ５５へ移行し、送信側削除部２６が、送信管理テーブル２５から、ｉ番目のエントリを削除して、ステップＳ５６へ移行する。一方、現在時刻と更新時刻との差が、エントリ削除時間を超えていない場合には、ステップＳ５５をスキップして、ステップＳ５６へ移行する。
【００８４】
ステップＳ５６では、送信側削除部２６が、送信管理テーブル２５に登録されている全てのエントリについて、上記ステップＳ５３〜Ｓ５５の処理が終了したか否かを判定する。未処理のエントリが存在する場合には、ステップＳ５２へ戻る。全てのエントリについて処理が終了した場合には、削除処理を終了する。
【００８５】
本実施形態に係る転送システム１０におけるメッセージの転送処理について、より具体的な例を挙げて説明する。
【００８６】
まず、処理開始時には、図９及び図１１に示すように、送信管理テーブル２５及び受信管理テーブル３５にエントリが格納されていない状態であるとする。また、図１７に示すように、送信側アプリ２２１から、保証メッセージ「Ｘ１」、「Ｘ２」、及び「Ｘ３」を含む保証メッセージ群（保証ＩＤ＝「Ｘ」）が、送信キュー２３１に格納される。また、送信側アプリ２２２から、保証メッセージ「Ｙ１」を含む保証メッセージ群（保証ＩＤ＝「Ｙ」）が、送信キュー２３２に格納される。また、送信側アプリ２２３から、保証メッセージ以外のメッセージ「１」が、送信キュー２３２に格納される。
【００８７】
図１８に示すように、送信側転送部２４１の取出部２４１Ａが、送信キュー２３１からメッセージ「Ｘ１」を取り出す。現段階では、送信管理テーブル２５にはエントリが格納されていない。すなわち、受信部３１に存在する受信側転送部３４ｎのうち、保証メッセージの転送を担当している受信側転送部３４ｎは存在しない。そこで、送信側選択部２４１Ｂは、受信側転送部３４１、３４２、３４３から、リソースを効率的に利用可能な受信側転送部３４ｎを選択する。ここでは、送信側選択部２４１Ｂは、受信側転送部３４２（受信側転送部名＝受信側転送部２）を選択したものとする。そして、送信側選択部２４１Ｂは、図１９に示すように、送信管理テーブル２５に、保証ＩＤ「Ｘ」の新規エントリを追加する。
【００８８】
保証メッセージ「Ｘ１」が受信側転送部３４２へ転送されると、受付部３４２Ａが保証メッセージ「Ｘ１」を受け付ける。現段階では、受信管理テーブル３５にはエントリが格納されていない。すなわち、受信部３１に存在する受信キュー３３ｎのうち、保証メッセージの格納を担当している受信キュー３３ｎは存在しない。そこで、受信側選択部３４２Ｂは、受信キュー３３１、３３２、３３３から、リソースを効率的に利用可能な受信キュー３３ｎを選択する。ここでは、受信側選択部３４２Ｂは、受信キュー３３１（受信キュー名＝受信キュー１）を選択したものとする。そして、受信側選択部３４２Ｂは、図２０に示すように、受信管理テーブル３５に、保証ＩＤ「Ｘ」の新規エントリを追加する。受信キュー３３１に格納されたメッセージは、受信側アプリ３２１により取り出される。
【００８９】
次に、図２１に示すように、送信側転送部２４１の取出部２４１Ａが、送信キュー２３１から保証メッセージ「Ｘ２」を取り出す。送信側選択部２４１Ｂは、保証メッセージ「Ｘ２」の保証ＩＤ「Ｘ」を送信管理テーブル２５から検索する。ここでは、図１９に示すように、保証ＩＤ「Ｘ」に対応するエントリが存在するため、保証ＩＤ「Ｘ」に対応する受信側転送部名「受信側転送部２」が示す受信側転送部３４２を選択する。送信側選択部２４１Ｂは、送信管理テーブル２５の保証ＩＤ「Ｘ」に対応するエントリの「更新日時」を更新する。
【００９０】
また、送信側転送部２４２の取出部２４２Ａが、送信キュー２３２から保証メッセージ「Ｙ１」を取り出す。現段階では、送信管理テーブル２５には保証ＩＤ「Ｘ」をキーとする受信側転送部名「受信側転送部２」のエントリが格納されている。そこで、送信側選択部２４２Ｂは、保証メッセージの転送を担当していない受信側転送部３４ｎとして、受信側転送部３４１、３４３から、リソースを効率的に利用可能な受信側転送部３４ｎを選択する。ここでは、送信側選択部２４２Ｂは、受信側転送部３４３（受信側転送部名＝受信側転送部３）を選択したものとする。そして、送信側選択部２４２Ｂは、図２２に示すように、送信管理テーブル２５に、保証ＩＤ「Ｙ」の新規エントリを追加する。
【００９１】
保証メッセージ「Ｘ２」が受信側転送部３４２へ転送されると、受付部３４２Ａが保証メッセージ「Ｘ２」を受け付け、受信側選択部３４２Ｂが、保証メッセージ「Ｘ１」の格納先と同じ受信キュー３３１を選択する。受信側選択部３４２Ｂは、受信管理テーブル３５の保証ＩＤ「Ｘ」に対応するエントリの「更新日時」を更新する。
【００９２】
また、保証メッセージ「Ｙ１」が受信側転送部３４３へ転送されると、受付部３４３Ａが保証メッセージ「Ｙ１」を受け付ける。現段階では、受信管理テーブル３５には保証ＩＤ「Ｘ」をキーとする受信キュー名「受信キュー１」のエントリが格納されている。そこで、受信側選択部３４３Ｂは、保証メッセージの格納を担当していない受信キュー３３ｎとして、受信キュー３３２、３３３から、リソースを効率的に利用可能な受信キュー３３ｎを選択する。ここでは、受信側選択部３４３Ｂは、受信キュー３３３（受信キュー名＝受信キュー３）を選択したものとする。そして、受信側選択部３４３Ｂは、図２３に示すように、受信管理テーブル３５に、保証ＩＤ「Ｙ」の新規エントリを追加する。受信キュー３３３に格納されたメッセージは、受信側アプリ３２３により取り出される。
【００９３】
次に、図２４に示すように、送信側転送部２４１の取出部２４１Ａが、送信キュー２３１から保証メッセージ「Ｘ３」を取り出し、送信側選択部２４１Ｂが、保証メッセージ「Ｘ２」と同様に、受信側転送部３４２を選択する。送信側選択部２４１Ｂは、送信管理テーブル２５の保証ＩＤ「Ｘ」に対応するエントリの「更新日時」を更新する。
【００９４】
また、送信側転送部２４２の取出部２４２Ａが、送信キュー２３２からメッセージ「１」を取り出す。現段階では、送信管理テーブル２５には、保証ＩＤ「Ｘ」をキーとする受信側転送部名「受信側転送部２」のエントリ、及び保証ＩＤ「Ｙ」をキーとする受信側転送部名「受信側転送部３」のエントリが格納されている。そこで、送信側選択部２４２Ｂは、保証メッセージの転送を担当していない受信側転送部３４１を選択する。メッセージ「１」は、保証メッセージではないため、送信管理テーブル２５の更新は行われない。
【００９５】
保証メッセージ「Ｘ３」が受信側転送部３４２へ転送されると、受付部３４２Ａが保証メッセージ「Ｘ２」を受け付け、受信側選択部３４２Ｂが、保証メッセージ「Ｘ２」と同様に、受信キュー３３１を選択する。受信側選択部３４２Ｂは、受信管理テーブル３５の保証ＩＤ「Ｘ」に対応するエントリの「更新日時」を更新する。
【００９６】
また、メッセージ「１」が受信側転送部３４１へ転送されると、受付部３４１Ａがメッセージ「１」を受け付ける。現段階では、受信管理テーブル３５には保証ＩＤ「Ｘ」をキーとする受信キュー名「受信キュー１」のエントリ、及び保証ＩＤ「Ｙ」をキーとする受信キュー名「受信キュー３」のエントリが格納されている。そこで、受信側選択部３４１Ｂは、メッセージの格納を担当していない受信キュー３３２を選択する。メッセージ「１」は、保証メッセージではないため、受信管理テーブル３５の更新は行われない。受信キュー３３２に格納されたメッセージは、受信側アプリ３２２により取り出される。
【００９７】
これにより、図２５に示すように、保証メッセージ「Ｘ１」、「Ｘ２」、及び「Ｘ３」を含む保証メッセージ群は、順序を保持したまま受信側アプリ３２１へ転送される。また、他の保証メッセージ群に含まれる保証メッセージ「Ｙ１」や、保証メッセージ以外のメッセージ「１」が、間に入り込んでしまうこともない。
【００９８】
以上説明したように、本実施形態に係る転送システムによれば、送信側転送部が、保証メッセージを転送する際、受信部に存在する受信部側転送部から、保証メッセージの転送を担当していない受信側転送部を選択して、保証メッセージを転送する。また、受信側転送部が、保証メッセージを受信キューに格納する際、受信部に存在する受信キューから、保証メッセージの格納を担当していない受信キューを選択して、保証メッセージを格納する。これにより、多数対多数の複雑な接続環境においても、一群のメッセージを転送する際の順序性及び同一受信先性を保証することができる。
【００９９】
また、保証メッセージと保証メッセージ以外のメッセージとが混在している場合でも、効率よくリソースを利用し、かつ必要な場合は、順序性及び同一受信先性を保証したメッセージの転送を行うことができる。
【０１００】
また、アプリケーションのレイヤーやＯＳレイヤーの通信で、順序性及び同一受信先性を保証する仕組みのように、送信側アプリケーションと受信側アプリケーションとを１対１に規定した転送ルートの設計を行う必要がない。また、特定の受信先への送信を制御したり、受信側で同一送信元からのメッセージを再組立てしたりなどの処理も必要ない。このため、特別な処理を作成するためのコストが不要であり、アプリケーションが意識することなく、順序性及び同一受信先性を保証することができる。
【０１０１】
アプリケーション実行基盤であるミドルウェアに期待される機能として、アプリケーション実行多重度の拡張及び縮退がある。本実施形態では、アプリケーション実行多重度を自由に変更しても、順序性及び同一受信先性を保証するために、追加されたアプリケーションに対して専用のリソースや通信回線を割り当てる必要がなく、リソースを有効活用することができる。
【０１０２】
以上の実施形態に関し、更に以下の付記を開示する。
【０１０３】
（付記１）
コンピュータに、
複数の送信元の各々から転送されたメッセージが格納された複数の送信キューのうち、対応する送信キューからメッセージを取り出し、
取り出したメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージの場合には、複数の受信先のいずれかへメッセージを転送する複数の受信側転送部から、保証メッセージの転送を担当していない受信側転送部、または取り出したメッセージと同一のメッセージ群に含まれる保証メッセージの転送を担当している受信側転送部を選択し、取り出したメッセージが、保証メッセージ以外の場合には、保証メッセージの転送を担当していない受信側転送部を選択し
選択した受信側転送部へメッセージを転送する
ことを含む処理を実行させるための転送プログラム。
【０１０４】
（付記２）
前記コンピュータに、
前記メッセージを取り出すこと、前記受信側転送部を選択すること、及び前記メッセージを転送することを含む処理を複数実行させ、
前記受信側転送部を選択する際に、前記保証メッセージの転送先として選択した受信側転送部の情報を、受信側転送部を選択する複数の処理で共通して参照される送信管理テーブルに登録する
ことを含む処理を実行させるための付記１記載の転送プログラム。
【０１０５】
（付記３）
前記コンピュータに、メッセージ群に含まれる全ての保証メッセージの転送が終了した場合に、前記メッセージ群に含まれる保証メッセージの転送を担当していた受信側転送部の情報を、前記送信管理テーブルから削除することを含む処理を実行させるための付記２記載の転送プログラム。
【０１０６】
（付記４）
前記コンピュータに、
前記受信側転送部を選択する際に、前記送信管理テーブルに、前記受信側転送部を選択する毎に更新する更新時期の情報を登録し、
前記送信管理テーブルに登録された更新時期の情報に基づいて、前記受信側転送部を選択する処理で、所定時間以上選択されていない受信側転送部の情報を、前記送信管理テーブルから削除する
ことを含む処理を実行させるための付記２または付記３記載の転送プログラム。
【０１０７】
（付記５）
複数の保証メッセージを含むメッセージ群は、前記送信元により、順序を保持したまま同一の送信キューに格納される付記１〜付記４のいずれか１つに記載の転送プログラム。
【０１０８】
（付記６）
コンピュータに、
複数の送信側転送部の各々から転送されたメッセージを受け付け、
受け付けたメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージの場合には、複数の受信先の各々に対応する複数の受信キューから、保証メッセージの格納を担当していない受信キュー、または受け付けたメッセージと同一のメッセージ群に含まれる保証メッセージの格納を担当している受信キューを選択し、受け付けたメッセージが、保証メッセージ以外の場合には、保証メッセージの格納を担当していない受信キューを選択し、
選択した受信キューへメッセージを格納する
ことを含む処理を実行させるための転送プログラム。
【０１０９】
（付記７）
前記コンピュータに、
前記メッセージを受け付けること、前記受信キューを選択すること、及び前記メッセージを格納することを含む処理を複数実行させ、
前記受信キューを選択する際に、前記保証メッセージの格納先として選択した受信キューの情報を、受信キューを選択する複数の処理で共通して参照する受信管理テーブルに登録する
ことを含む処理を実行させるための付記６記載の転送プログラム。
【０１１０】
（付記８）
前記コンピュータに、メッセージ群に含まれる全ての保証メッセージの格納が終了した場合に、前記メッセージ群に含まれる保証メッセージの格納を担当していた受信キューの情報を、前記受信管理テーブルから削除することを含む処理を実行させるための付記７記載の転送プログラム。
【０１１１】
（付記９）
前記コンピュータに、
前記受信キューを選択する際に、前記受信管理テーブルに、前記受信キューを選択する毎に更新する更新時期の情報を登録し、
前記受信管理テーブルに登録された更新時期の情報に基づいて、前記受信キューを選択する処理で、所定時間以上選択されていない受信キューの情報を、前記受信管理テーブルから削除する
ことを含む処理を実行させるための付記７または付記８記載の転送プログラム。
【０１１２】
（付記１０）
複数の送信元の各々から転送されたメッセージが格納された複数の送信キューのうち、対応する送信キューからメッセージを取り出す取出部と、
前記取出部により取り出されたメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージの場合には、複数の受信先のいずれかへメッセージを転送する複数の受信側転送部から、保証メッセージの転送を担当していない受信側転送部、または前記取出部により取り出されたメッセージと同一のメッセージ群に含まれる保証メッセージの転送を担当している受信側転送部を選択し、前記取出部により取り出されたメッセージが、保証メッセージ以外の場合には、保証メッセージの転送を担当していない受信側転送部を選択する送信側選択部と、
前記送信側選択部により選択された受信側転送部へメッセージを転送する転送部と、
を含む転送装置。
【０１１３】
（付記１１）
前記取出部、前記送信側選択部、及び前記転送部を含む複数の送信側転送部を含み、
前記複数の送信側転送部の各々の送信側選択部は、前記保証メッセージの転送先として選択した受信側転送部の情報を、前記複数の送信側転送部の各々の送信側選択部が共通して参照する送信管理テーブルに登録する
付記１０記載の転送装置。
【０１１４】
（付記１２）
前記複数の送信側転送部の各々の送信側選択部は、メッセージ群に含まれる全ての保証メッセージの転送が終了した場合に、前記メッセージ群に含まれる保証メッセージの転送を担当していた受信側転送部の情報を、前記送信管理テーブルから削除する付記１１記載の転送装置。
【０１１５】
（付記１３）
前記複数の送信側転送部の各々の送信側選択部は、前記送信管理テーブルに、前記受信側転送部を選択する毎に更新する更新時期の情報を登録し、
前記送信管理テーブルに登録された更新時期の情報に基づいて、前記複数の送信側転送部の各々の送信側選択部により、所定時間以上選択されていない受信側転送部の情報を、前記送信管理テーブルから削除する送信側削除部
を含む付記１２または付記１３記載の転送装置。
【０１１６】
（付記１４）
複数の保証メッセージを含むメッセージ群は、前記送信元により、順序を保持したまま同一の送信キューに格納される付記１０〜付記１３のいずれか１つに記載の転送装置。
【０１１７】
（付記１５）
複数の送信側転送部の各々から転送されたメッセージを受け付ける受付部と、
前記受付部により受け付けられたメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージの場合には、複数の受信先の各々に対応する複数の受信キューから、保証メッセージの格納を担当していない受信キュー、または前記受付部により受け付けられたメッセージと同一のメッセージ群に含まれる保証メッセージの格納を担当している受信キューを選択し、前記受付部により受け付けられたメッセージが、保証メッセージ以外の場合には、保証メッセージの格納を担当していない受信キューを選択する受信側選択部と、
前記受信側選択部により選択された受信キューへメッセージを格納する格納部と、
を含む転送装置。
【０１１８】
（付記１６）
前記受付部、前記受信側選択部、及び前記格納部を含む複数の受信側転送部を含み、
前記複数の受信側転送部の各々の受信側選択部は、前記保証メッセージの格納先として選択した受信キューの情報を、前記複数の受信側転送部の各々の受信側選択部が共通して参照する受信管理テーブルに登録する
付記１５記載の転送装置。
【０１１９】
（付記１７）
前記複数の受信側転送部の各々の受信側選択部は、メッセージ群に含まれる全ての保証メッセージの格納が終了した場合に、前記メッセージ群に含まれる保証メッセージの格納を担当していた受信キューの情報を、前記受信管理テーブルから削除する付記１６記載の転送装置。
【０１２０】
（付記１８）
前記複数の受信側転送部の各々の受信側選択部は、前記受信管理テーブルに、前記受信キューを選択する毎に更新する更新時期の情報を登録し、
前記受信管理テーブルに登録された更新時期の情報に基づいて、前記複数の受信側転送部の各々の受信側選択部により、所定時間以上選択されていない受信キューの情報を、前記受信管理テーブルから削除する受信側削除部
を含む付記１６または付記１７記載の転送装置。
【０１２１】
（付記１９）
コンピュータに、
複数の送信元の各々から転送されたメッセージが格納された複数の送信キューのうち、対応する送信キューからメッセージを取り出し、
取り出したメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージの場合には、複数の受信先のいずれかへメッセージを転送する複数の受信側転送部から、保証メッセージの転送を担当していない受信側転送部、または取り出したメッセージと同一のメッセージ群に含まれる保証メッセージの転送を担当している受信側転送部を選択し、取り出したメッセージが、保証メッセージ以外の場合には、保証メッセージの転送を担当していない受信側転送部を選択し
選択した受信側転送部へメッセージを転送する
ことを含む処理を実行させる転送方法。
【０１２２】
（付記２０）
前記コンピュータに、
前記メッセージを取り出すこと、前記受信側転送部を選択すること、及び前記メッセージを転送することを含む処理を複数実行させ、
前記受信側転送部を選択する際に、前記保証メッセージの転送先として選択した受信側転送部の情報を、受信側転送部を選択する複数の処理で共通して参照される送信管理テーブルに登録する
ことを含む処理を実行させる付記１９記載の転送方法。
（付記２１）
前記コンピュータに、メッセージ群に含まれる全ての保証メッセージの転送が終了した場合に、前記メッセージ群に含まれる保証メッセージの転送を担当していた受信側転送部の情報を、前記送信管理テーブルから削除することを含む処理を実行させる付記２０記載の転送方法。
【０１２３】
（付記２２）
前記コンピュータに、
前記受信側転送部を選択する際に、前記送信管理テーブルに、前記受信側転送部を選択する毎に更新する更新時期の情報を登録し、
前記送信管理テーブルに登録された更新時期の情報に基づいて、前記受信側転送部を選択する処理で、所定時間以上選択されていない受信側転送部の情報を、前記送信管理テーブルから削除する
ことを含む処理を実行させる付記２または付記２１記載の転送方法。
【０１２４】
（付記２３）
複数の保証メッセージを含むメッセージ群は、前記送信元により、順序を保持したまま同一の送信キューに格納される付記１９〜付記２２のいずれか１つに記載の転送方法。
【０１２５】
（付記２４）
コンピュータに、
複数の送信側転送部の各々から転送されたメッセージを受け付け、
受け付けたメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージの場合には、複数の受信先の各々に対応する複数の受信キューから、保証メッセージの格納を担当していない受信キュー、または受け付けたメッセージと同一のメッセージ群に含まれる保証メッセージの格納を担当している受信キューを選択し、受け付けたメッセージが、保証メッセージ以外の場合には、保証メッセージの格納を担当していない受信キューを選択し、
選択した受信キューへメッセージを格納する
ことを含む処理を実行させる転送方法。
【０１２６】
（付記２５）
前記コンピュータに、
前記メッセージを受け付けること、前記受信キューを選択すること、及び前記メッセージを格納することを含む処理を複数実行させ、
前記受信キューを選択する際に、前記保証メッセージの格納先として選択した受信キューの情報を、受信キューを選択する複数の処理で共通して参照する受信管理テーブルに登録する
ことを含む処理を実行させる付記２４記載の転送方法。
【０１２７】
（付記２６）
前記コンピュータに、メッセージ群に含まれる全ての保証メッセージの格納が終了した場合に、前記メッセージ群に含まれる保証メッセージの格納を担当していた受信キューの情報を、前記受信管理テーブルから削除することを含む処理を実行させる付記２５記載の転送方法。
【０１２８】
（付記２７）
前記コンピュータに、
前記受信キューを選択する際に、前記受信管理テーブルに、前記受信キューを選択する毎に更新する更新時期の情報を登録し、
前記受信管理テーブルに登録された更新時期の情報に基づいて、前記受信キューを選択する処理で、所定時間以上選択されていない受信キューの情報を、前記受信管理テーブルから削除する
ことを含む処理を実行させる付記２５または付記２６記載の転送方法。
【０１２９】
（付記２８）
複数の送信元の各々から転送されたメッセージが格納された複数の送信キューのうち、対応する送信キューからメッセージを取り出す取出部と、
前記取出部により取り出されたメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージの場合には、複数の受信先のいずれかへメッセージを転送する複数の受信側転送部から、保証メッセージの転送を担当していない受信側転送部、または前記取出部により取り出されたメッセージと同一のメッセージ群に含まれる保証メッセージの転送を担当している受信側転送部を選択し、前記取出部により取り出されたメッセージが、保証メッセージ以外の場合には、保証メッセージの転送を担当していない受信側転送部を選択する送信側選択部と、
前記送信側選択部により選択された受信側転送部へメッセージを転送する転送部と、を含む送信側転送装置と、
前記送信側転送装置から転送されたメッセージを受け付ける受付部と、
前記受付部により受け付けられたメッセージが、保証メッセージの場合には、複数の受信先の各々に対応する複数の受信キューから、保証メッセージの格納を担当していない受信キュー、または前記受付部により受け付けられたメッセージと同一のメッセージ群に含まれる保証メッセージの格納を担当している受信キューを選択し、前記受付部により受け付けられたメッセージが、保証メッセージ以外の場合には、保証メッセージの格納を担当していない受信キューを選択する受信側選択部と、
前記受信側選択部により選択された受信キューへメッセージを格納する格納部と、を含む受信側転送装置と、
を含む転送システム。
【０１３０】
（付記２９）
前記送信側転送装置は、前記取出部、前記送信側選択部、及び前記転送部を含む複数の送信側転送部を含み、
前記複数の送信側転送部の各々の送信側選択部は、前記保証メッセージの転送先として選択した受信側転送部の情報を、前記複数の送信側転送部の各々の送信側選択部が共通して参照する送信管理テーブルに登録し、
前記受信側転送装置は、前記受付部、前記受信側選択部、及び前記格納部を含む複数の受信側転送部を含み、
前記複数の受信側転送部の各々の受信側選択部は、前記保証メッセージの格納先として選択した受信キューの情報を、前記複数の受信側転送部の各々の受信側選択部が共通して参照する受信管理テーブルに登録する
付記２８記載の転送システム。
【０１３１】
（付記３０）
前記複数の送信側転送部の各々の送信側選択部は、メッセージ群に含まれる全ての保証メッセージの転送が終了した場合に、前記メッセージ群に含まれる保証メッセージの転送を担当していた受信側転送部の情報を、前記送信管理テーブルから削除し、
前記複数の受信側転送部の各々の受信側選択部は、メッセージ群に含まれる全ての保証メッセージの格納が終了した場合に、前記メッセージ群に含まれる保証メッセージの格納を担当していた受信キューの情報を、前記受信管理テーブルから削除する
付記２９記載の転送システム。
【０１３２】
（付記３１）
前記複数の送信側転送部の各々の送信側選択部は、前記送信管理テーブルに、前記受信側転送部を選択する毎に更新する更新時期の情報を登録し、
前記送信側転送装置は、前記送信管理テーブルに登録された更新時期の情報に基づいて、前記複数の送信側転送部の各々の送信側選択部により、所定時間以上選択されていない受信側転送部の情報を、前記送信管理テーブルから削除する送信側削除部を含み、
前記複数の受信側転送部の各々の受信側選択部は、前記受信管理テーブルに、前記受信キューを選択する毎に更新する更新時期の情報を登録し、
前記受信側転送装置は、前記受信管理テーブルに登録された更新時期の情報に基づいて、前記複数の受信側転送部の各々の受信側選択部により、所定時間以上選択されていない受信キューの情報を、前記受信管理テーブルから削除する受信側削除部を含む
付記２９または付記３０記載の転送システム。
【０１３３】
（付記３２）
複数の保証メッセージを含むメッセージ群は、前記送信元により、順序を保持したまま同一の送信キューに格納される付記２８〜付記３１のいずれか１つに記載の転送システム。
【符号の説明】
【０１３４】
１０  転送システム
２０  送信側情報処理装置
２１  送信部
２２ｎ  送信側アプリ
２３ｎ  送信キュー
２４ｎ  送信側転送部
２４ｎＡ  取出部
２４ｎＢ  送信側選択部
２４ｎＣ  転送部
２５  送信管理テーブル
２６  送信側削除部
３０   受信側情報処理装置
３１  受信部
３２ｎ  受信側アプリ
３３ｎ  受信キュー
３４ｎ  受信側転送部
３４ｎＡ  受付部
３４ｎＢ  受信側選択部
３４ｎＣ  格納部
３５  受信管理テーブル
３６  受信側削除部
【図１】
2015091107.tif 000003
【図３】
2015091107.tif 000004
【図６】
2015091107.tif 000005
【図７】
2015091107.tif 000006
【図８】
2015091107.tif 000007
【図９】
2015091107.tif 000008
【図１０】
2015091107.tif 000009
【図１１】
2015091107.tif 000010
【図１２】
2015091107.tif 000011
【図１３】
2015091107.tif 000012
【図１４】
2015091107.tif 000013
【図１５】
2015091107.tif 000014
【図１６】
2015091107.tif 000015
【図１７】
2015091107.tif 000016
【図１８】
2015091107.tif 000017
【図１９】
2015091107.tif 000018
【図２０】
2015091107.tif 000019
【図２１】
2015091107.tif 000020
【図２２】
2015091107.tif 000021
【図２３】
2015091107.tif 000022
【図２４】
2015091107.tif 000023
【図２５】
2015091107.tif 000024
【図２】
2015091107.tif 000025
【図４】
2015091107.tif 000026
【図５】
2015091107.tif 000027