JP6277680B2 - 転送プログラム、装置、及び方法 - Google Patents

転送プログラム、装置、及び方法 Download PDF

Info

Publication number
JP6277680B2
JP6277680B2 JP2013231356A JP2013231356A JP6277680B2 JP 6277680 B2 JP6277680 B2 JP 6277680B2 JP 2013231356 A JP2013231356 A JP 2013231356A JP 2013231356 A JP2013231356 A JP 2013231356A JP 6277680 B2 JP6277680 B2 JP 6277680B2
Authority
JP
Japan
Prior art keywords
message
reception
transmission
guarantee
transfer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013231356A
Other languages
English (en)
Other versions
JP2015091107A (ja
Inventor
卓真 岩立
卓真 岩立
越智 亮
亮 越智
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013231356A priority Critical patent/JP6277680B2/ja
Publication of JP2015091107A publication Critical patent/JP2015091107A/ja
Application granted granted Critical
Publication of JP6277680B2 publication Critical patent/JP6277680B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Communication Control (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Description

開示の技術は、転送プログラム、転送装置、及び転送方法に関する。
従来、メッセージを高信頼に非同期転送するコンピュータシステムが提案されている。以下、メッセージを高信頼に非同期転送することを、「高信頼メッセージング」と記述する。「メッセージ」とは、ある意味を持ったデータの固まりで、高信頼メッセージングにおいては、メッセージ単位でデータの転送が行われる。「非同期転送」とは、送信元と受信先とが同時に動作しなくてもよい転送方式である。送信元は送信元の都合(タイミング)でメッセージを送信し、受信先は受信先のタイミングでメッセージを受信する。高信頼メッセージングにおける「高信頼」とは、各メッセージが一度だけ確実に転送されることを保証する機能である。
また、従来、非同期転送は、送信元1対受信先1の接続環境で用いられてきたが、処理性能を向上させ、かつリソースをなるべく無駄にしない構成とするために、多数対多数の接続環境が用いられるようになってきた。リソースとは、複数の送信元からのメッセージを転送するための複数の送信キュー及び複数の送信側転送装置、並びに、複数の受信先へメッセージを転送するための複数の受信キュー及び複数の受信側転送装置である。複数の送信元及び複数の受信先の各々が、同一の処理を分散して実行していることを前提とする。この場合、多数対多数の接続環境における高信頼メッセージングでは、複数の送信元の各々から送信されたメッセージは、リソースが有効活用されるように振り分けられて、複数の受信先の各々へ転送される。
また、複数のメッセージが一群として意味を成す場合がある。例えば、XMLの採用や、画像データなどテキスト以外のデータの送受信によるメッセージサイズの肥大化に伴って、ネットワークへの負荷を避けるために、メッセージを分割して転送する場合がある。この場合、分割されたメッセージ群は、本来は一つのメッセージとして処理されるべき単位である。このような一群のメッセージについて、多数対多数の接続環境における高信頼メッセージングを行う場合には、順序性及び同一受信先性が保証される必要がある。順序性の保証とは、一群のメッセージに含まれる各メッセージが、順序を保持したまま受信先へ転送されることを保証する機能である。また、同一受信先性の保証とは、一群のメッセージに含まれる各メッセージが、同一の受信先へ転送されることを保証する機能である。
このような、メッセージを転送する際の順序性及び同一受信先性の保証に関し、サーバ待ち行列システムに関する技術が提案されている。この技術では、1つのサブシステムが非同期的に1つまたは複数の順序付けされた動作を実行しようとする場合、待ち行列サーバが信頼性の高いメッセージ転送のために使用される。メッセージは、1つまたは複数のメッセージを有するグループとして待ち行列に送り出され、特定のグループ内のメッセージは、所定の順序で処理される。また、メッセージグループは、特定の相関関係内のすべてのグループが所定の順序で処理されるように、相関関係にあるようマークされる。
また、非同期通信において送信データの順序性を保証する方法が提案されている。この技術では、送信システム及び受信システムは、業務グループを構成し、送信システムは、各々順序番号管理システムへ業務グループについて順序番号の発行要求を送信する。順序番号管理システムは、業務グループについての順序番号を要求元へ返信する。送信システムは、各々業務グループについて発行された順序番号を付加した送信データを受信システムへ送信し、受信システムは、受信したデータをその順序番号の順に処理する。
特開2006−190265号公報 特開2003−046510号公報
しかしながら、上記の従来技術では、複数の送信キュー、複数の送信側の転送装置、複数の受信キュー、及び複数の受信側転送装置を含む多数対多数の複雑な接続環境を前提としていない。従って、多数対多数の複雑な接続環境における高信頼メッセージングにおいて、順序性及び同一受信先性が保証できない場合がある、という問題がある。
開示の技術は、多数対多数の複雑な接続環境においても、一群のメッセージを転送する際の順序性及び同一受信先性を保証することが目的である。
開示の技術は、複数の送信元の各々から転送されたメッセージが格納された複数の送信キューのうち、対応する送信キューからメッセージを取り出す。また、開示の技術は、取り出したメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージか否かを判定する。保証メッセージの場合には、複数の受信先のいずれかへメッセージを転送する複数の受信側転送部から、保証メッセージの転送を担当していない状態の受信側転送部を選択する。または、取り出したメッセージと同一のメッセージ群に含まれる保証メッセージの転送を担当している状態の受信側転送部を選択する。また、取り出したメッセージが、保証メッセージ以外の場合には、保証メッセージの転送を担当していない状態の受信側転送部を選択する。また、開示の技術は、選択した受信側転送部へメッセージを転送する。
また、開示の技術は、複数の送信側転送部の各々から転送されたメッセージを受け付ける。また、開示の技術は、受け付けたメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージか否かを判定する。保証メッセージの場合には、複数の受信先の各々に対応する複数の受信キューから、保証メッセージの格納を担当していない状態の受信キューを選択する。または受け付けたメッセージと同一のメッセージ群に含まれる保証メッセージの格納を担当している状態の受信キューを選択する。また、開示の技術は、受け付けたメッセージが、保証メッセージ以外の場合には、保証メッセージの格納を担当していない状態の受信キューを選択する。また、開示の技術は、選択した受信キューへメッセージを格納する。
開示の技術は、一つの側面として、多数対多数の複雑な接続環境においても、一群のメッセージを転送する際の順序性及び同一受信先性を保証することができる、という効果を有する。
送信元1対受信先1の単純な接続環境の一例を示す概略図である。 多数対多数の複雑な接続環境の一例を示す概略図である。 多数対多数の複雑な接続環境の一例を示す概略図である。 SOAの概念を示す概略図である。 多数対多数の複雑な接続環境の一例を示す概略図である。 本実施形態に係る転送システム10の概略構成を示すブロック図である。 メッセージのデータ構成の一例を示す図である。 送信側転送部の概略構成を示すブロック図である。 送信管理テーブルの一例を示す図である。 受信側転送部の概略構成を示すブロック図である。 受信管理テーブルの一例を示す図である。 送信部として機能するコンピュータの概略構成を示すブロック図である。 受信部として機能するコンピュータの概略構成を示すブロック図である。 送信側転送処理の一例を示すフローチャートである。 受信側転送処理の一例を示すフローチャートである。 削除処理の一例を示すフローチャートである。 メッセージ転送の一例を説明するための概略図である。 メッセージ転送の一例を説明するための概略図である。 メッセージ転送の一例における送信管理テーブルの一例を示す図である。 メッセージ転送の一例における受信管理テーブルの一例を示す図である。 メッセージ転送の一例を説明するための概略図である。 メッセージ転送の一例における送信管理テーブルの一例を示す図である。 メッセージ転送の一例における受信管理テーブルの一例を示す図である。 メッセージ転送の一例を説明するための概略図である。 メッセージ転送の一例を説明するための概略図である。
まず、本実施形態の前提となる多数対多数の複雑な接続環境について説明する。比較例として、送信元1対受信先1の単純な接続環境の一例を説明する。図1に示すように、送信元1対受信先1の単純な接続環境では、送信側には、1つの送信元に対応して、1つの送信キュー及び1つの転送装置(送信側)が設けられている。また、送信側とネットワークを介して接続されている受信側には、1つの受信先に対応して、1つの受信キュー及び1つの転送装置(受信側)が設けられている。この構成の場合、順序性及び同一受信先性が保証されることが必要なメッセージ群に含まれるメッセージ(以下、「保証メッセージ」という。図1の例では、丸印の「1」、「2」、及び「3」)は、順序を保持したまま同一の受信先へ転送される。
しかし、処理性能を向上させ、かつリソースをなるべく無駄にしない構成とするために、多数対多数の複雑な接続環境が用いられるようになってきた。図2に、多数対多数の複雑な接続環境の一例を示す。図2の例では、送信側には、3つの送信元(A、B、C)に対応して、2つの送信キュー(A1、A2)及び2つの転送装置(A、B)(送信側)が設けられている。また、送信側とネットワークを介して接続されている受信側には、4つの受信先(A、B、C、D)に対応して、4つの受信キュー(B1、B2、B3、B4)及び3つの転送装置(A、B、C)(受信側)が設けられている。
この場合、送信元から送信キューへメッセージを格納する際には、効率的にリソースが活用できるように、送信キューが選択される。同様に、転送装置(送信側)から転送装置(受信側)へメッセージを転送する際、及び転送装置(受信側)から受信キューへメッセージを格納する際も、効率的にリソースを活用できるように、転送装置(受信側)、及び受信キューが選択される。その結果、保証メッセージ群であっても、各保証メッセージの順序が保持されずに受信先に転送されたり、異なる受信先にばらばらに転送されたりする場合がある。すなわち、順序性及び同一受信先性が保証されない場合がある。
例えば、図2の例では、送信元Cから送信されたメッセージ「C1」、「C2」、及び「C3」が保証メッセージ群であったとする。送信元Cから送信キューA2に格納されたメッセージ「C1」、「C2」、及び「C3」は、転送装置B(送信側)により順次取り出される。そして、転送装置Bがリソースを効率的に活用できるように転送装置(受信先)を選択して、各メッセージを転送する。その結果、メッセージ「C1」及び「C3」は転送装置B(受信側)、メッセージ「C2」は転送装置C(受信側)に転送されている。さらに、メッセージ「C3」は、転送装置B(受信側)から受信キューB2に格納され、メッセージ「C1」は、転送装置B(受信側)から受信キューB3に格納され、メッセージ「C2」は、転送装置C(受信側)から受信キューB4に格納されている。その結果、メッセージ「C1」は受信先Cに転送され、メッセージ「C2」は受信先Dに転送され、メッセージ「C3」は受信先Bに転送されてしまう。従って、保証メッセージ「C1」、「C2」、及び「C3」を含む保証メッセージ群について、同一受信先性が保証できていない。また、受信先B、C、及びDは、それぞれのタイミングで各受信先に対応する受信キューからメッセージを取り出すため、順序性も保証できていない。
また、図2の例で、送信元Aから送信されたメッセージ「A1」及び「A2」が保証メッセージ群であったとする。この保証メッセージ群が送信キューA1に格納される際、送信元Bから送信されたメッセージ「B4」が間に入ってしまい、その状態で受信先Aまで転送されている。保証メッセージ群に含まれる各保証メッセージは、同一受信先により、順番で処理されるべきものであるため、このように、保証メッセージの間に別のメッセージが入り込んでしまっている場合も、順序性が保証できていないといえる。
上記のような多数対多数の複雑な接続環境における問題点を解消するために、図3に示すように、保証メッセージ専用のキュー及び転送装置を作成することが考えられる。図3の例では、保証メッセージA専用のルート(送信元A→送信キューA1→転送装置A(送信側)→転送装置A(受信側)→受信キューB1→受信先A)が作成されている。
しかし、この場合、専用ルートのためにリソースを余計に確保する必要がある。また、新たな目的の保証メッセージの転送が必要になった場合には、新たな保証メッセージ専用のルートを作成するためのリソースが必要になり、拡張性に乏しく、リソースの無駄も多くなる。図3の例では、保証メッセージAとは目的が異なる保証メッセージD専用の新たなルート(送信元D→送信キューA4→転送装置D(送信側)→転送装置D(受信側)→受信キューB5→受信先F)が作成された例を示している。目的が異なる保証メッセージとは、例えば、伝票管理システムにおける売上伝票に関連するメッセージと、発注伝票に関連するメッセージなどがある。
また、SOA(Service Oriented Architecture)を利用して、上記のような多数対多数の複雑な接続環境における問題点を解消することも考えられる。図4に示すように、SOAの概念は、ESB(Enterprise Service Bus)上にEndPointがあり、EndPoint対して送信元及び受信先の各々がメッセージの格納及び取り出しを行うものである。
しかし、SOAには、そもそも転送という概念がない。また、SOA環境で順序性を保証する場合は、図3の場合と同様に、専用のEndPointを作成し、送信元と受信先との合意の上、その専用ルートを自分たちだけで使用するように設計することが必要となる。
そこで、本実施形態では、図5に示すように、保証メッセージ群(図5中網掛けの丸で示した「C1」、「C2」、及び「C3」)が、多数対多数の複雑な接続環境においても、順序性及び同一受信先性が保証されるように、受信先へ転送する。
以下、図面を参照して開示の技術に係る実施形態の一例を詳細に説明する。
図6に示すように、本実施形態に係る転送システム10は、送信側情報処理装置20及び受信側情報処理装置30を含んでいる。送信側情報処理装置20及び受信側情報処理装置30の各々は、例えば、物理サーバや仮想サーバである。
送信側情報処理装置20では、複数の送信側アプリケーション(アプリ)221、222、223による処理が実行される。送信側アプリ221、222、223の各々を区別なく説明する場合には、「送信側アプリ22n」と表記する。送信側アプリ22nの数は3つに限定されず、2つであってもよいし、4つ以上であってもよい。なお、送信側アプリ22nは、開示の技術の送信元の一例である。また、送信側情報処理装置20は、送信部21を含む。送信部21は、開示の技術の転送装置の一例である。送信部21は、送信キュー231、232、送信側転送部241、242、送信管理テーブル25、及び送信側削除部26を含む。送信キュー231、232の各々を区別なく説明する場合には、「送信キュー23n」と表記する。また、送信側転送部241、242の各々を区別なく説明する場合には、「送信側転送部24n」と表記する。送信キュー23n及び送信側転送部24nの数は各々2つに限定されず、3つ以上であってもよい。
受信側情報処理装置30では、複数の受信側アプリ321、322、323による処理が実行される。受信側アプリ321、322、323の各々を区別なく説明する場合には、「受信側アプリ32n」と表記する。受信側アプリ32nの数は3つに限定されず、2つであってもよいし、4つ以上であってもよい。なお、受信側アプリ32nは、開示の技術の受信先の一例である。また、受信側情報処理装置30は、受信部31を含む。受信部31は、開示の技術の転送装置の一例である。受信部31は、受信キュー331、332、333、受信側転送部341、342、343、受信管理テーブル35、及び受信側削除部36を含む。受信キュー331、332、333の各々を区別なく説明する場合には、「受信キュー33n」と表記する。また、受信側転送部341、342、343の各々を区別なく説明する場合には、「受信側転送部34n」と表記する。受信キュー33n及び受信側転送部34nの数は各々3つに限定されず、2つであってもよいし、4つ以上であってもよい。
送信側アプリ22nは、リソースを有効活用できるように、送信キュー231または送信キュー232を選択して、メッセージを格納する。例えば、格納されているデータ量が少ない方の送信キュー23nを選択して、メッセージを格納する。また、送信側アプリ22nは、保証メッセージ群に含まれる各保証メッセージについては、保証メッセージであることを示す保証メッセージIDを付与する。保証メッセージIDとしては、保証メッセージ群を識別するための保証メッセージ群毎に異なる値が付与される。また、送信側アプリ22nは、各保証メッセージが保証メッセージ群の最終の保証メッセージか否かを示す最終フラグを付与する。
図7に、送信アプリから送信されるメッセージ12の一例を示す。メッセージ12は、保証IDが記憶される領域121、最終フラグが記憶される領域122、及びメッセージの内容を示すデータが記憶される領域123を有する。保証メッセージではないメッセージの場合は、保証IDが記憶される領域121はブランクとなる。また、保証メッセージ群の最終の保証メッセージの場合は、最終フラグが記憶される領域122に、最終メッセージであることを示す最終フラグが設定され、最終メッセージではない場合には、最終フラグは設定されない。
送信側アプリ22nは、同一の保証IDを付与した保証メッセージは、順序を保持した状態で、送信キュー231または送信キュー232に格納する。
送信キュー23nは、送信側アプリ22nから送信されたメッセージが、送信された順に格納されるキューである。送信キュー23nは、送信側転送部24nの各々に対応して設けられる。
送信側転送部24nは、図8に示すように、取出部24nA、送信側選択部24nB、及び転送部24nCを含んでいる。
取出部24nAは、送信側転送部24nに対応する送信キュー23nに格納されたメッセージを順番に取り出す。
送信側選択部24nBは、送信管理テーブル25を参照して、取り出したメッセージを転送する受信側転送部34nを選択する。送信側選択部24nBは、受信部31に存在する受信側転送部34nの情報を保持している。ここでは、送信側選択部24nBは、受信側転送部34nとして、受信側転送部341、342、343が存在するという情報を保持している。
また、送信管理テーブル25には、図9に示すように、受信側転送部34nで転送を担当している保証メッセージの情報が格納される。図9の例では、送信管理テーブル25には、保証ID、受信側転送部名、更新時刻、及びエントリ削除時間の情報が記憶される。送信管理テーブル25は、例えば保証IDをキーとし、受信側転送部名、更新時刻、及びエントリ削除時間の各値を持つエントリが格納されたハッシュテーブルとすることができる。
「更新時刻」には、送信管理テーブル25にエントリが追加された時刻、または受信側転送部34nが選択された最終時刻が格納される。「エントリ削除時間」には、エントリが削除されることなく残ってしまうことを防止するために、所定時間経過後にエントリを自動で削除するための値が格納される。所定時間は、ユーザにより定義可能である。所定時間は、固定の時間としてもよいし、保証メッセージの種類や目的毎に異なる時間を定めてもよい。例えば、サイズの大きなメッセージが分割された保証メッセージ群の場合には、一群のメッセージに含まれる各メッセージが、間を置かず転送されてくるため、比較的短めの時間(例えば、5分)を、エントリ削除時間として定めておくことができる。また、例えば、伝票管理システムにおける、同一種類の伝票処理の所定期間分(例えば、1時間分)の処理に関連したメッセージ群を保証メッセージ群としたい場合には、その所定期間(例えば、1時間)をエントリ削除時間として定めておくことができる。
なお、送信管理テーブル25は、送信側転送部241、242の各々の送信側選択部241B、242Bが共通して参照するテーブルである。
送信側選択部24nBは、取出部24nAにより取り出されたメッセージが、保証IDが付与された保証メッセージか否かを判定する。保証メッセージの場合には、送信管理テーブル25を参照して、取出部24nAにより取り出されたメッセージと同一の保証メッセージ群に含まれる保証メッセージの転送を担当している受信側転送部34nを選択する。同一の保証メッセージ群の転送を担当している受信側転送部34nが存在しない場合には、保証メッセージの転送を担当していない受信側転送部34nを選択する。より具体的には、送信側選択部24nBは、取出部24nAにより取り出されたメッセージが保証メッセージの場合、送信管理テーブル25から、その保証メッセージに付与された保証IDをキーとするエントリを検索する。対応するエントリが存在しない場合には、受信部31に存在する受信側転送部34nのうち、送信管理テーブル25にエントリが存在しない受信側転送部34nを選択する。対応するエントリが存在する場合には、そのエントリの「受信側転送部名」が示す受信側転送部34nを選択する。
また、送信側選択部24nBは、取出部24nAにより取り出されたメッセージが、保証メッセージ以外の場合には、保証メッセージの転送を担当していない受信側転送部34nを選択する。より具体的には、送信側選択部24nBは、受信部31に存在する受信側転送部34nのうち、送信管理テーブル25にエントリが存在しない受信側転送部34nを選択する。
さらに送信側選択部24nBは、取出部24nAにより取り出されたメッセージが、保証メッセージで、かつ保証メッセージ群の最終の保証メッセージの場合には、送信管理テーブル25から該当のエントリを削除する。該当エントリの削除は、該当のメッセージの転送先である受信側転送部34nを選択した後に行う。
転送部24nCは、取出部24nAにより取り出されたメッセージを、送信側選択部24nBにより選択された受信側転送部34nへ転送する。
送信側削除部26は、送信管理テーブル25に格納されたエントリ毎に、現在時刻と更新時刻との差が、エントリ削除時間を超えている場合には、該当のエントリを削除する。
受信側転送部34nは、図10に示すように、受付部34nA、受信側選択部34nB、及び格納部34nCを含んでいる。
受付部34nAは、送信側転送部24nの各々から転送されたメッセージを受け付ける。
受信側選択部34nBは、受信管理テーブル35を参照して、受け付けたメッセージを格納する受信キュー33nを選択する。受信側選択部34nBは、受信部31に存在する受信キュー33nの情報を保持している。ここでは、受信側選択部34nBは、受信キュー33nとして、受信キュー331、332、333が存在するという情報を保持している。
また、受信管理テーブル35には、図11に示すように、受信キュー33nで格納を担当している保証メッセージの情報が格納される。図11の例では、受信管理テーブル35には、保証ID、受信キュー名、更新時刻、及びエントリ削除時間の情報が記憶される。受信管理テーブル35は、「受信側転送部名」の部分が「受信キュー名」になっている以外は、図9に示した送信管理テーブル25と同様であるため、詳細な説明を省略する。なお、受信管理テーブル35は、受信側転送部341、342、343の各々の受信側選択部341B、342B、343Bが共通して参照するテーブルである。
受信側選択部34nBが受信キュー33nを選択する具体的な処理は、送信側転送部24nの送信側選択部24nBが、受信側転送部34nを選択する処理と同様であるため、詳細な説明を省略する。
格納部34nCは、受付部34nAにより受け付けられたメッセージを、受信側選択部34nBにより選択された受信キュー33nへ格納する。
受信側削除部36は、受信管理テーブル35に格納されたエントリ毎に、現在時刻と更新時刻との差が、エントリ削除時間を超えている場合には、該当のエントリを削除する。
受信キュー33nは、受信側アプリ32nの各々に対応して設けられる。
受信側アプリ32nは、各々のタイミングで、各々に対応する受信キュー33nに格納されたメッセージを順番に取り出す。
送信部21は、例えば図12に示すコンピュータ40で実現することができる。コンピュータ40はCPU42、メモリ44、不揮発性の記憶部46、入出力インターフェース(I/F)47、及びネットワークI/F48を備えている。CPU42、メモリ44、記憶部46、入出力I/F47、及びネットワークI/F48は、バス49を介して互いに接続されている。
記憶部46はHDD(Hard Disk Drive)やフラッシュメモリ等によって実現できる。記憶媒体としての記憶部46には、コンピュータ40を送信部21として機能させるための送信プログラム50が記憶されている。また、記憶部46は、送信キュー領域53、及び送信管理テーブル記憶領域55を有する。CPU42は、送信プログラム50を記憶部46から読み出してメモリ44に展開し、送信プログラム50が有するプロセスを順次実行する。
送信プログラム50は、取出プロセス54nA、送信側選択プロセス54nB、転送プロセス54nCを含む送信側転送プロセス54n、並びに送信側削除プロセス56を有する。送信側転送プロセス54nは、作成する送信側転送部24nの数と同一の数含まれる。CPU42は、取出プロセス54nAを実行することで、図8に示す取出部24nAとして動作する。また、CPU42は、送信側選択プロセス54nBを実行することで、図8に示す送信側選択部24nBとして動作する。また、CPU42は、転送プロセス54nCを実行することで、図8に示す転送部24nCとして動作する。また、CPU42は、送信側削除プロセス56を実行することで、図6に示す送信側削除部26として動作する。
送信部21がコンピュータ40で実現される場合、送信キュー領域53は、図6に示す送信キュー23nとして用いられる。また、送信管理テーブル記憶領域55は、図6に示す送信管理テーブル25が記憶される記憶領域として用いられる。これにより、送信プログラム50を実行したコンピュータ40が、送信部21として機能することになる。
また、受信部31も、送信部21と同様、図13に示すコンピュータ40で実現することができる。コンピュータ40で受信部31を実現する場合、記憶部46には、コンピュータ40を受信部31として機能させるための受信プログラム60が記憶されている。また、記憶部46は、受信キュー領域63、及び受信管理テーブル記憶領域65を有する。CPU42は、受信プログラム60を記憶部46から読み出してメモリ44に展開し、受信プログラム60が有するプロセスを順次実行する。
受信プログラム60は、受付プロセス64nA、受信側選択プロセス64nB、格納プロセス64nCを含む受信側転送プロセス64n、並びに受信側削除プロセス66を有する。受信側転送プロセス64nは、作成する受信側転送部34nの数と同一の数含まれる。CPU42は、受付プロセス64nAを実行することで、図10に示す受付部34nAとして動作する。また、CPU42は、受信側選択プロセス64nBを実行することで、図10に示す受信側選択部34nBとして動作する。また、CPU42は、格納プロセス64nCを実行することで、図10に示す格納部34nCとして動作する。また、CPU42は、受信側削除プロセス66を実行することで、図6に示す受信側削除部36として動作する。
受信部31がコンピュータ40で実現される場合、受信キュー領域63は、図6に示す受信キュー33nとして用いられる。また、受信管理テーブル記憶領域65は、図6に示す受信管理テーブル35が記憶される記憶領域として用いられる。これにより、受信プログラム60を実行したコンピュータ40が、受信部31として機能することになる。
なお、送信部21及び受信部31は、例えば半導体集積回路、より詳しくはASIC(Application Specific Integrated Circuit)等で実現することも可能である。
次に、本実施形態に係る転送システム10の作用について説明する。送信側アプリ22nの各々から送信されたメッセージが、送信キュー23nの各々に格納される。そして、送信部21の送信側転送部24nの各々が、図14に示す送信側転送処理を実行する。ここで、送信側アプリ22nから送信されるメッセージには、保証メッセージ及び保証メッセージ以外のメッセージが含まれる。そして、送信側転送部24nの各々から受信側情報処理装置30へメッセージが転送されると、受信部31の受信側転送部34nの各々が、図15に示す受信側転送処理を実行する。また、送信側転送処理及び受信側転送処理と並行して、送信側削除部26及び受信側削除部36の各々が、図16に示す削除処理を実行する。以下、各処理について詳述する。
まず、送信側転送処理について説明する。図14に示す送信側転送処理のステップS11で、取出部24nAが、送信側転送部24nに対応する送信キュー23nに格納されたメッセージを、送信キュー23nの先頭から1つ取り出す。
次に、ステッS12で、送信側選択部24nBが、上記ステップS11で取り出されたメッセージが、保証IDが付与された保証メッセージか否かを判定する。この判定は、例えば図7に示すメッセージ12の領域121に格納された情報に基づいて行うことができる。保証IDが付与された保証メッセージの場合には、ステップS13へ移行し、保証メッセージではない場合には、ステップS20へ移行する。
ステップS13では、送信側選択部24nBが、上記ステップS11で取り出された保証メッセージに付与された保証IDをキーとするエントリを、送信管理テーブル25から検索する。保証IDに対応するエントリが存在する場合には、ステップS16へ移行し、対応するエントリが存在しない場合には、ステップS14へ移行する。
ステップS14では、送信側選択部24nBが、送信管理テーブル25を参照して、保証メッセージの転送を担当していない受信側転送部34nを選択する。具体的には、送信側選択部24nBは、受信部31に存在する受信側転送部34nのうち、送信管理テーブル25にエントリが存在しない受信側転送部34nを選択する。
次に、ステップS15で、送信側選択部24nBが、上記ステップS11で取り出された保証メッセージに付与された保証IDをキーとする新規エントリを追加して、ステップS21へ移行する。新規エントリには、上記ステップS14で選択した受信側転送部34nを示す受信側転送部名、新規エントリを追加した時刻(更新時刻)、及びエントリ削除時間の情報を格納する。エントリ削除時間は、予め定めた固定時間を格納してもよいし、メッセージの領域123に格納されたデータからメッセージの目的や種類を判断し、メッセージの目的や種類に応じて予め定めた時間を格納してもよい。
一方、ステップS16では、送信側選択部24nBが、上記ステップS11で取り出されたメッセージと同一の保証メッセージ群に含まれる保証メッセージの転送を担当している受信側転送部34nを選択する。具体的には、送信側選択部24nBは、上記ステップS13で検索されたエントリの「受信側転送部名」が示す受信側転送部34nを選択する。
次に、ステップS17で、送信側選択部24nBが、選択した受信側転送部34nに対応するエントリの「更新時刻」を、受信側転送部34nを選択した時刻に更新する。
次に、ステップS18で、送信側選択部24nBが、上記ステップS11で取り出されたメッセージが、保証メッセージ群の最終の保証メッセージか否かを判定する。この判定は、例えば図7に示すメッセージ12の領域122に格納された最終フラグに基づいて行うことができる。最終のメッセージの場合には、ステップS19へ移行して、送信側選択部24nBが、送信管理テーブル25から該当のエントリを削除して、ステップS21へ移行する。最終のメッセージではない場合には、ステップS19をスキップしてステップS21へ移行する。
一方、ステップS20へ移行した場合、すなわち上記ステップS11で取り出されたメッセージが保証メッセージ以外の場合では、送信側選択部24nBが、送信管理テーブル25を参照して、保証メッセージの転送を担当していない受信側転送部34nを選択する。具体的には、送信側選択部24nBは、受信部31に存在する受信側転送部34nのうち、送信管理テーブル25にエントリが存在しない受信側転送部34nを選択して、ステップS21へ移行する。
ステップS21では、転送部24nCが、上記ステップS11で取り出されたメッセージを、上記ステップS14、S16、またはS20で選択された受信側転送部34nへ転送して、送信側転送処理を終了する。
次に、受信側転送処理について説明する。なお、送信側転送処理と同様の処理については、詳細な説明を省略する。
図15に示す受信側転送処理のステップS31で、受付部34nAが、送信側転送部24nの各々から転送されたメッセージを受け付ける。
次に、ステッップS33で、受信側選択部34nBが、上記ステップS31で受け付けられたメッセージが、保証IDが付与された保証メッセージか否かを判定する。保証IDが付与された保証メッセージの場合には、ステップS33へ移行し、保証メッセージではない場合には、ステップS40へ移行する。
ステップS33では、受信側選択部34nBが、上記ステップS31で受け付けられた保証メッセージに付与された保証IDをキーとするエントリを、受信管理テーブル35から検索する。保証IDに対応するエントリが存在する場合には、ステップS36へ移行し、対応するエントリが存在しない場合には、ステップS34へ移行する。
ステップS34で、受信側選択部34nBが、受信管理テーブル35を参照して、保証メッセージの格納を担当していない受信キュー33nを選択する。次に、ステップS35で、受信側選択部34nBが、上記ステップS11で取り出された保証メッセージに付与された保証IDをキーとする新規エントリを追加して、ステップS41へ移行する。
一方、ステップS36では、受信側選択部34nBが、上記ステップS31で受け付けられたメッセージと同一の保証メッセージ群に含まれる保証メッセージの格納を担当している受信キュー33nを選択する。次に、ステップS37で、受信側選択部34nBが、選択した受信キュー33nに対応するエントリの「更新時刻」を、受信キュー33nを選択した時刻に更新する。
次に、ステップS38で、受信側選択部34nBが、上記ステップS31で受け付けられたメッセージが、保証メッセージ群の最終の保証メッセージか否かを判定する。最終のメッセージの場合には、ステップS39へ移行して、受信側選択部34nBが、受信管理テーブル35から該当のエントリを削除して、ステップS41へ移行する。最終のメッセージではない場合には、ステップS39をスキップしてステップS41へ移行する。
一方、ステップS40へ移行した場合、すなわち上記ステップS31で受け付けられたメッセージが保証メッセージ以外の場合では、受信側選択部34nBが、受信管理テーブル35を参照して、保証メッセージの格納を担当していない受信キュー33nを選択する。そして、ステップS41へ移行する。
ステップS41では、格納部34nCが、上記ステップS31で受け付けられたメッセージを、上記ステップS34、S36、またはS40で選択された受信キュー33nへ格納して、受信側転送処理を終了する。
次に、削除処理について説明する。なお、送信側削除部26が実行する削除処理と、受信側削除部36が実行する削除処理とは、処理対象が、送信管理テーブル25と受信管理テーブル35とで異なるだけであるので、ここでは、送信側削除部26が実行する削除処理について説明する。
図16に示す削除処理のステップS51で、送信側削除部26が、変数iに0を設定する。次に、ステップS52で、送信側削除部26が、変数iを1インクリメントする。
次に、ステップS53で、送信側削除部26が、送信管理テーブル25のi番目のエントリから、更新時刻及びエントリ削除時間を取得する。
次に、ステップS54で、送信側削除部26が、現在時刻と更新時刻との差が、エントリ削除時間を超えているか否かを判定する。エントリ削除時間を超えている場合には、ステップS55へ移行し、送信側削除部26が、送信管理テーブル25から、i番目のエントリを削除して、ステップS56へ移行する。一方、現在時刻と更新時刻との差が、エントリ削除時間を超えていない場合には、ステップS55をスキップして、ステップS56へ移行する。
ステップS56では、送信側削除部26が、送信管理テーブル25に登録されている全てのエントリについて、上記ステップS53〜S55の処理が終了したか否かを判定する。未処理のエントリが存在する場合には、ステップS52へ戻る。全てのエントリについて処理が終了した場合には、削除処理を終了する。
本実施形態に係る転送システム10におけるメッセージの転送処理について、より具体的な例を挙げて説明する。
まず、処理開始時には、図9及び図11に示すように、送信管理テーブル25及び受信管理テーブル35にエントリが格納されていない状態であるとする。また、図17に示すように、送信側アプリ221から、保証メッセージ「X1」、「X2」、及び「X3」を含む保証メッセージ群(保証ID=「X」)が、送信キュー231に格納される。また、送信側アプリ222から、保証メッセージ「Y1」を含む保証メッセージ群(保証ID=「Y」)が、送信キュー232に格納される。また、送信側アプリ223から、保証メッセージ以外のメッセージ「1」が、送信キュー232に格納される。
図18に示すように、送信側転送部241の取出部241Aが、送信キュー231からメッセージ「X1」を取り出す。現段階では、送信管理テーブル25にはエントリが格納されていない。すなわち、受信部31に存在する受信側転送部34nのうち、保証メッセージの転送を担当している受信側転送部34nは存在しない。そこで、送信側選択部241Bは、受信側転送部341、342、343から、リソースを効率的に利用可能な受信側転送部34nを選択する。ここでは、送信側選択部241Bは、受信側転送部342(受信側転送部名=受信側転送部2)を選択したものとする。そして、送信側選択部241Bは、図19に示すように、送信管理テーブル25に、保証ID「X」の新規エントリを追加する。
保証メッセージ「X1」が受信側転送部342へ転送されると、受付部342Aが保証メッセージ「X1」を受け付ける。現段階では、受信管理テーブル35にはエントリが格納されていない。すなわち、受信部31に存在する受信キュー33nのうち、保証メッセージの格納を担当している受信キュー33nは存在しない。そこで、受信側選択部342Bは、受信キュー331、332、333から、リソースを効率的に利用可能な受信キュー33nを選択する。ここでは、受信側選択部342Bは、受信キュー331(受信キュー名=受信キュー1)を選択したものとする。そして、受信側選択部342Bは、図20に示すように、受信管理テーブル35に、保証ID「X」の新規エントリを追加する。受信キュー331に格納されたメッセージは、受信側アプリ321により取り出される。
次に、図21に示すように、送信側転送部241の取出部241Aが、送信キュー231から保証メッセージ「X2」を取り出す。送信側選択部241Bは、保証メッセージ「X2」の保証ID「X」を送信管理テーブル25から検索する。ここでは、図19に示すように、保証ID「X」に対応するエントリが存在するため、保証ID「X」に対応する受信側転送部名「受信側転送部2」が示す受信側転送部342を選択する。送信側選択部241Bは、送信管理テーブル25の保証ID「X」に対応するエントリの「更新日時」を更新する。
また、送信側転送部242の取出部242Aが、送信キュー232から保証メッセージ「Y1」を取り出す。現段階では、送信管理テーブル25には保証ID「X」をキーとする受信側転送部名「受信側転送部2」のエントリが格納されている。そこで、送信側選択部242Bは、保証メッセージの転送を担当していない受信側転送部34nとして、受信側転送部341、343から、リソースを効率的に利用可能な受信側転送部34nを選択する。ここでは、送信側選択部242Bは、受信側転送部343(受信側転送部名=受信側転送部3)を選択したものとする。そして、送信側選択部242Bは、図22に示すように、送信管理テーブル25に、保証ID「Y」の新規エントリを追加する。
保証メッセージ「X2」が受信側転送部342へ転送されると、受付部342Aが保証メッセージ「X2」を受け付け、受信側選択部342Bが、保証メッセージ「X1」の格納先と同じ受信キュー331を選択する。受信側選択部342Bは、受信管理テーブル35の保証ID「X」に対応するエントリの「更新日時」を更新する。
また、保証メッセージ「Y1」が受信側転送部343へ転送されると、受付部343Aが保証メッセージ「Y1」を受け付ける。現段階では、受信管理テーブル35には保証ID「X」をキーとする受信キュー名「受信キュー1」のエントリが格納されている。そこで、受信側選択部343Bは、保証メッセージの格納を担当していない受信キュー33nとして、受信キュー332、333から、リソースを効率的に利用可能な受信キュー33nを選択する。ここでは、受信側選択部343Bは、受信キュー333(受信キュー名=受信キュー3)を選択したものとする。そして、受信側選択部343Bは、図23に示すように、受信管理テーブル35に、保証ID「Y」の新規エントリを追加する。受信キュー333に格納されたメッセージは、受信側アプリ323により取り出される。
次に、図24に示すように、送信側転送部241の取出部241Aが、送信キュー231から保証メッセージ「X3」を取り出し、送信側選択部241Bが、保証メッセージ「X2」と同様に、受信側転送部342を選択する。送信側選択部241Bは、送信管理テーブル25の保証ID「X」に対応するエントリの「更新日時」を更新する。
また、送信側転送部242の取出部242Aが、送信キュー232からメッセージ「1」を取り出す。現段階では、送信管理テーブル25には、保証ID「X」をキーとする受信側転送部名「受信側転送部2」のエントリ、及び保証ID「Y」をキーとする受信側転送部名「受信側転送部3」のエントリが格納されている。そこで、送信側選択部242Bは、保証メッセージの転送を担当していない受信側転送部341を選択する。メッセージ「1」は、保証メッセージではないため、送信管理テーブル25の更新は行われない。
保証メッセージ「X3」が受信側転送部342へ転送されると、受付部342Aが保証メッセージ「X2」を受け付け、受信側選択部342Bが、保証メッセージ「X2」と同様に、受信キュー331を選択する。受信側選択部342Bは、受信管理テーブル35の保証ID「X」に対応するエントリの「更新日時」を更新する。
また、メッセージ「1」が受信側転送部341へ転送されると、受付部341Aがメッセージ「1」を受け付ける。現段階では、受信管理テーブル35には保証ID「X」をキーとする受信キュー名「受信キュー1」のエントリ、及び保証ID「Y」をキーとする受信キュー名「受信キュー3」のエントリが格納されている。そこで、受信側選択部341Bは、メッセージの格納を担当していない受信キュー332を選択する。メッセージ「1」は、保証メッセージではないため、受信管理テーブル35の更新は行われない。受信キュー332に格納されたメッセージは、受信側アプリ322により取り出される。
これにより、図25に示すように、保証メッセージ「X1」、「X2」、及び「X3」を含む保証メッセージ群は、順序を保持したまま受信側アプリ321へ転送される。また、他の保証メッセージ群に含まれる保証メッセージ「Y1」や、保証メッセージ以外のメッセージ「1」が、間に入り込んでしまうこともない。
以上説明したように、本実施形態に係る転送システムによれば、送信側転送部が、保証メッセージを転送する際、受信部に存在する受信部側転送部から、保証メッセージの転送を担当していない受信側転送部を選択して、保証メッセージを転送する。また、受信側転送部が、保証メッセージを受信キューに格納する際、受信部に存在する受信キューから、保証メッセージの格納を担当していない受信キューを選択して、保証メッセージを格納する。これにより、多数対多数の複雑な接続環境においても、一群のメッセージを転送する際の順序性及び同一受信先性を保証することができる。
また、保証メッセージと保証メッセージ以外のメッセージとが混在している場合でも、効率よくリソースを利用し、かつ必要な場合は、順序性及び同一受信先性を保証したメッセージの転送を行うことができる。
また、アプリケーションのレイヤーやOSレイヤーの通信で、順序性及び同一受信先性を保証する仕組みのように、送信側アプリケーションと受信側アプリケーションとを1対1に規定した転送ルートの設計を行う必要がない。また、特定の受信先への送信を制御したり、受信側で同一送信元からのメッセージを再組立てしたりなどの処理も必要ない。このため、特別な処理を作成するためのコストが不要であり、アプリケーションが意識することなく、順序性及び同一受信先性を保証することができる。
アプリケーション実行基盤であるミドルウェアに期待される機能として、アプリケーション実行多重度の拡張及び縮退がある。本実施形態では、アプリケーション実行多重度を自由に変更しても、順序性及び同一受信先性を保証するために、追加されたアプリケーションに対して専用のリソースや通信回線を割り当てる必要がなく、リソースを有効活用することができる。
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
コンピュータに、
複数の送信元の各々から転送されたメッセージが格納された複数の送信キューのうち、対応する送信キューからメッセージを取り出し、
取り出したメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージの場合には、複数の受信先のいずれかへメッセージを転送する複数の受信側転送部から、保証メッセージの転送を担当していない受信側転送部、または取り出したメッセージと同一のメッセージ群に含まれる保証メッセージの転送を担当している受信側転送部を選択し、取り出したメッセージが、保証メッセージ以外の場合には、保証メッセージの転送を担当していない受信側転送部を選択し
選択した受信側転送部へメッセージを転送する
ことを含む処理を実行させるための転送プログラム。
(付記2)
前記コンピュータに、
前記メッセージを取り出すこと、前記受信側転送部を選択すること、及び前記メッセージを転送することを含む処理を複数実行させ、
前記受信側転送部を選択する際に、前記保証メッセージの転送先として選択した受信側転送部の情報を、受信側転送部を選択する複数の処理で共通して参照される送信管理テーブルに登録する
ことを含む処理を実行させるための付記1記載の転送プログラム。
(付記3)
前記コンピュータに、メッセージ群に含まれる全ての保証メッセージの転送が終了した場合に、前記メッセージ群に含まれる保証メッセージの転送を担当していた受信側転送部の情報を、前記送信管理テーブルから削除することを含む処理を実行させるための付記2記載の転送プログラム。
(付記4)
前記コンピュータに、
前記受信側転送部を選択する際に、前記送信管理テーブルに、前記受信側転送部を選択する毎に更新する更新時期の情報を登録し、
前記送信管理テーブルに登録された更新時期の情報に基づいて、前記受信側転送部を選択する処理で、所定時間以上選択されていない受信側転送部の情報を、前記送信管理テーブルから削除する
ことを含む処理を実行させるための付記2または付記3記載の転送プログラム。
(付記5)
複数の保証メッセージを含むメッセージ群は、前記送信元により、順序を保持したまま同一の送信キューに格納される付記1〜付記4のいずれか1つに記載の転送プログラム。
(付記6)
コンピュータに、
複数の送信側転送部の各々から転送されたメッセージを受け付け、
受け付けたメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージの場合には、複数の受信先の各々に対応する複数の受信キューから、保証メッセージの格納を担当していない受信キュー、または受け付けたメッセージと同一のメッセージ群に含まれる保証メッセージの格納を担当している受信キューを選択し、受け付けたメッセージが、保証メッセージ以外の場合には、保証メッセージの格納を担当していない受信キューを選択し、
選択した受信キューへメッセージを格納する
ことを含む処理を実行させるための転送プログラム。
(付記7)
前記コンピュータに、
前記メッセージを受け付けること、前記受信キューを選択すること、及び前記メッセージを格納することを含む処理を複数実行させ、
前記受信キューを選択する際に、前記保証メッセージの格納先として選択した受信キューの情報を、受信キューを選択する複数の処理で共通して参照する受信管理テーブルに登録する
ことを含む処理を実行させるための付記6記載の転送プログラム。
(付記8)
前記コンピュータに、メッセージ群に含まれる全ての保証メッセージの格納が終了した場合に、前記メッセージ群に含まれる保証メッセージの格納を担当していた受信キューの情報を、前記受信管理テーブルから削除することを含む処理を実行させるための付記7記載の転送プログラム。
(付記9)
前記コンピュータに、
前記受信キューを選択する際に、前記受信管理テーブルに、前記受信キューを選択する毎に更新する更新時期の情報を登録し、
前記受信管理テーブルに登録された更新時期の情報に基づいて、前記受信キューを選択する処理で、所定時間以上選択されていない受信キューの情報を、前記受信管理テーブルから削除する
ことを含む処理を実行させるための付記7または付記8記載の転送プログラム。
(付記10)
複数の送信元の各々から転送されたメッセージが格納された複数の送信キューのうち、対応する送信キューからメッセージを取り出す取出部と、
前記取出部により取り出されたメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージの場合には、複数の受信先のいずれかへメッセージを転送する複数の受信側転送部から、保証メッセージの転送を担当していない受信側転送部、または前記取出部により取り出されたメッセージと同一のメッセージ群に含まれる保証メッセージの転送を担当している受信側転送部を選択し、前記取出部により取り出されたメッセージが、保証メッセージ以外の場合には、保証メッセージの転送を担当していない受信側転送部を選択する送信側選択部と、
前記送信側選択部により選択された受信側転送部へメッセージを転送する転送部と、
を含む転送装置。
(付記11)
前記取出部、前記送信側選択部、及び前記転送部を含む複数の送信側転送部を含み、
前記複数の送信側転送部の各々の送信側選択部は、前記保証メッセージの転送先として選択した受信側転送部の情報を、前記複数の送信側転送部の各々の送信側選択部が共通して参照する送信管理テーブルに登録する
付記10記載の転送装置。
(付記12)
前記複数の送信側転送部の各々の送信側選択部は、メッセージ群に含まれる全ての保証メッセージの転送が終了した場合に、前記メッセージ群に含まれる保証メッセージの転送を担当していた受信側転送部の情報を、前記送信管理テーブルから削除する付記11記載の転送装置。
(付記13)
前記複数の送信側転送部の各々の送信側選択部は、前記送信管理テーブルに、前記受信側転送部を選択する毎に更新する更新時期の情報を登録し、
前記送信管理テーブルに登録された更新時期の情報に基づいて、前記複数の送信側転送部の各々の送信側選択部により、所定時間以上選択されていない受信側転送部の情報を、前記送信管理テーブルから削除する送信側削除部
を含む付記12または付記13記載の転送装置。
(付記14)
複数の保証メッセージを含むメッセージ群は、前記送信元により、順序を保持したまま同一の送信キューに格納される付記10〜付記13のいずれか1つに記載の転送装置。
(付記15)
複数の送信側転送部の各々から転送されたメッセージを受け付ける受付部と、
前記受付部により受け付けられたメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージの場合には、複数の受信先の各々に対応する複数の受信キューから、保証メッセージの格納を担当していない受信キュー、または前記受付部により受け付けられたメッセージと同一のメッセージ群に含まれる保証メッセージの格納を担当している受信キューを選択し、前記受付部により受け付けられたメッセージが、保証メッセージ以外の場合には、保証メッセージの格納を担当していない受信キューを選択する受信側選択部と、
前記受信側選択部により選択された受信キューへメッセージを格納する格納部と、
を含む転送装置。
(付記16)
前記受付部、前記受信側選択部、及び前記格納部を含む複数の受信側転送部を含み、
前記複数の受信側転送部の各々の受信側選択部は、前記保証メッセージの格納先として選択した受信キューの情報を、前記複数の受信側転送部の各々の受信側選択部が共通して参照する受信管理テーブルに登録する
付記15記載の転送装置。
(付記17)
前記複数の受信側転送部の各々の受信側選択部は、メッセージ群に含まれる全ての保証メッセージの格納が終了した場合に、前記メッセージ群に含まれる保証メッセージの格納を担当していた受信キューの情報を、前記受信管理テーブルから削除する付記16記載の転送装置。
(付記18)
前記複数の受信側転送部の各々の受信側選択部は、前記受信管理テーブルに、前記受信キューを選択する毎に更新する更新時期の情報を登録し、
前記受信管理テーブルに登録された更新時期の情報に基づいて、前記複数の受信側転送部の各々の受信側選択部により、所定時間以上選択されていない受信キューの情報を、前記受信管理テーブルから削除する受信側削除部
を含む付記16または付記17記載の転送装置。
(付記19)
コンピュータに、
複数の送信元の各々から転送されたメッセージが格納された複数の送信キューのうち、対応する送信キューからメッセージを取り出し、
取り出したメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージの場合には、複数の受信先のいずれかへメッセージを転送する複数の受信側転送部から、保証メッセージの転送を担当していない受信側転送部、または取り出したメッセージと同一のメッセージ群に含まれる保証メッセージの転送を担当している受信側転送部を選択し、取り出したメッセージが、保証メッセージ以外の場合には、保証メッセージの転送を担当していない受信側転送部を選択し
選択した受信側転送部へメッセージを転送する
ことを含む処理を実行させる転送方法。
(付記20)
前記コンピュータに、
前記メッセージを取り出すこと、前記受信側転送部を選択すること、及び前記メッセージを転送することを含む処理を複数実行させ、
前記受信側転送部を選択する際に、前記保証メッセージの転送先として選択した受信側転送部の情報を、受信側転送部を選択する複数の処理で共通して参照される送信管理テーブルに登録する
ことを含む処理を実行させる付記19記載の転送方法。
(付記21)
前記コンピュータに、メッセージ群に含まれる全ての保証メッセージの転送が終了した場合に、前記メッセージ群に含まれる保証メッセージの転送を担当していた受信側転送部の情報を、前記送信管理テーブルから削除することを含む処理を実行させる付記20記載の転送方法。
(付記22)
前記コンピュータに、
前記受信側転送部を選択する際に、前記送信管理テーブルに、前記受信側転送部を選択する毎に更新する更新時期の情報を登録し、
前記送信管理テーブルに登録された更新時期の情報に基づいて、前記受信側転送部を選択する処理で、所定時間以上選択されていない受信側転送部の情報を、前記送信管理テーブルから削除する
ことを含む処理を実行させる付記2または付記21記載の転送方法。
(付記23)
複数の保証メッセージを含むメッセージ群は、前記送信元により、順序を保持したまま同一の送信キューに格納される付記19〜付記22のいずれか1つに記載の転送方法。
(付記24)
コンピュータに、
複数の送信側転送部の各々から転送されたメッセージを受け付け、
受け付けたメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージの場合には、複数の受信先の各々に対応する複数の受信キューから、保証メッセージの格納を担当していない受信キュー、または受け付けたメッセージと同一のメッセージ群に含まれる保証メッセージの格納を担当している受信キューを選択し、受け付けたメッセージが、保証メッセージ以外の場合には、保証メッセージの格納を担当していない受信キューを選択し、
選択した受信キューへメッセージを格納する
ことを含む処理を実行させる転送方法。
(付記25)
前記コンピュータに、
前記メッセージを受け付けること、前記受信キューを選択すること、及び前記メッセージを格納することを含む処理を複数実行させ、
前記受信キューを選択する際に、前記保証メッセージの格納先として選択した受信キューの情報を、受信キューを選択する複数の処理で共通して参照する受信管理テーブルに登録する
ことを含む処理を実行させる付記24記載の転送方法。
(付記26)
前記コンピュータに、メッセージ群に含まれる全ての保証メッセージの格納が終了した場合に、前記メッセージ群に含まれる保証メッセージの格納を担当していた受信キューの情報を、前記受信管理テーブルから削除することを含む処理を実行させる付記25記載の転送方法。
(付記27)
前記コンピュータに、
前記受信キューを選択する際に、前記受信管理テーブルに、前記受信キューを選択する毎に更新する更新時期の情報を登録し、
前記受信管理テーブルに登録された更新時期の情報に基づいて、前記受信キューを選択する処理で、所定時間以上選択されていない受信キューの情報を、前記受信管理テーブルから削除する
ことを含む処理を実行させる付記25または付記26記載の転送方法。
(付記28)
複数の送信元の各々から転送されたメッセージが格納された複数の送信キューのうち、対応する送信キューからメッセージを取り出す取出部と、
前記取出部により取り出されたメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージの場合には、複数の受信先のいずれかへメッセージを転送する複数の受信側転送部から、保証メッセージの転送を担当していない受信側転送部、または前記取出部により取り出されたメッセージと同一のメッセージ群に含まれる保証メッセージの転送を担当している受信側転送部を選択し、前記取出部により取り出されたメッセージが、保証メッセージ以外の場合には、保証メッセージの転送を担当していない受信側転送部を選択する送信側選択部と、
前記送信側選択部により選択された受信側転送部へメッセージを転送する転送部と、を含む送信側転送装置と、
前記送信側転送装置から転送されたメッセージを受け付ける受付部と、
前記受付部により受け付けられたメッセージが、保証メッセージの場合には、複数の受信先の各々に対応する複数の受信キューから、保証メッセージの格納を担当していない受信キュー、または前記受付部により受け付けられたメッセージと同一のメッセージ群に含まれる保証メッセージの格納を担当している受信キューを選択し、前記受付部により受け付けられたメッセージが、保証メッセージ以外の場合には、保証メッセージの格納を担当していない受信キューを選択する受信側選択部と、
前記受信側選択部により選択された受信キューへメッセージを格納する格納部と、を含む受信側転送装置と、
を含む転送システム。
(付記29)
前記送信側転送装置は、前記取出部、前記送信側選択部、及び前記転送部を含む複数の送信側転送部を含み、
前記複数の送信側転送部の各々の送信側選択部は、前記保証メッセージの転送先として選択した受信側転送部の情報を、前記複数の送信側転送部の各々の送信側選択部が共通して参照する送信管理テーブルに登録し、
前記受信側転送装置は、前記受付部、前記受信側選択部、及び前記格納部を含む複数の受信側転送部を含み、
前記複数の受信側転送部の各々の受信側選択部は、前記保証メッセージの格納先として選択した受信キューの情報を、前記複数の受信側転送部の各々の受信側選択部が共通して参照する受信管理テーブルに登録する
付記28記載の転送システム。
(付記30)
前記複数の送信側転送部の各々の送信側選択部は、メッセージ群に含まれる全ての保証メッセージの転送が終了した場合に、前記メッセージ群に含まれる保証メッセージの転送を担当していた受信側転送部の情報を、前記送信管理テーブルから削除し、
前記複数の受信側転送部の各々の受信側選択部は、メッセージ群に含まれる全ての保証メッセージの格納が終了した場合に、前記メッセージ群に含まれる保証メッセージの格納を担当していた受信キューの情報を、前記受信管理テーブルから削除する
付記29記載の転送システム。
(付記31)
前記複数の送信側転送部の各々の送信側選択部は、前記送信管理テーブルに、前記受信側転送部を選択する毎に更新する更新時期の情報を登録し、
前記送信側転送装置は、前記送信管理テーブルに登録された更新時期の情報に基づいて、前記複数の送信側転送部の各々の送信側選択部により、所定時間以上選択されていない受信側転送部の情報を、前記送信管理テーブルから削除する送信側削除部を含み、
前記複数の受信側転送部の各々の受信側選択部は、前記受信管理テーブルに、前記受信キューを選択する毎に更新する更新時期の情報を登録し、
前記受信側転送装置は、前記受信管理テーブルに登録された更新時期の情報に基づいて、前記複数の受信側転送部の各々の受信側選択部により、所定時間以上選択されていない受信キューの情報を、前記受信管理テーブルから削除する受信側削除部を含む
付記29または付記30記載の転送システム。
(付記32)
複数の保証メッセージを含むメッセージ群は、前記送信元により、順序を保持したまま同一の送信キューに格納される付記28〜付記31のいずれか1つに記載の転送システム。
10 転送システム
20 送信側情報処理装置
21 送信部
22n 送信側アプリ
23n 送信キュー
24n 送信側転送部
24nA 取出部
24nB 送信側選択部
24nC 転送部
25 送信管理テーブル
26 送信側削除部
30 受信側情報処理装置
31 受信部
32n 受信側アプリ
33n 受信キュー
34n 受信側転送部
34nA 受付部
34nB 受信側選択部
34nC 格納部
35 受信管理テーブル
36 受信側削除部

Claims (12)

  1. コンピュータに、
    複数の送信元の各々から転送されたメッセージが格納された複数の送信キューのうち、対応する送信キューからメッセージを取り出し、
    取り出したメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージの場合には、複数の受信先のいずれかへメッセージを転送する複数の受信側転送部から、保証メッセージの転送を担当していない状態の受信側転送部、または取り出したメッセージと同一のメッセージ群に含まれる保証メッセージの転送を担当している状態の受信側転送部を選択し、取り出したメッセージが、保証メッセージ以外の場合には、保証メッセージの転送を担当していない状態の受信側転送部を選択し
    選択した受信側転送部へメッセージを転送する
    ことを含む処理を実行させるための転送プログラム。
  2. 前記コンピュータに、
    前記メッセージを取り出すこと、前記受信側転送部を選択すること、及び前記メッセージを転送することを含む処理を複数実行させ、
    前記受信側転送部を選択する際に、前記保証メッセージの転送先として選択した受信側転送部の情報を、受信側転送部を選択する複数の処理で共通して参照される送信管理テーブルに登録する
    ことを含む処理を実行させるための請求項1記載の転送プログラム。
  3. 前記コンピュータに、メッセージ群に含まれる全ての保証メッセージの転送が終了した場合に、前記メッセージ群に含まれる保証メッセージの転送を担当していた受信側転送部の情報を、前記送信管理テーブルから削除することを含む処理を実行させるための請求項2記載の転送プログラム。
  4. 前記コンピュータに、
    前記受信側転送部を選択する際に、前記送信管理テーブルに、前記受信側転送部を選択する毎に更新する更新時期の情報を登録し、
    前記送信管理テーブルに登録された更新時期の情報に基づいて、前記受信側転送部を選択する処理で、所定時間以上選択されていない受信側転送部の情報を、前記送信管理テーブルから削除する
    ことを含む処理を実行させるための請求項2または請求項3記載の転送プログラム。
  5. コンピュータに、
    複数の送信側転送部の各々から転送されたメッセージを受け付け、
    受け付けたメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージの場合には、複数の受信先の各々に対応する複数の受信キューから、保証メッセージの格納を担当していない状態の受信キュー、または受け付けたメッセージと同一のメッセージ群に含まれる保証メッセージの格納を担当している状態の受信キューを選択し、受け付けたメッセージが、保証メッセージ以外の場合には、保証メッセージの格納を担当していない状態の受信キューを選択し、
    選択した受信キューへメッセージを格納する
    ことを含む処理を実行させるための転送プログラム。
  6. 前記コンピュータに、
    前記メッセージを受け付けること、前記受信キューを選択すること、及び前記メッセージを格納することを含む処理を複数実行させ、
    前記受信キューを選択する際に、前記保証メッセージの格納先として選択した受信キューの情報を、受信キューを選択する複数の処理で共通して参照する受信管理テーブルに登録する
    ことを含む処理を実行させるための請求項5記載の転送プログラム。
  7. 前記コンピュータに、メッセージ群に含まれる全ての保証メッセージの格納が終了した場合に、前記メッセージ群に含まれる保証メッセージの格納を担当していた受信キューの情報を、前記受信管理テーブルから削除することを含む処理を実行させるための請求項6記載の転送プログラム。
  8. 前記コンピュータに、
    前記受信キューを選択する際に、前記受信管理テーブルに、前記受信キューを選択する毎に更新する更新時期の情報を登録し、
    前記受信管理テーブルに登録された更新時期の情報に基づいて、前記受信キューを選択する処理で、所定時間以上選択されていない受信キューの情報を、前記受信管理テーブルから削除する
    ことを含む処理を実行させるための請求項6または請求項7記載の転送プログラム。
  9. 複数の送信元の各々から転送されたメッセージが格納された複数の送信キューのうち、対応する送信キューからメッセージを取り出す取出部と、
    前記取出部により取り出されたメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージの場合には、複数の受信先のいずれかへメッセージを転送する複数の受信側転送部から、保証メッセージの転送を担当していない状態の受信側転送部、または前記取出部により取り出されたメッセージと同一のメッセージ群に含まれる保証メッセージの転送を担当している状態の受信側転送部を選択し、前記取出部により取り出されたメッセージが、保証メッセージ以外の場合には、保証メッセージの転送を担当していない状態の受信側転送部を選択する送信側選択部と、
    前記送信側選択部により選択された受信側転送部へメッセージを転送する転送部と、
    を含む転送装置。
  10. 複数の送信側転送部の各々から転送されたメッセージを受け付ける受付部と、
    前記受付部により受け付けられたメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージの場合には、複数の受信先の各々に対応する複数の受信キューから、保証メッセージの格納を担当していない状態の受信キュー、または前記受付部により受け付けられたメッセージと同一のメッセージ群に含まれる保証メッセージの格納を担当している状態の受信キューを選択し、前記受付部により受け付けられたメッセージが、保証メッセージ以外の場合には、保証メッセージの格納を担当していない状態の受信キューを選択する受信側選択部と、
    前記受信側選択部により選択された受信キューへメッセージを格納する格納部と、
    を含む転送装置。
  11. コンピュータに、
    複数の送信元の各々から転送されたメッセージが格納された複数の送信キューのうち、対応する送信キューからメッセージを取り出し、
    取り出したメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージの場合には、複数の受信先のいずれかへメッセージを転送する複数の受信側転送部から、保証メッセージの転送を担当していない状態の受信側転送部、または取り出したメッセージと同一のメッセージ群に含まれる保証メッセージの転送を担当している状態の受信側転送部を選択し、取り出したメッセージが、保証メッセージ以外の場合には、保証メッセージの転送を担当していない状態の受信側転送部を選択し
    選択した受信側転送部へメッセージを転送する
    ことを含む処理を実行させる転送方法。
  12. コンピュータに、
    複数の送信側転送部の各々から転送されたメッセージを受け付け、
    受け付けたメッセージが、順序を保持したまま同一の受信先へ転送されることが必要なメッセージ群に含まれる保証メッセージの場合には、複数の受信先の各々に対応する複数の受信キューから、保証メッセージの格納を担当していない状態の受信キュー、または受け付けたメッセージと同一のメッセージ群に含まれる保証メッセージの格納を担当している状態の受信キューを選択し、受け付けたメッセージが、保証メッセージ以外の場合には、保証メッセージの格納を担当していない状態の受信キューを選択し、
    選択した受信キューへメッセージを格納する
    ことを含む処理を実行させる転送方法。
JP2013231356A 2013-11-07 2013-11-07 転送プログラム、装置、及び方法 Active JP6277680B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013231356A JP6277680B2 (ja) 2013-11-07 2013-11-07 転送プログラム、装置、及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013231356A JP6277680B2 (ja) 2013-11-07 2013-11-07 転送プログラム、装置、及び方法

Publications (2)

Publication Number Publication Date
JP2015091107A JP2015091107A (ja) 2015-05-11
JP6277680B2 true JP6277680B2 (ja) 2018-02-14

Family

ID=53194437

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013231356A Active JP6277680B2 (ja) 2013-11-07 2013-11-07 転送プログラム、装置、及び方法

Country Status (1)

Country Link
JP (1) JP6277680B2 (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3963690B2 (ja) * 2001-03-27 2007-08-22 富士通株式会社 パケット中継処理装置
JP2011091711A (ja) * 2009-10-26 2011-05-06 Nec Corp ノード及び送信フレーム振り分け方法並びにプログラム
JP5789947B2 (ja) * 2010-10-04 2015-10-07 沖電気工業株式会社 データ転送装置

Also Published As

Publication number Publication date
JP2015091107A (ja) 2015-05-11

Similar Documents

Publication Publication Date Title
US8965954B2 (en) Always ready client/server data synchronization
JP4696089B2 (ja) 分散ストレージシステム
JP5039016B2 (ja) ネットワークシステム、管理サーバ及び設定スケジューリング方法
US20170124021A1 (en) Methods for enabling direct memory access (dma) capable devices for remote dma (rdma) usage and devices thereof
WO2015090245A1 (zh) 文件传输方法、装置及分布式集群文件***
EP2388965A1 (en) High performance hardware linked list processors cascaded to form a pipeline
JP5741254B2 (ja) 送信制御方法、装置及びプログラム
JP6405255B2 (ja) 通信システム、キュー管理サーバ、及び、通信方法
US20180300140A1 (en) Information processing apparatus, information processing method, and non-transitory computer-readable storage medium
CA2741191A1 (en) Always ready client/server data synchronization
KR101822401B1 (ko) 공동 편집 문서를 공유하는 방법 및 장치
JP2010226275A (ja) 通信装置および通信方法
US9137331B2 (en) Adaptive replication
US9578120B1 (en) Messaging with key-value persistence
US10826819B2 (en) System and method for data transmission in distributed computing environments
JP2008124977A (ja) メッセージ配送方法、装置及びプログラム
JP6277680B2 (ja) 転送プログラム、装置、及び方法
JP6500668B2 (ja) ジョブ処理システム、ジョブ処理装置及びジョブ処理プログラム
JP2016045510A (ja) 情報処理システム、情報処理装置、情報処理システムの制御方法及び情報処理装置の制御プログラム
JP2015094976A (ja) 情報処理装置、情報処理方法、及び、プログラム
US20210011720A1 (en) Vector send operation for message-based communication
US20130227066A1 (en) Data transfer apparatus and data transfer method
JP2016018222A (ja) キューサーバ
JP5937539B2 (ja) 流量制御装置、通信制御システム、流量制御方法及びプログラム
JP6676098B2 (ja) 情報処理システム、情報処理装置、制御方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160705

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170328

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170509

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170710

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171219

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180101

R150 Certificate of patent or registration of utility model

Ref document number: 6277680

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150