JP6198825B2 - 分散並列環境における非同期メッセージのシーケンシングの方法、システム、およびコンピュータプログラム製品 - Google Patents

分散並列環境における非同期メッセージのシーケンシングの方法、システム、およびコンピュータプログラム製品 Download PDF

Info

Publication number
JP6198825B2
JP6198825B2 JP2015524671A JP2015524671A JP6198825B2 JP 6198825 B2 JP6198825 B2 JP 6198825B2 JP 2015524671 A JP2015524671 A JP 2015524671A JP 2015524671 A JP2015524671 A JP 2015524671A JP 6198825 B2 JP6198825 B2 JP 6198825B2
Authority
JP
Japan
Prior art keywords
message
sequence
rank
messages
outbound
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
JP2015524671A
Other languages
English (en)
Other versions
JP2015527658A5 (ja
JP2015527658A (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.)
Amadeus SAS
Original Assignee
Amadeus SAS
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
Priority claimed from US13/565,284 external-priority patent/US8903767B2/en
Priority claimed from EP12368017.5A external-priority patent/EP2693337B1/en
Application filed by Amadeus SAS filed Critical Amadeus SAS
Publication of JP2015527658A publication Critical patent/JP2015527658A/ja
Publication of JP2015527658A5 publication Critical patent/JP2015527658A5/ja
Application granted granted Critical
Publication of JP6198825B2 publication Critical patent/JP6198825B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Between Computers (AREA)

Description

本発明は、一般に通信システムのデータおよび情報処理に関し、具体的には、分散並列処理環境において、シーケンスの非同期メッセージを処理する方法、装置、およびシステムに関する。
サービスコールまたはイベント処理において、分散ソフトウェアアーキテクチャを使用する場合、メッセージの伝送は同期、あるいは非同期で行われる。メッセージは個々のフルレシピエント(Full recipient)に配信およびマルチキャストされ、各マルチキャストメッセージは個別に処理される。
図1は、一方は呼出システム110であり、もう一方は遠隔システム120である2つのシステム間のメッセージ、またはサービスコールの同期伝送を示し、呼出システム110がメッセージ処理の順序を制御する。この場合、呼出システム110は遠隔処理の結果を待ち、その結果、呼出側は、メッセージをサーバシステム、または遠隔システムで実際に処理する順序に関するマスターとなる。
呼出システム110からの第1メッセージAの伝送111は、遠隔システム120で処理され、次に、処理済みメッセージA121として、呼出システム110に返される。一度、処理済みメッセージAを受信すると、呼出システム110は第2メッセージBの伝送113を、遠隔システム120に向けて行うことができる。第2メッセージBは、次に、遠隔システム120によって処理され、処理済みメッセージB123は呼出システム110に返される。
このフローチャートで示した例は、呼出システム110と遠隔システム120間の同期の呼出し、またはメッセージの処理の順番を示し、サーバシステムまたは遠隔システム120の第1メッセージAの処理112が、第2メッセージBの処理114の前に行われていることがわかる。
図2は、呼出システム210とサーバシステムまたは遠隔システム220の間のメッセージまたはサービスコールの非同期伝送について示し、この呼出システム210は、サービスコールまたはメッセージをサーバシステムまたは遠隔システム220に送信し、これらのシステム220は、それ自体のスケジューリングに従って、メッセージの処理を行う。クライアントシステム、または呼出システム210は、メッセージ処理のタイミングの制御を緩める。
呼出システム210からの第1メッセージAの伝送211は、遠隔システム220により処理される。その間に、呼出システム210は、第2メッセージBの遠隔システム220への伝送213を開始している。第2メッセージBは、次に、遠隔システム220によって処理されるが、メッセージAが処理されるまで、処理済みメッセージBを呼出システム210に返す判断はできない。
このフローチャートで示した例は、非同期の呼出し、または呼出システム210と遠隔システム220間のメッセージの処理の順番を示し、サーバシステムまたは遠隔システム220の第1メッセージAの処理212が、第2メッセージBの処理214とほぼ同時に行われることを示す。第2メッセージBを第1メッセージAより先に処理することも可能であるが、メッセージAおよびBを含むシーケンスの適合性に重大な影響を与える可能性がある。
図3は、分散システムにおけるサービスコールまたはメッセージの並列処理を例証するフローチャートである。分散システムにおいて、障害許容力とスケーラビリティの要件を満たすために、サービスコールまたはメッセージは、インスタンス化による並列処理および/またはマルチスレッディングでの処理が行われる。この図では、処理システムの310−1、310−2、…、および310−nに該当するインスタンス1、2、3、…、およびnが、メッセージキュー340の4つのメッセージ1、2、3および4をインバウンドシーケンスによって処理する。
並列処理は、連続するサービスコールやメッセージを処理し完了させる順序を保証するものではない。しかし、サービスコールやメッセージ処理は、関連するイベントやメッセージ間のシーケンスの遂行を強く求めることがある。
図3に示す例では、メッセージ1はインスタンス2によって処理され、メッセージ2はインスタンス3によって処理され、メッセージ3はインスタンス1によって処理され、メッセージ4は、メッセージ2のようにインスタンス3によって処理される。メッセージの処理は調整されないので、メッセージ2が最初に処理され、次に、メッセージ1、メッセージ4、最後にメッセージ3が処理される。これは一貫性のない処理順序となる。
この図では、シーケンスは、サービスコールやメッセージの分散システムによる伝送および/または処理に関する順序を参照する。この順序は通常、業務処理、または業界標準により進められる。この順序に従わないことにより、処理が十分に行われない結果となり、最悪の場合は、格納されている機能データの不可逆的な破損や呼び出されたデータベースの破損に至る。
図4は、分散処理システムにおける非同期コールまたはメッセージの並列処理であり、メッセージ処理が順序通りに実行されないリスク、およびデータ破損のリスクが生じることを例証するフローチャートである。
同期環境では、遠隔システムへのメッセージ伝送を順次実行し、関連するメッセージ間のシーケンスフローを事実上制御するエミッタシステムまたは呼出システムによってシーケンシングが確保される。
遠隔システム420でのメッセージ処理の終了を判断できないので、このシーケンシングは、エミッタシステムまたは呼出システム410が非同期分散処理を取り扱う必要性が生じると不可能になる。図4は、第1メッセージAの呼出システム410から遠隔システム420への伝送411に続く、第2メッセージBの伝送413の、このリスクを示す。第2メッセージBの処理414は、第1メッセージAの処理414の処理412の前に開始する。したがって、メッセージ処理が逆になり、処理が十分に行われない結果となり、最悪の場合は、格納されている機能データの不可逆的な破損やデータベースの破損に至る。
したがって、本発明は、前述の問題を緩和し、格納する機能データやデータベースの不可逆的な破損を避けることを目的とする。
本発明の一実施形態は、インバウンドハンドラ層を形成する複数のインバウンドハンドラと、アウトバウンドハンドラ層を形成する複数のアウトバウンドハンドラと、を有する分散並列システムにおいて、分散非同期メッセージのシーケンシングをコンピュータで実行する方法を提供し、この方法は、少なくとも1台のデータプロセッサを用いて実行し:
複数のインバウンドハンドラのうちの何れかのインバウンドハンドラにおいて、着信メッセージを含むシーケンスを特定するシーケンス相関値が付与された着信メッセージを受信するステップ;および
共有シーケンスストレージにおける前記シーケンスのシーケンスステータスをチェックし、前記シーケンスにおいてメッセージの順序を維持するため、着信メッセージが次に処理すべきメッセージであるかを判断するステップを含み、
シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラがいずれも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理すべきメッセージであると判断された場合、その着信メッセージを共有キューストレージに転送し、次いで、処理のために使用可能なアウトバウンドハンドラによってメッセージを取得し、
シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、または、共有キューストレージが前記シーケンスの処理されるメッセージをすでに含んでいる場合、あるいは、着信メッセージは前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージを共有オーバーフローストレージのメモリに格納し、さらなる処理のために保持する。
したがって、分散並列システムは、:多くのシーケンスに関係するメッセージを受信する、インバウンドハンドラ層に互いに平行に配列されたインバウンドハンドラ;および、共有シーケンスストレージ、キューストレージおよび共有オーバーフローストレージを含み、インバウンドハンドラからメッセージを受信し、それらをメモリに格納するように構成されたストレージ層、を含むルーターと見なすことができる。シーケンスストレージは、オーバーフローストレージを含んでもよい。分散並列システムは、同システムが、それぞれのシーケンス内で正確なメッセージのシーケンシングを確保しながら、アウトバウンドハンドラ層において互いに平行に配列され、処理のために共有キューストレージからメッセージを取得するように構成されたアウトバウンドハンドラをさらに含む。アウトバウンドハンドラは、処理を行い、場合によっては正しい受け手に配信するために、メッセージを受信するように構成される。
オーバーフローストレージおよびシーケンスストレージは、インバウンドハンドラおよびアウトバウンドハンドラに共有される。それらは、並列インバウンドハンドラおよび並列アウトバウンドハンドラによって共有して使用される。
したがって、本発明は、分散環境における様々なシーケンスの並列処理を実行しながら、同一のシーケンスに関するメッセージの順序を維持するためのソリューションを提供する。さらに、インバウンドハンドラをアウトバウンドハンドラから切り離すことによって、受け手のスループットからエミッタのスループットを分離することが可能になる。さらに、インバウンドハンドラおよびアウトバウンドハンドラの数を、高度かつ個別に拡張できる。また、本発明は、シーケンスとインバウンドハンドラまたはアウトバウンドハンドラ間に類似性が生じることを避けるので、インバウンドハンドラまたはアウトバウンドハンドラは、どのシーケンスのメッセージでも処理できる。したがって、一部のハンドラやアウトバウンドハンドラの停止が、メッセージの処理に影響しないので、本発明は、強い障害許容性を提供する。
本発明の方法はさらに、以下に示すさらなる機能およびステップの何れかを含んでよい。
一実施形態において、前記シーケンスのメッセージの順序を維持するために、着信メッセージが次に処理すべきメッセージであるかどうかの判断は:
・ 前記シーケンスにおける着信メッセージの順序を示すメッセージランクを判断するステップ;および
・ メッセージランクを、前記シーケンスの処理すべき次のメッセージのランクを定義するシーケンスランクと比較するステップ;を含み、
・ メッセージランクがシーケンスランクと同一の場合、そのメッセージは、前記シーケンスにおけるメッセージの順序を維持するために、次に処理すべきメッセージと判断され;
・ メッセージランクがシーケンスランクよりも大きい場合、そのメッセージは、前記シーケンスにおけるメッセージの順序を維持するために、次に処理すべきメッセージとは判断しない。
シーケンスに含まれ、特定の順序に処理されるべきメッセージは、メッセージランク番号を付与され、これは現在のメッセージランクの記述として参照される。メッセージランクは、シーケンス内のメッセージの順序を定義する。メッセージにはメッセージ発信者または、サードパーティによってメッセージランクが付与されることがある。メッセージランクは、シーケンスのメッセージの到着順に応じて、システムにより割り当てられる場合もある。
本明細書の記述通り、シーケンスランクは、与えられたシーケンスのどのメッセージが次に処理すべきかを定義する、つまり、次に処理されるべきメッセージが有するべきメッセージランクを定義する。
シーケンスランクは、シーケンスストレージ内に示されることが好ましい。
典型的に、アウトバウンドハンドラによってメッセージを処理することは、アウトバウンドハンドラがメッセージを受け手に送信または配信することを意味する。
有利なことに、アウトバウンドハンドラにおいて与えられたシーケンスのメッセージの処理が完了したら、前記与えられたシーケンスのシーケンスランクは、インクリメントされる。
シーケンスのシーケンスランクをインクリメントする際、方法は、オーバーフローストレージに、メッセージランクがインクリメントされ、シーケンスランクと同等であるメッセージが含まれるかをチェックし、次いで、このメッセージをキューストレージに転送することが好ましい。
有利な実施形態によれば、受信した着信メッセージに、シーケンス内でのメッセージランクを示すインデックスが付与されていない場合のメッセージランクを判断するステップは、シーケンス内の着信メッセージのランクを示すメッセージランクを着信メッセージに割り当て、割り当てられたメッセージランクをシーケンスストレージに格納することを含む。
割り当てられたメッセージランクは、前記シーケンスに1を加えてインクリメントした、インバウンドハンドラの任意の1箇所において最後に受信したメッセージのランクに相当していることが好ましい。したがって、着信メッセージが、前記シーケンスの第1メッセージであれば、メッセージランクは1となる。あるインバウンドハンドラで受信した前のメッセージのメッセージランクがNであれば、新たに着信したメッセージに割り当てられるメッセージランクはN+1となる。
別の有利な実施形態では、インバウンドハンドラで受信した着信メッセージには、シーケンス内でのメッセージランクを示すインデックスが付与されている。
メッセージランクがシーケンスランクよりも大きい場合、シーケンスのステータスを「保留(pending)」に設定することが好ましい。したがって、「保留」は、オーバーフローストレージ領域は、与えられたシーケンスの少なくとも1つのメッセージを含むが、この(これらの)メッセージのメッセージランクは、シーケンスランクと同等ではないことを意味する。
どのアウトバウンドハンドラも現在、前記シーケンスのメッセージを処理しておらず、そのシーケンスのメッセージがオーバーフローストレージ領域にない場合、典型的に、シーケンスステータスは、「待つ(waiting)」に設定される。少なくとも1つのアウトバウンドハンドラが現在、前記シーケンスのメッセージを処理している場合、典型的にシーケンスステータスは「処理中(processing)」に設定される。
有利なことに、キューストレージが着信メッセージのシーケンスのメッセージを含まない場合、そして、着信メッセージのメッセージランクがシーケンスストレージに示されるシーケンスランクよりも大きい場合、着信メッセージは、シーケンスランクがインクリメントされ、着信メッセージのメッセージランクと同等になるまで、オーバーフローストレージに格納される。
したがって、メッセージにメッセージの発信者または第三者からメッセージランクが付与されていて、メッセージランクがシーケンスランクよりも大きい場合、メッセージは、オーバーフローストレージに格納される。他のメッセージランクの低いメッセージが処理される場合、メッセージランクが、先に格納したメッセージのメッセージランクに到達するまで、シーケンスランクはインクリメントされる。このメッセージは、次にシーケンスストレージ、より具体的には、オーバーフローストレージからリリースされ、一度、キューストレージおよびインバウンドハンドラが、このシーケンスのメッセージを格納せず、処理しなくなると、キューストレージに送信されることがある。
同様のことは、メッセージランクは付与されないものの、到着順に応じてシステムによりメッセージランクが割り当てられるメッセージについても適用される。
有利なことに、アウトバウンドハンドラにより、メッセージが適切に処理された場合、そのメッセージは、キューストレージから削除される。
有利なことに、アウトバウンドハンドラは非同期に作動することにより、メッセージの送信が可能となり、メッセージを送信後、このメッセージの受け手から肯定応答を受信するまで、別の処理が可能となる。
有利な実施形態によると、アウトバウンドハンドラはメッセージを受け手に送信する配信処理と、受け手から肯定応答を受信する肯定応答処理を含む。配信処理と肯定応答処理は、独立して作動するので、配信処理は、メッセージ送信後すぐに使用可能となる。
有利なことに、着信メッセージを受信し、チェックステップに進むまで、この方法は、着信メッセージがシーケンスストレージに格納されるか、キューストレージに送信されるまで、すべてのインバウンドハンドラが、前記シーケンスの他のメッセージを受信することを停止される、インバウンドロックステップを実行することを含む。
有利なことに、同一シーケンスの他のメッセージがアウトバウンドハンドラによって送信され、処理される間に、着信メッセージは、インバウンドハンドラによって受け入れられることが可能である。着信メッセージがロックからリリースされるために待つ必要が生じる状況は以下に限定される:
・ 別の着信メッセージがストレージ層に格納されているか、インバウンドハンドラによって受信されている場合;および
・ 前記シーケンスのメッセージに対する受け手の応答が、アウトバウンドハンドラによって受信され、処理されている場合。アウトバウンドハンドラが受け手から応答(肯定応答)を受信した場合、シーケンス、対応するランク、もしあれば、前記シーケンスに送信する次のメッセージを探す時間、およびランクのインクリメントはロックされる。
インバウンドロックステップに、シーケンスストレージに格納されている前記シーケンス専用のミューテックスをロックすることが含まれていることが好ましい。
着信メッセージを受信すると、インバウンドハンドラは、前記着信メッセージのシーケンスのシーケンス相関値をチェックし、その着信メッセージを受け取る前に、前記シーケンスのミューテックスパラメータを読むことが好ましい。ミューテックスがロックされていなければ、インバウンドハンドラは着信メッセージを受け取る。ミューテックスがロックされていると、着信メッセージはミューテックスがリリースされるのを待つ。
より具体的には、ミューテックスは、シーケンスストレージに含まれるシーケンスレジスターに格納される。
有利なことに、インバウンドハンドラおよびアウトバウンドハンドラのシーケンス1つに対し、ミューテックスは1つだけ存在する。キューストレージのストレージキューは、与えられたシーケンスに対し、アウトバウンドハンドラ層がそのシーケンスのメッセージの処理を完了するまで、1つのメッセージのみがアウトバウンドハンドラに伝播されることを確実にする。
アウトバウンドロックステップに、シーケンスストレージに格納されている前記シーケンス専用のミューテックスをロックすることが含まれていることが好ましい。
有利なことに、アウトバウンドハンドラが使用可能である場合、アウトバウンドハンドラは、処理が可能なメッセージがないかキューストレージをチェックし、前記メッセージを取り出して、処理を行う。アウトバウンドハンドラが使用可能であれば、アウトバウンドハンドラは、処理可能なメッセージがないか、キューストレージ850をチェックすることが好ましい。
メッセージがあれば、このメッセージは、前記与えられたシーケンスに対し、自動的に修正され、処理される。
一実施形態において、着信メッセージのシーケンスストレージ、具体的には、オーバーフローストレージへの格納時に、インバウンドハンドラは肯定応答メッセージを送信する。
典型的に、肯定応答メッセージは、メッセージの発信者に送信される。
有利なことに、シーケンスランクよりも大きいメッセージランクを有するメッセージが、そのメッセージランクがシーケンスランク(つまり、次に処理されるメッセージのランク)に合致しない限り、オーバーフローストレージに格納され、メッセージシーケンスはロックされる。
シーケンスランクよりも大きいメッセージランクを有するメッセージが最初にオーバーフローストレージに格納され、次に、メッセージのシーケンスに割り当てられたタイムアウト値に到達した後、オーバーフローストレージから破棄されることが好ましい。別の方法として、または追加として、シーケンスランクよりも大きいメッセージランクを有するメッセージが最初にオーバーフローストレージに格納され、次に、メッセージに割り当てられたタイムアウト値に到達した後、オーバーフローストレージから破棄される。
別の実施形態では、本発明は、ソフトウェアプログラム命令を含む非一時的コンピュータ可読媒体に関し、少なくとも1台のデータプロセッサによるソフトウェアプログラム命令の実行は、本発明による方法の実行を含む動作の実行となる。
他の実施形態では、本発明は、非同期メッセージのシーケンシングを行う分散並列型処理システムに関し、分散並列型処理システムは:
・ それぞれが、様々なシーケンスに関連する複数の着信メッセージを独立して受信するように構成されている、少なくとも1つのデータプロセッサを含む複数のインバウンドハンドラ;
・ それぞれが、複数の着信メッセージを独立して処理し、転送する、少なくとも1つのデータプロセッサを含む複数のアウトバウンドハンドラ;および
・ ストレージ層を含み、前記ストレージ層は、少なくとも1つのメモリと:
・ 複数のアウトバウンドハンドラへ伝送される状態にある着信メッセージを格納するキューストレージ;および
・ シーケンスストレージ、を含み、前記シーケンスストレージは、着信メッセージのシーケンスのステータスを維持し、更新するシーケンスステータスコンテキスト(802)、およびインバウンドハンドラからのメッセージを受信し、それらを順次、キューストレージに転送するよう構成されたオーバーフローストレージ、を含む。
本システムも、着信メッセージが、このメッセージのシーケンスにおけるメッセージの順序を維持するため、次に処理すべきメッセージであるかどうかを判断し、少なくとも1つのデータプロセッサにより実行される以下の処理を実行するよう構成されている。
シーケンスステータスが、アウトバウンドハンドラがいずれも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理するメッセージであると判断された場合、その着信メッセージをキューストレージに転送し、次いで、処理のために使用可能なアウトバウンドハンドラに転送する。
シーケンスステータスが、アウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、または、キューストレージが前記シーケンスの処理されるメッセージをすでに含んでいる場合、あるいは、着信メッセージが前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージを共有オーバーフローストレージ格納し、さらなる処理のために保持する。
追加の実施形態において、ストレージ層のキューストレージおよびシーケンスストレージは、インメモリーデータまたはファイルベースストレージに実装される。別の方法として、ストレージ層のキューストレージおよびシーケンスストレージは、クライアント/サーバストレージデータベースに実装される。
シーケンスステータスのチェックには、前記シーケンスのシーケンス相関値に基づくシーケンスのステータスを取得することを含んでいることが好ましい。
別の実施形態において、本発明は、複数の並列インバウンドハンドラと複数の並列アウトバウンドハンドラを有する並列環境における少なくとも1つのサーバプリケーションと少なくとも1つのクライアントアプリケーション間で非同期メッセージを処理するためにコンピュータにより実施される旅行モニタリング方法に関し、この方法は、少なくとも1つのデータプロセッサで以下のステップを実行する:
・ 複数の並列インバウンドハンドラのうちの1つのインバウンドハンドラにおいて着信メッセージを含むシーケンスを特定するシーケンス相関値が付与された着信メッセージを受信し;
・ シーケンスストレージにおける前記シーケンスのシーケンスステータスをチェックし;
・ 前記シーケンスにおいてメッセージの順序を維持するため、着信したメッセージが次に処理するメッセージであるかを判断し;
シーケンスステータスが、複数の並列アウトバウンドハンドラのうちのいずれのアウトバウンドハンドラも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理するメッセージであると判断された場合、その着信メッセージをキューストレージに送信し、次いで、処理のために使用可能なアウトバウンドハンドラに転送し;
シーケンスステータスが、アウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、あるいは、キューストレージが前記シーケンスの処理されるメッセージをすでに含んでいる場合、あるいは、着信メッセージが前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージを共有オーバーフローストレージに格納し、さらなる処理のために保持し;
メッセージは、乗客に関するデータを含み、シーケンス相関値は、交通サービスのリファレンスに関するデータを含む。
本発明の方法はさらに、以下に示すさらなる機能およびステップの何れか1つを含む。
一度、処理されると、メッセージは、アウトバウンドハンドラから以下のうちの少なくとも1つに転送される。旅行予約システム、航空会社の在庫システム、航空会社のイーチケットシステム、空港の出国管理システム、空港の運用システム、航空会社の運用システム、地上業務の運用システム。
一実施形態では、交通サービスのリファレンスとして、フライトナンバー、日付および予約クラス以のうち少なくとも1つを含む。
一実施形態におけるメッセージは、搭乗客、キャンセルした搭乗客、追加の乗客のうち少なくとも1つを明示する。
一実施形態において、シーケンスタイムアウト値に到達後にオーバーフローストレージに格納されている着信メッセージを削除するため、各着信メッセージにはシーケンスタイムアウト値が付与されていて、シーケンスタイムアウト値は、フライトの出発時刻または、フライト提示の終了、あるいはプロモーションの終了のうちの何れか1つによって起動される。
別の実施形態では、本発明は、ソフトウェアプログラム命令を含む非一時的コンピュータ可読媒体に関し、少なくとも1つのデータプロセッサによる当該ソフトウェアプログラム命令の実行は、本発明による上記方法の実行を含む動作の実行となる。
さらに別の実施形態で、本発明は、複数のインバウンドハンドラ、および複数のアウトバウンドハンドラを有し、メッセージを処理する少なくとも1つのプロセッサを含む分散並列システムにおいて、配信された非同期メッセージをコンピュータによりシーケンシングする方法に関し、この方法は、少なくとも1つのデータプロセッサを用いる、以下のステップを含む:
・ インバウンドハンドラにおいて、着信メッセージを含むシーケンスを特定するシーケンス相関値が付与された着信メッセージを受信し、前記シーケンス内の着信メッセージの順序を示すメッセージランクを判断し;
・ シーケンスストレージにおける前記シーケンスのシーケンスステータスをチェックし:
シーケンスステータスがいずれのアウトバウンドハンドラも、前記シーケンスのメッセージを現時点で処理していないことを示し;
受信した着信メッセージが、シーケンス内でのメッセージランクを示す如何なるインデックスも付与されておらず、シーケンスストレージが前記シーケンスの処理すべきメッセージを未だに含んでいない場合;あるいは、
受信した着信メッセージは、シーケンス内のメッセージランク(シーケンスストレージに示されるシーケンスランクと同等)を示すインデックスが付与され、前記メッセージランクは、次に処理すべき前記シーケンスのメッセージのランクを定義し;
次に、着信メッセージをキューストレージに転送し、続いて、それを処理が可能なアウトバウンドハンドラに転送する。
シーケンスステータスが、アウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、あるいは、キューストレージが前記シーケンスの処理すべきメッセージをすでに含んでいる場合、または、受信した着信メッセージが、シーケンス内のメッセージランク(シーケンスストレージに示されるシーケンスランクよりも大きい)を示すインデックスが付与され、前記メッセージランクは、次に処理すべき前記シーケンスのメッセージのランクを定義する場合、次に、着信メッセージをさらなる処理のためにオーバーフローストレージに格納する。
本発明の前記実施形態および他の態様の実施形態は、以下の図を参照することにより、さらに理解されよう。

図1Aは呼出システムと遠隔システム間の同期コールまたはメッセージの処理の順序を例証するフローチャートである。 呼出システムと遠隔システム間の非同期コールまたはメッセージの処理の順序を例証するフローチャートである。 分散処理システムにおけるコールまたはメッセージの並列処理を例証するフローチャートである。 分散処理システムにおける非同期コールまたはメッセージの並列処理であり、メッセージ処理が順序通りに実行されないリスク、およびデータ破損のリスクが生じることを例証するフローチャートである。 本発明による、集中型および共有型シーケンスコンテキストにおける高レベルシーケンス管理を例証するブロック図である。 本発明による、伝送および処理チャンネル内でのシーケンスを特定する処理を例証するフローチャートである。 本発明による、非同期分散処理システムを例証する図である。 インバウンドハンドラがシーケンスAの第1メッセージを受信する、本発明によるシーケンシング処理のステップを例証する図である。 インバウンドハンドラがシーケンスAの第2メッセージを受信する、本発明によるシーケンシング処理の別のステップを例証する図である。 アウトバウンドハンドラがシーケンスAの第1メッセージを処理する、本発明によるシーケンシング処理の別のステップを例証する図である。 アウトバウンドハンドラがシーケンスAの第1メッセージを処理した、本発明によるシーケンシング処理の別のステップを例証する図である。 シーケンスが再配列された、本発明によるシーケンシング処理のステップを例証する図である。
以下の記述は、旅行業界への応用を意図するものであるが、本発明は、ホテル客室、レンタカー、鉄道チケットなどの旅行商品を始めとして、あらゆる用途のデータ処理に使用可能であるので、本発明は以下の例に限定されない。
本発明によると、メッセージの処理順序は、与えられたシーケンスの次のメッセージを送信する前に、メッセージのエミッタまたは呼出システムによって、非同期並列環境において、シーケンス内の各メッセージのランクを示すインデックスを付与することによって明示的に、あるいは、メッセージを順次配信して、そのメッセージの肯定応答が配信されるのを待つことによって非明示的に、定義される。
本発明は、同時に独立して実行される処理が、シーケンスと定義された、与えられたメッセージのセットを処理するためのシーケンシングの順序を順守することを確実にすることを目的とする。
その点に関し、本発明による分散非同期メッセージのシーケンシングを行うための、方法、装置、およびシステムは、様々な動作を実行するが、それらは下記に簡潔に説明し、後に図を用いて詳細に説明する。
与えられたシーケンスの各メッセージまたはサービスコールは、インタフェース定義によりタグ付けされ、それが属する特定のシーケンスを実際に参照する。
メッセージのシーケンス内のメッセージまたはサービスコールのランクは、下記の何れかである:
・ 十分なインタフェースを介して、メッセージまたはサービスコールのエミッタ/送り手によって明示的に提供される。例えば、メッセージは、そのシーケンス内のメッセージのランクを定義するインデックスを有するフィールドを含む;または
・ シーケンス内のメッセージまたはサービスコールを、時間を超過して受信する場合の順序を使用して非明示的に提供される。
一度、シーケンスおよび、メッセージランク、またはサービスコールの順序が特定されると、シーケンスは適切に管理される必要がある。
図5は、本発明による、集中型および共有型シーケンスコンテキストにおける高レベルシーケンス管理を例証するブロック図である。この図は、システムの主要機能および主要ステップを詳述している。
非同期分散処理システムは、着信メッセージ501を受信するインバウンドハンドラ510、およびメッセージを処理し、それらを配信するよう構成される、アウトバウンドハンドラ530を含む。システムはまた、当該メッセージが属するシーケンスの順序を維持するため、メッセージ501の処理を保留する必要がある場合、インバウンドハンドラから受信したメッセージを格納することがある、オーバーフローストレージ領域540を含む。
システムは、複数の並列インバウンドハンドラ510と複数の並列アウトバウンドハンドラ530を含むが、図5は分かり易くするために簡潔に示されていることを理解されたい。
インバウンドハンドラはまた、アクセプターまたは、アクセプター処理とも呼ばれる。したがって、複数のインバウンドハンドラを含むインバウンドハンドラ層は、アクセプター層とも呼ばれることがある。
アウトバウンドハンドラは、プロセッサまたは配信処理と呼ばれることがある。したがって、複数のアウトバウンドハンドラを含むアウトバウンドハンドラ層は、配信層とも呼ばれることがある。
インバウンドハンドラ510は、以下のうちの何れか1つを実行するよう構成される。パブリッシャーなどのエミッタからメッセージを受信する、メッセージのインテグリティのバリデーションを行う、シーケンスロックおよびステータスのバリデーションを行う、2領域のうちの1領域にメッセージを格納する(例:キューストレージまたは、オーバーフロー領域)、エミッタに応答する。
有利な実施形態によると、アウトバウンドハンドラ530は、2つの処理から構成される。デリバリー処理531と呼ばれる第1処理は、以下の何れか1つの処理を実行するように構成されている。ストレージキューからメッセージを入手する;そのメッセージを、通信チャネルを介して受け手に送信する;および、他の処理によって使用されることを停止する。
肯定応答処理532と呼ばれる第2処理は、以下の何れか1つの処理を実行するように構成されている。受け手から肯定応答を受信する;シーケンス管理を実行して次のメッセージを対応するシーケンス(もしあれば、ストレージキュー)に入れる;および、他の処理によって使用されることを停止する。
したがって、アウトバウンドハンドラ532により形成される配信層は、高い拡張性の要件に対応する非同期である。このように、システムは受け手の待ち時間に対し、独立している。より正確には、アウトバウンドハンドラは、第1シーケンスのメッセージを取得および配信し、次に、アウトバウンドハンドラが第1シーケンスのメッセージの配信に対する肯定応答を受信するまでに、第2シーケンスの別のメッセージを取得し、配信することができることを意味する。したがって、アウトバウンドハンドラは非同期的に多くのシーケンスからのメッセージを取り扱うことができ、それによって、常に各シーケンスの正確な順序を維持しながら、システムが送ることができるメッセージの数を増やすことができる。
本発明によると、ステートマシンが各シーケンスに使用される、中央共有シーケンスコンテキストが実装される。着信メッセージ501がインバウンドハンドラ510に受信される度に、それに対応するシーケンスコンテキストステータスがチェックされる(520)。一実施形態によれば、対応するシーケンスコンテキストが存在しない場合、動的および透過的に作成される。したがって、本発明は、システムにおいて前もってシーケンスを定義する必要はなく、この点については、全面的に動的である。さらに、メッセージに、シーケンス内のメッセージのランクを示すインデックスが付与されていない場合、メッセージランクは、メッセージの到着順序に応じてメッセージに割り当てられる:
・ アウトバウンドハンドラ層がシーケンスの次のメッセージを待っている状態(つまり、シーケンスステータスが「待ち(Waiting)」)であることを、シーケンスステータスが示した場合、着信メッセージ501が、アウトバウンドハンドラ530の標準的動作により通常通り処理(522)される(メッセージは非同期処理可能となる);
・ あるいは、シーケンスのメッセージが現在、処理中である、つまり、シーケンスステータスが「処理中(Processing)」とシーケンスステータスが示す場合、着信メッセージ501は、後に処理(524)を受けるため、特定のシーケンスオーバーフローストレージ領域540に格納される。オーバーフローストレージ領域540は、着信メッセージの順序が失われないように構成/インデックス付けされる。このように、着信メッセージ501は、さらなる処理のために保持され、即時処理のために使用可能とはならない(シーケンスから除外)。
アウトバウンドハンドラ層は、標準的動作によって処理される、事実上、正しいシーケンスランクのメッセージを受信する。
一度、メッセージ501が処理されると、アウトバウンドハンドラ層がオーバーフローストレージ領域540のシーケンスにおいて処理する次のメッセージを探す。もし、そのようなメッセージが見つかったら、標準処理に基づいて、アウトバウンドハンドラ層にプッシュする。メッセージが見つからない場合、シーケンスステータスは、「待ち(Waiting)」の設定に戻される。
シーケンス内の各メッセージの順序は、維持される。シーケンスストレージは、シーケンスのメッセージの順序を維持するために、処理が義務づけられる次のメッセージのランクを示すシーケンスランクを定義する。シーケンスランクは、メッセージの処理が完了する度に、インクリメンタルに更新される。したがって、シーケンスランクは、カウンターと見なすことができる。
シーケンスランクに合致しない如何なる着信メッセージ(つまり、処理すべき次のメッセージのランク)も、処理すべき正しいメッセージがインバウンドハンドラ510に受信されるまで、オーバーフローストレージ領域540に格納される。このことは、シーケンスのランクおよび各メッセージのランクを考慮しながら、オーバーフローストレージ領域540において、挿入/削除動作が実行されることを意味する。
メッセージがオーバーフローストレージ領域540に格納され、シーケンス内で処理が保留されているので、シーケンス内の次のメッセージによってシーケンスのロックが外されることはない。このような状況は頻繁には起こらないが、本発明は、期限が切れたメッセージやシーケンスを破棄するなど、期限が切れたと考えられるシーケンスに対して動作を起こすためにシーケンスのコンテキストの中にインジケータを残す動的な方法を提供する。
一部のMOM(Message Oriented Middleware)は、並列処理の利用を避けることによって、シーケンシング機能を提供する(つまり、これらは1件のデキューの消費者のみに対して実行する)。したがって、これらは、スケーラビリティを犠牲にして、シーケンスを保証する。Oracle(登録商標) Advanced Queuingは典型例である。
他の一部のMOM(MQ-Seriesなど)は、コリレータに基づくシーケンス機能を提供するが、これらは、処理するシーケンスのメッセージが論理的にグループ化されていることを要件とする。その上、グループのサイズに制限があり、MOMはデキュー処理に新たな制限が加えられていることがある。
本発明による分散並列型処理は、並列性とスケーラビリティを維持し、メッセージまたはサービスコールを関連付け、あるいはデキュー処理によって処理する方法において特別な制限がない、厳格なシーケンシングを提供する。本発明の方法、装置、およびシステムによる高度なスケーラビリティおよび障害許容力によって、以下が実現する:
・ 「ポストおよびクイット」の原則を利用して、別の処理(肯定応答処理)は肯定応答を受信する役割を担いながら、メッセージがポストされ、肯定応答を待つことなく処理を行う、全面的な非同期配信処理を実行し、それによって非常に高度なメッセージスループットによる処理が可能になる;
・ および、全面的な分散処理を実行し、シーケンスとインバウンド/アウトバウンドハンドラ間の類似性を取り除くことによって、インバウンド/アウトバウンドハンドラは、どのシーケンスのメッセージの取扱いも可能になる。
メッセージシーケンシングの通常の方法に、モノプロセス構造に戻ることがあるが、これは、障害許容力とスケーラビリティにおいて重大で、時には受け入れられない制限がある。それに対して、本発明は、シーケンスの濃度を高く保ちながら、分散並列処理においてインバウンドハンドラレベルおよびアウトバウンドハンドラレベルの2段階で多くの利点を提供する。つまり、システムが多数のシーケンスを並列的に取り扱う必要があれば、本発明はシーケンス処理の並列化に多くの利点を提供する。
シーケンスの維持に関して、ストレージ領域、およびデキュー処理に前提条件はない:
・ インバウンドハンドラのメッセージ受け入れのキュー処理、およびアウトバウンドハンドラ層のメッセージ処理のキュー処理は、本発明によって達成されるので、シーケンスの保持をサポートする必要はない;
・ メッセージの並列ストレージおよび並列取得(つまり、キューイング/デキューイング)は、完全に維持される;
・ 非制限的な実施形態によると、キューストレージ自体は、ノードに対してローカルになることができ、オーバーフローストレージ領域は、グローバルなままである(つまり、すべてのアウトバウンドハンドラに共有されている)。どのノードも与えられたシーケンスを処理することができるので、オーバーフローストレージは共有される必要があり、オーバーフローストレージは一意的なオーバーフロー領域にアクセスし、ストレージにおいて実際にキューおよびデキューイングを行う。キューストレージがすべてのアウトバウンドハンドラによって共有されない場合、単独のアウトバウンドハンドラまたは複数のアウトバウンドハンドラに専有とすることができる。キューストレージがすべてのアウトバウンドハンドラに共有されない場合、各メッセージは、1つのローカルのキューストレージのみによって受信される;
・ メッセージは、ステータスが変更されてオーバーフロー領域に配置するので、例外キューの必要がなく、拒絶メッセージのストレージは容易である。
本発明の方法、装置、およびシステムによると、メッセージシーケンスが、シーケンスの特定とシーケンス内のメッセージランクを特定することによって、分散並列モードにおいて処理される。特定することに加えて、シーケンスは、管理および再配列され、それには、シーケンスロックおよびタイムアウトが含まれる。これらの態様は、以下に詳述される。
シーケンスの特定
与えられた伝送チャネルにおいて共有されるメッセージまたはイベントのフロー中で、関連メッセージのセットは、シーケンスが優先されるので、明確に定義される必要がある。図6は、エミットシステム610およびプロセスシステム630間の伝送および処理チャネル620内で、シーケンスを識別する処理を例証するフローチャートである。
専用パラメータは、与えられた伝送に含まれる各メッセージ要素(messaging primitive)に提供される。この専用パラメータは、シーケンス識別子であり、シーケンス相関値とも呼ばれる。これは典型的に、メッセージのエミットシステムによって設定される英数字の値である。このパラメータは、関与する各構成要素によって使用され、同じシーケンスに属するメッセージを識別する。例えば、メッセージ1〜4は、伝送チャネル620内で解析され、メッセージ#1〜#4と識別される。これらの関連付けされ、順序付けされたメッセージは、同じ送信チャネル620を共有し、連続的にお互いを追跡することはない。これらは、送信チャネル620において、他のシーケンスに属するメッセージと結合する。
シーケンス相関パラメータは、与えられた送信および処理チェーンにおいて、個別の衝突する処理により共有されないことを確実にするために、定義される。この状況では、厳格に一意的であることが必須となる。このシーケンス相関パラメータの定義は、本システムを使用する業務処理の責務である。
シーケンス内のメッセージランクの識別
特定の順序によって処理される必要のあるメッセージは、以下の2種類に分類される:
・ 第1種類のメッセージは、シーケンス内の順序またはランクがメッセージの作成時に判明し、メッセージの総数も、メッセージの作成時に判明することが好ましく、生成処理は、各メッセージの伝送要素に特定のメッセージランク番号を割り当てることができる。このメッセージランク番号は、次に、全体的なチェーンの一部として、最終処理が実行されるまで、各処理によって運ばれ、格納される;
・ 第2種類のメッセージのシーケンス内の順序は、生成時に判断される。これらの第2種類のメッセージの処理は通常、インクリメンタルであり、つまり、処理内の各新規メッセージ(またはイベント)は、シーケンス内の前のメッセージの処理結果を変更する。その点において、メッセージのエミットシステムは、与えられたシーケンス内のメッセージランクもメッセージの数も把握しておらず、シーケンス内のメッセージの総数も把握していない。
分かり易くするために、この記述では、与えられたシーケンス内のメッセージのメッセージランク番号をメッセージランクと呼ぶ。
コアシーケンス管理
図7に例証するように、非同期分散処理システムは以下を含む:
・ 複数のインバウンドハンドラ710、720、…、740が、インバウンドハンドラ層を形成する。インバウンドハンドラは着信メッセージ711、721、731、および741を受信し、それらを個別にキューストレージ750に格納し、これら着信メッセージ711、721、731、および741を問題なく受信したことを示す肯定応答を、エミットシステムに送る;
・ 複数のアウトバウンドハンドラ760、770、…、790が、アウトバウンドハンドラ層を形成する。各アウトバウンドハンドラはキューストレージ750からメッセージを取得し、それらを処理するよう構成される。アウトバウンドハンドラはまた、処理済みメッセージのアプリケーションへの転送を担当する。
インバウンドハンドラはまた、アクセプターまたは、アクセプター処理とも呼ばれる。アウトバウンドハンドラは、プロセッサまたは配信処理と呼ばれることがある。
図8Aは、インバウンドハンドラがエミットシステムから受信したシーケンスAの第1メッセージをシーケンシング処理するステップを例証する図7の実施形態を改善した図である。ここでの改善によって、シーケンスストレージ800と呼ばれる追加された構成要素が、複数のインバウンドハンドラ810、820、…、840と複数のアウトバウンドハンドラ860、870、…、890の間にストレージ層の一部として実装されている。シーケンスストレージ800は以下を含む:
・ ミューテックスとも呼ばれる、集中型、または共有型シーケンスであるミューテックス804は、一度に、1つのハンドラのみが、与えられたシーケンス(または同じシーケンス相関値が付与されたもの)のメッセージを取り扱うことを確実にし、競合する場合、先着順とする;
・ ステータスとも呼ばれる、集中型または共有型シーケンスステータスコンテキスト802は、すべての処理の間のシーケンスステータスの共有を維持し、シーケンスは、シーケンス自体のシーケンス相関値により一意的に識別される。ステータスはまた、与えられたシーケンスの各イベントに対し、適用する動作を決定することができる;
・ 「待ち(waiting)」ステータスは、次の着信メッセージを配信のためにキューに入れることを意味する;
・ 「配信中(delivering)」ステータスは、次の着信メッセージが保持されていることを意味する;
・ オーバーフロー、またはオーバーフローストレージ領域とも呼ばれる集中型または共有型オーバーフローストレージ806は、複数のアウトバウンドハンドラによって次に処理されるメッセージのみが、それらにアクセスできることを確実にし、他はこのオーバーフロー領域において「保留(pending)」とする。オーバーフローストレージは、インデックス付けされ、順序づけされた、現在のシーケンスステータスに関して、配信される準備ができていないシーケンスメッセージである。
ステータス802、ミューテックス804、およびオーバーフローストレージ806の3つの構成要素は、文脈処理情報であり、キューストレージ850と同じ性質を有する。これらは、以下に実装される:
・ すべての分散処理が同じノードで実行される場合は、メモリーデータ、またはファイルベースのストレージ;または
・ サーバシステムが遠隔システムであるいくつかのノードで分散処理が実行される場合は、クライアント/サーバストレージデータベース。
ストレージ層と標準メッセージストレージの間の最大の一貫性は、独自のトランザクションを共有する共有RDBMSエンジンに両者を実装することである。
本発明の方法、装置、およびシステムによると:
・ キューストレージ850は、複数のインバウンドハンドラと複数のアウトバウンドハンドラの間のメッセージの交換を可能にし、シーケンスストレージ800から独立して動作し;
・ シーケンスストレージ800のオーバーフローストレージ806は、複数のインバウンドハンドラ810、820、…、840と複数のアウトバウンドハンドラ860、870、…、890間のメッセージ交換のシーケンシングを確実にする。
図8Aは、本発明の着信メッセージのシーケンシング処理を例証する:
・ メッセージ801−1は、シーケンス相関値「A」に属し、インバウンドハンドラ810により受信する;
・ インバウンドハンドラ810は、812に示すように、シーケンス「A」のミューテックス804をロックし、すべてのインバウンドハンドラ、またはアウトバウンドハンドラが、シーケンス相関値が「A」のメッセージを取り扱うことを防ぐ;
・ インバウンドハンドラ810は、814に示すように、シーケンス「A」の中央ステータスコンテキスト802に、シーケンスが存在しないか、シーケンスが「待ち(Waiting)」ステータスであるかをチェックする;
・ インバウンドハンドラ810は、814に示すように、シーケンス「A」のステータスコンテキスト802を「処理中(Processing)」に設定する。本発明は、着信メッセージに、先に受信したメッセージに1をプラスしてインクリメントしたランクと同じ、メッセージランクを付与する。着信メッセージはこのシーケンスの最初のメッセージであるので、メッセージに割り当てられるメッセージランクは1に設定される。メッセージランクはシーケンスストレージ800に、より正確には、シーケンスコンテキスト802に格納されるのが好ましい。インバウンドハンドラ810は、816に示すようにメッセージ851をキューストレージ850に格納することが好ましい;および
・ インバウンドハンドラ810は、メッセージエミッタに肯定応答を行い、シーケンス「A」のミューテックス804をリリースし、その他のあらゆる着信メッセージを受信するよう準備する。
図8Bは、他の着信メッセージがシステムによって受信される、シーケンシング処理の次のステップを例証する:
・ 第2メッセージ801−2はシーケンス「A」に属し、インバウンドハンドラ820によって受信される;
・ インバウンドハンドラ820は、822に示すように、シーケンス「A」のミューテックス804をロックし、インバウンドハンドラ810、830、または840、あるいは、アウトバウンドハンドラが、シーケンス「A」内の別のメッセージを取り扱うことを防ぐ;
・ インバウンドハンドラ820は、824に示すように、シーケンスステータスが「処理中(Processing)」であるシーケンス「A」の中央ステータスコンテキスト802をチェックする。メッセージは、どのアウトバウンドハンドラでも利用不可能なので、インバウンドハンドラ820は、826に示すように、メッセージ807をオーバーフローストレージ806に格納する。
先の着信メッセージに1をプラスしてインクリメントしたメッセージランクの値を着信メッセージにメッセージランクとして割り当てる。前のメッセージのメッセージランクが1であるので、着信メッセージに割り当てられるメッセージランクは、2となる。さらに、本発明は、そのシーケンスで処理されるべき次のメッセージのランクを定義するシーケンスランクをインクリメントする。同じシーケンスからの複数のメッセージがシーケンスストレージ800に格納されている場合、これらのメッセージランクによってシステムは、キューストレージ850に転送されるべき正しいメッセージを識別することができる。正しいメッセージとは、シーケンスに定義されたシーケンスランクに対応するメッセージランクを有するメッセージである。有利なことに、これは着信メッセージがエミッタによって割り当てられたメッセージランクを有し、着信メッセージのランクが、インバウンドハンドラでの到着順にしたがって割り当てられたときに適用される;
・ インバウンドハンドラ820は、メッセージエミッタに肯定応答を行い、シーケンス「A」のミューテックスをリリースし、その他のあらゆる着信メッセージを受信するよう準備する。
図8Cは、キューストレージのキューに格納されたメッセージが、アウトバウンドハンドラの1つに処理のためにデキューされる、シーケンシング処理の次のステップを例証する:
・ アウトバウンドハンドラ870のうちの1つが、871に示すように、キューストレージ850から、シーケンス「A」のメッセージ851を取得する。本発明により、このメッセージは自動的に、処理されるべきシーケンスの次のメッセージである。したがって、そのランクは最後に処理されたメッセージのランクに1をプラスしてインクリメントした値である。この例証した実施形態において、キューストレージに格納されたメッセージは、シーケンスAの最初のメッセージなので、そのランクは必然的に「1」となる;
・ アウトバウンドハンドラ870は、873に示すように、メッセージランク「1」が付与されたメッセージを、その受信者へのさらなる配信の前に、関係する受信者または、別のルーティング手段によって、配信する。一度、メッセージがステップ873によって送信されると、アウトバウンドハンドラ870が別の処理のために使用可能となる。これは、受け手から肯定応答を受信するまで、継続される。例えば、アウトバウンドハンドラ870は、他のシーケンスに関する別のメッセージを取得して送信することができるので、非同期配信を達成し、スループットが向上する。これも、エミッタのメッセージの肯定応答を受けることができる。したがって、ステップ873におけるメッセージのエミッタの応答時間によって、アウトバウンドハンドラが処理するメッセージおよび処理の数に制限がない;
・ 受け手は、ステップ873で送信されたアウトバウンドハンドラ870の配信処理8701からのメッセージを受信する。これを受けて、受け手は、肯定応答メッセージをシステムに送信する。同じアウトバウンドハンドラ870の肯定応答処理8702、または別のアウトバウンドハンドラ860の肯定応答処理8602は、肯定応答メッセージを受信する。これは、図8Cに示すステップ874に該当する。
図8Dは、次のメッセージが処理のために、アウトバウンドハンドラの1つに転送される前に、オーバーフローストレージ領域806に格納され、キューストレージ850に転送されるシーケンシング処理の次のステップを示す。図8Dに示されるステップは、本システムのインバウンドハンドラにおける肯定応答メッセージの受信875により、起動される:
・ アウトバウンドハンドラ860は、862に示すステータスコンテキスト802のシーケンスランクをチェックし、肯定応答したメッセージのシーケンス内で、処理すべき次のメッセージのランクを判断する。シーケンスランクは、「2」に設定されているので、アウトバウンドハンドラ860は、809に示すメッセージランク「2」を有するオーバーフローストレージ領域806からの、シーケンス「A」のメッセージ807を取得する。このメッセージ807は、次に、キューストレージ850に格納され、すべてのアウトバウンドハンドラに対し、利用可能となる。ステータスコンテキスト802は「処理中(Processing)」のままである。シーケンスランクは、インクリメントされ、「3」に設定されるので、次に処理されるメッセージは「3」と同等のメッセージランクを有することを示す;
・ アウトバウンドハンドラ860は、停止し、キューストレージ850に格納されている別のメッセージの処理を行うよう準備する;
・ 処理は、着信メッセージがすべてのシーケンスが処理され、配信されるまで、継続される。
図8A〜8Dに示す処理は、受信した着信メッセージのシーケンスインデックス(シーケンス内のメッセージのランクを示す)の有無については統一されている。それが提供されている場合、同じシーケンス内の受信順序に基づき、インバウンドハンドラによってランキングが生成されている場合でない限り、シーケンシングランクとして使用される。
シーケンスの再配列
図8A〜8Dに詳細に示した、着信メッセージが厳格なシーケンス順序に従ってインバウンドハンドラによって受信される処理に加えて、シーケンス外で受信したメッセージを処理するため、同じ処理を実行した。唯一の事実上の前提条件は、メッセージのエミッタが同じシーケンス内の各メッセージに対し、シーケンス内でのメッセージのランクを示すインデックスを提供することである。
先に示した通り、本発明は、そのシーケンスで処理されるべき次のメッセージのランクを定義するシーケンスランクをインクリメントする。キューストレージ850が、与えられたシーケンスからメッセージを受信することができると、シーケンスランクがチェックされる。メッセージランクがシーケンスランクと同等のメッセージのみが、キューストレージ850に転送される。シーケンスランクと同等のメッセージランクを有するメッセージがシーケンスストレージ800のオーバーフロー領域806にない場合、このシーケンスの処理は、インバウンドハンドラから正しいランクのメッセージを受信するまで、保留される。したがって、シーケンスランクは、処理すべきメッセージを示すカウンターのように作動する。シーケンスランクは、シーケンスストレージ800内に格納されることが好ましい。
図8Eは、シーケンスが再配列された着信メッセージ801のシーケンシング処理のステップを例証する:
複数のインバウンドハンドラ810、…、840、によって実行される前述の処理に加えて、インデックスの命令により行われた再配列に関するステップが追加される場合がある;
・ メッセージのインデックスにより示されるメッセージのランクは、シーケンスの順序を維持するため、次に処理されるメッセージのランクと比較される。シーケンス順序を維持するための、次に処理するメッセージのこのランクは、インクリメントして更新されるシーケンスランクによって、好ましくはシーケンスストレージにおいて示される;
・ メッセージのランクが818に示すようにシーケンスランクと一致する場合、着信メッセージ815はキューストレージ850に格納され、複数のアウトバウンドハンドラに使用可能となる。シーケンスステータスは「処理中(Processing)」に設定される。処理するシーケンスランクは、インクリメントされ、先述した処理が適用される;
・ インデックスにより示されるメッセージのランクが、シーケンスランク819を越える場合、メッセージ813は、オーバーフローストレージ806に格納される。シーケンスステータス802は「保留(Pending)」に設定される。メッセージは、事実上、処理されない。所望のメッセージランクを有する、処理すべきメッセージがインバウンドハンドラにより受信されると、シーケンシングは再開される。その場合、インバウンドハンドラは対応するメッセージをキューストレージに格納し、シーケンスステータスを「処理中(Processing)」に設定する。
図8A〜8Dに示す処理に関しては、アウトバウンドハンドラがメッセージに対する動作を終了すると、アウトバウンドハンドラは、オーバーフローストレージ806内で、メッセージランクがシーケンスランクに一致するメッセージを探す(シーケンスランクは、シーケンスの順序を維持するための、次に処理すべきメッセージのランクを示す)。もし該当するメッセージが見つかった場合、キューストレージ850に格納するが、もし該当メッセージが見つからなかった場合、シーケンスステータスは、「保留(Pending)」(このシーケンスのメッセージがオーバーフロー領域に存在するが、メッセージランクは、シーケンスランクと同等でない場合)または、「待ち(Waiting)」(オーバーフローストレージ領域にそのシーケンスのメッセージは存在しない)に設定される。
シーケンスロックとタイムアウトの管理
前述した通り、与えられたシーケンスの受信メッセージは、これらのメッセージランクが処理すべきメッセージに合致しない限り、オーバーフロー806に格納される。これは、次と予想される処理すべきメッセージがインバウンドハンドラによって受信されない限り、シーケンス全体にとってはロック状態となる。
特定の実施形態で、本発明は、このロック状態が処理によって要求されれば、時間的に制限されることを確実にする。この処理はさらに、長さ(秒、分、日数、など)によって表現されるグローバルなシーケンスタイムアウト値を定義する。
他の実施形態では、シーケンスコンテキスト802は、シーケンスタイムアウトとして定義される絶対時刻値を含んでもよい。インバウンドハンドラまたはアウトバウンドハンドラが与えられたシーケンスコンテキスト記録にアクセスする度に、つまり、シーケンスに属するメッセージを何らかの方法で処理していて、シーケンスに対する動作を示す場合、この絶対時刻値は、現在のシステム時刻とシーケンスタイムアウト期間の総和である値により更新される。
さらに別の実施形態では、シーケンスコンテキストのフルリストを定期的に起動し、スキャンするタイムアウトシーケンスコレクターを実装してもよい。この特別な実装によって、シーケンス期間が期限切れとなったシーケンスはいずれも、検出される。この処理は、選択を達成するために、シーケンスタイムアウト値を活用する。
これが実装されることによって、本発明による方法、装置、およびシステムは以下のことが可能となる:
・ オーバーフローストレージ806およびシーケンスコンテキスト802における対応するメッセージを消去する;
・ 特定のシーケンス期限イベントに対し、十分な処理と記録を実行する;
・アイテムを順番に取るか、見つかるまで次を待つ間はアイテムを無視して、同期をずらす;
・アラームを発する。
本発明は、データ処理に多くのアプリケーションを有する。しかし、それは特に以下に示す内容について適している:
・ 企業、より具体的には、ソフトウェア企業のインフラストラクチャのハブとし作動するアプリケーションが長時間のメッセージングを取扱うAMS(Amadeus Messaging Server)などのメッセージングサーバ。予約業務を必要とする業界では、AMSは予約システムおよび出発管理システムの両方で使用される。シーケンシングは、すべてのテレタイプのトラフィックのために実行される。テレタイプのメッセージは、通常、TTYと呼ばれる。TTYタイプBは、航空業界の標準であり、与えられた機能的コンテキストにおいて厳格な順序で処理を行う非同期チャネルを介してメッセージを交換する。例えば、第1メッセージは、搭乗客のリストを含み、第2リストは、非搭乗の乗客(suppressed passengers)を含み、第3リストは、追加の乗客のリストを含む。これらの乗客名簿は、順序を厳格に守る必要がある;
・ 別の分野の用途として、例えば、OHF(OTF high-level framework)があり、これは、保証された非同期配信を実行するための多くの用途で使用されるミドルウェアソフトウェアコンポーネントである。OHFのシーケンシングの主な使用方法として、CDB(coupon database)と電子チケット用途の間の同期化が挙げられる。限られた時間内に、1つのクーポンに多くの変更が加えられることはよくある。これらの変更は、同期を維持するため、正しい順序で、電子チケットアプリケーション、またはクーポンデータベースに転送される必要がある。
上記では主に、エアラインまたはエアキャリアにより提供される旅行ソリューションについて取り上げたが、当業者は、本発明の実施形態が、エアラインの使用に限定されず、これらに限定されないが、船舶、鉄道、自動車、バスおよびホテルなどの旅行商品などを含む、他の種類の旅行様式および旅行提供業者にも適応できることを理解されたい。
上記は、典型的かつ非限定の例を用いて様々な方法、装置、およびソフトウェアを全面から例証し、本発明の実施形態として運用するものである。しかし、上記説明を、添付の図面および請求項と併せると、様々な修正および改造は、関連技術の当業者には明らかにされよう。例の一部として、他の類似した、あるいは、同等の処理、または、アルゴリズム、およびデータ表記は、当業者によって試行されてもよい。さらに、各構成要素、関数、アルゴリズム(例:、など)の名称は単に記述的なもので、限定された意味を持つことを意図しておらず、これらの構成要素、関数、およびアルゴリズムは、適切であればどのような名称で呼んでもよい。本発明における教示の、そのような類似した修正はすべて、本発明の実施形態の範囲に含まれる。
さらに、本発明の実施形態のいくつかの機能は、他の機能の対応する使用なしに、有利に利用される。そのため、上記説明は、これらに限定されることなく、本発明の原理、教示、および実施形態を単に説明するものである。
本明細書で説明した様々な技術の実施形態は、ディジタル電子回路、コンピュータハードウェア、ハンドヘルド電子機器ハードウェア、ファームウェア、ソフトウェア、またはこれらの組み合わせに実装されてもよい。本実施形態は、データ処理装置(例:プログラマブルプロセッサ、コンピュータ、タブレット、または多数のコンピュータによって)によって実行されるか、データ処理装置の動作を制御するために、プログラム、またはソフトウェア製品として、つまり、情報キャリアに有形に具体化されたコンピュータプログラムとして(例:機械可読ストレージ装置、または伝播される信号内において)実装されてもよい。上記のコンピュータプログラムなどのプログラムは、コンパイルされた、あるいは、インタプリタされた言語を含む、如何なる形式のプログラミング言語で記述することが可能であり、スタンドアローンプログラム、モジュール、コンポーネント、サブルーチン、その他コンピューティング環境において使用が適切な装置を含む如何なる形式でも展開可能である。プログラムは、1台のコンピュータ、またはタブレット、複数のコンピュータ、またはタブレット、1つのサイト、または複数のサイトに分散して、通信ネットワーク、または無線ネットワークを介して相互接続して展開し、実行することが可能である。
コンピュータプログラムを実行するのに適切なプロセッサの例として、汎用型および専用型マイクロプロセッサ、および、様々なタイプのディジタルコンピュータ、タブレット、または電子機器の1基以上のプロセッサが挙げられる。一般に、プロセッサは、ROM(Read-only memory)またはRAM(Random access memory)またはその両方から命令とデータを受ける。コンピュータの構成要素は、命令を実行する少なくとも1つのプロセッサと、命令およびデータを格納する1つ以上のメモリ装置を備える。一般に、コンピュータ、または電子機器は、データを受信、送信、および送受信するため、さらに、1つ以上の大容量ストレージ装置(例:磁気ディスク、光磁気ディスク、光ディスク)を有するか、効果的に結合されている。
本実施形態は、バックエンドコンポーネントを含むコンピューティングシステム(例:データサーバ)、ミドルウェアコンポーネントを含むコンピューティングシステム(例:アプリケーションサーバ)、フロンドエンドコンポーネントを含むコンピューティングシステム(例:グラフィカルユーザーインタフェース、またはWebブラウザを有し、これらを介してユーザーは、実装プログラムと相互作用が可能なクライアントコンピュータ)、または、そのようなバックエンド、ミドルウェア、またはフロントエンドコンポーネントを組み合わせた、コンピューティングシステムに実装されてもよい。構成要素は、通信ネットワーク、無線ネットワーク、電気通信ネットワークなどの、ディジタルデータ通信の如何なる形式、または媒体により相互接続されてもよい。通信ネットワーク、または電気通信ネットワークの例として、LAN(local area network)およびWAN(wide area network)がある(例:インターネットやWifiネットワークなどの無線ネットワーク)。
本明細書では、実装された特定の機能について説明してきたが、多くの修正、代替、変更、および等価が発生することを当業者は理解されたい。したがって、本明細書に記載の請求項には、本発明の実施形態の精神と範囲にしたがって、そのようなすべての修正や変更が含まれることを理解されたい。

Claims (21)

  1. インバウンドハンドラ層を形成する複数のインバウンドハンドラと、アウトバウンドハンドラ層を形成する複数のアウトバウンドハンドラと、を有する分散並列システムにおいて分散非同期メッセージのシーケンシングを、少なくとも1つのデータプロセッサを用いて、コンピュータにより実行する方法であって:
    複数のインバウンドハンドラのうちの何れかのインバウンドハンドラが、着信メッセージを含むシーケンスを識別するシーケンス相関値を含む着信メッセージを受信するステップ;
    共有シーケンスストレージにおける前記シーケンスのシーケンスステータスをチェックするステップ;および
    前記シーケンスにおいてメッセージの順序を維持するため、着信メッセージが次に処理するメッセージであるかを判断するステップ;を有し、
    シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラがいずれも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理するメッセージであると判断された場合、その着信メッセージをキューストレージに転送し、次いで、処理のためにアウトバウンドハンドラ層の使用可能なアウトバウンドハンドラによってメッセージを取得し、
    シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、あるいは、キューストレージが前記シーケンスの処理すべきメッセージをすでに含んでいる場合、あるいは、着信メッセージは前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージを共有オーバーフローストレージのメモリに格納し、さらなる処理のために保持する、方法。
  2. 前記シーケンスのメッセージの順序を維持するために、着信メッセージが次に処理すべきメッセージであるか判断する、以下のステップを含む請求項1に記載の方法であって:
    前記シーケンスにおける着信メッセージの順序を示すメッセージランクを判断するステップ;および
    メッセージランクを、前記シーケンスの処理すべき次のメッセージのランクを定義するシーケンスランクと比較するステップ;を有し、
    メッセージランクがシーケンスランクと同一の場合、そのメッセージは、前記シーケンスにおけるメッセージの順序を維持するために、次に処理すべきメッセージと判断され、
    メッセージランクがシーケンスランクと同一でない場合、そのメッセージは、前記シーケンスにおけるメッセージの順序を維持するために次に処理すべきメッセージとは判断されない、方法。
  3. 請求項2に記載の方法であって、アウトバウンドハンドラにおける与えられたシーケンスのメッセージの処理が完了した際に、前記与えられたシーケンスのシーケンスランクがインクリメントされ、シーケンスのシーケンスランクがインクリメントされたとき、オーバーフローストレージが、インクリメントされたシーケンスランクと同一であるメッセージランクを有するメッセージを含む場合、このメッセージをキューストレージに転送する、方法。
  4. 請求項2又は3に記載の方法であって、受信した着信メッセージに、シーケンスのメッセージランクを示すインデックスが付与されていない場合のメッセージランクを判断するステップは、シーケンス内の着信メッセージのランクを示すメッセージランクを着信メッセージに割り当て、割り当てられたメッセージランクをシーケンスストレージに格納することを含む、方法。
  5. 請求項4に記載の方法であって、割り当てられたメッセージランクは、前記インバウンドハンドラ層において最後に受信したメッセージのメッセージランクを、1プラスしてインクリメントしたものに相当する、方法。
  6. 請求項1〜3の何れか1項目に記載の方法であって、インバウンドハンドラにおいて受信した着信メッセージには、シーケンス内のメッセージランクを示すインデックスが付与されている、方法。
  7. 請求項2〜6のいずれか1項記載の方法であって、キューストレージが着信メッセージのシーケンスの、どのメッセージをも含んでおらず、着信メッセージのメッセージランクがシーケンスストレージに示されたシーケンスランクよりも大きい場合、着信メッセージは、シーケンスランクがインクリメントされ着信メッセージのメッセージランクと同等になるまで、オーバーフローストレージに格納される、方法。
  8. 請求項1〜7のいずれか1項に記載の方法であって、アウトバウンドハンドラは非同期に作動することにより、メッセージの送信が可能となり、メッセージを送信後、このメッセージの受け手から肯定応答を受信するまで、別の処理が可能となる、方法。
  9. 請求項1〜8のいずれか1項に記載の方法であって、アウトバウンドハンドラは、メッセージを受け手に送信する配信処理と、受け手から肯定応答を受信する肯定応答処理を行いうるものであり、配信処理および肯定応答処理は独立している、方法。
  10. 請求項1〜9のいずれか1項に記載の方法であって、着信メッセージを受信してから、チェックするステップまで、すべてのインバウンドハンドラが前記シーケンスの別のメッセージを受信することを防止される、インバウンドをロックするステップを、着信メッセージがオーバーフローストレージに格納されるまで、あるいは、キューストレージに送信されるまで実行し、前記インバウンドをロックするステップは、シーケンスストレージに格納されている前記シーケンス専用のミューテックスをロックすることが含まれる、方法。
  11. 請求項1〜10のいずれか1項に記載の方法であって、キューストレージからアウトバウンドハンドラに着信メッセージを転送後、すべての他のアウトバウンドハンドラが前記シーケンスの別のメッセージを受信することを、着信メッセージの処理が完了するまで防止される、アウトバウンドをロックするステップを実行し、アウトバウンドをロックするステップに、シーケンスストレージに格納されている前記シーケンス専用のミューテックスをロックすることが含まれている、方法。
  12. 請求項11に記載の方法であって、アウトバウンドハンドラが利用可能であるとき、シーケンスストレージの中の、前記メッセージのシーケンスのミューテックスをチェックし、ミューテックスがロックされていない場合のみ、前記メッセージを取得する、方法。
  13. 請求項2〜12の何れか1項目に記載の方法であって、シーケンスランクよりも大きいメッセージランクを有するメッセージが最初にオーバーフローストレージに格納され、次に、メッセージのシーケンスとメッセージの何れか一方に割り当てられたタイムアウト値に到達した場合には当該メッセージはオーバーフローストレージから破棄される、方法。
  14. ソフトウェアプログラム命令を含む非一時的コンピュータ可読媒体であって、少なくとも1つのデータプロセッサによるソフトウェアプログラム命令の実行は、請求項1〜13の何れか1項目に記載の方法の実行を含む、非一時的コンピュータ可読媒体。
  15. 非同期メッセージをシーケンシングする分散並列型処理システムであって: インバウンドハンドラ層であって、少なくとも1つのデータプロセッサを含む複数のインバウンドハンドラを含み、複数のインバウンドハンドラのそれぞれは、様々なシーケンスに関連する複数の着信メッセージを独立して受信するように構成されている、複数のインバウンドハンドラを含む、インバウンドハンドラ層;および、
    アウトバウンドハンドラ層であって、少なくとも1つのデータプロセッサを含む複数のアウトバウンドハンドラを含み、複数のアウトバウンドハンドラのそれぞれは、複数の着信メッセージを独立して処理し転送するように構成されている、複数のアウトバウンドハンドラを含む、アウトバウンドハンドラ層、を含む分散並列型処理システムであって;システムは:
    少なくとも1つのメモリを含むストレージ層を含み;当該ストレージ層は:
    - 複数のアウトバウンドハンドラへ伝送される状態にある着信メッセージを格納するキューストレージ;および
    - 共有シーケンスストレージを含み;当該共有シーケンスストレージは:
    - 着信メッセージの各シーケンスのステータスを維持し、更新するためのシーケンスステータスコンテキスト;および
    - インバウンドハンドラからのメッセージを受信し、それらを順次、キューストレージに転送するよう構成された共有オーバーフローストレージ;を含み、
    前記システムは、メッセージのシーケンスにおけるメッセージの順序を維持するために、着信メッセージが、次に処理すべきメッセージであるかどうかを判断するように構成されており、前記システムは:
    - シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラがいずれも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理するメッセージであると判断された場合、その着信メッセージをキューストレージに送信し、次いで、処理のために使用可能なアウトバウンドハンドラによってメッセージを取り出すステップ;および
    - シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、または、キューストレージが前記シーケンスの処理すべきメッセージをすでに含んでいる場合、あるいは、着信メッセージが前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージをオーバーフローストレージのメモリに格納し、さらなる処理のために保持する、ステップを実行するよう構成された非同期メッセージをシーケンシングする分散並列型処理システム。
  16. 複数の並列型インバウンドハンドラおよび複数の並列型アウトバウンドハンドラを有する並列環境において、少なくとも1つのサーバアプリケーションと少なくとも1つのクライアントアプリケーション間で非同期メッセージを処理するために、少なくとも1つのデータプロセッサを用いて、コンピュータにより実行する旅行モニタリング方法であって:
    複数のインバウンドハンドラのうちの1つのインバウンドハンドラにおいて、着信メッセージを含むシーケンスを特定するシーケンス相関値が伴う着信メッセージを受信するステップと;
    シーケンスストレージにおける前記シーケンスのシーケンスステータスをチェックするステップと;
    前記シーケンスにおいてメッセージの順序を維持するため、着信したメッセージが次に処理するメッセージであるかを判断するステップと;を有し、
    シーケンスステータスが、複数のアウトバウンドハンドラのうちのいずれのアウトバウンドハンドラも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理するメッセージであると判断された場合、その着信メッセージをキューストレージに送信し、次いで、処理のために使用可能なアウトバウンドハンドラに転送し、 シーケンスステータスが、アウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、または、キューストレージが前記シーケンスの処理すべきメッセージをすでに含んでいる場合、あるいは、着信メッセージが前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージを共有オーバーフローストレージに格納し、さらなる処理のために保持し、
    メッセージは、乗客に関するデータを含み、シーケンス相関値は、交通サービスのリファレンスに関するデータを含む、旅行モニタリング方法。
  17. 請求項16に記載の方法であって、処理済みのメッセージをアウトバウンドハンドラから、旅行予約システム、航空会社の在庫システム、航空会社のイーチケットシステム、空港の出国管理システム、空港の運用システム、航空会社の運用システム、および、地上業務の運用システムの少なくとも1つに転送する、方法。
  18. 請求項16および17の何れか1項に記載の方法であって、交通サービスのリファレンスは少なくとも、フライトナンバー、日付および予約クラスうちの1つを含む、方法。
  19. 請求項16〜18の何れか1項に記載の方法であって、メッセージは、搭乗客、キャンセルした乗客、追加の乗客の何れか1つを記述する、方法。
  20. 請求項16〜19の何れか1項に記載の方法であって、フライトの出発時刻または、フライト提示の終了、あるいは、プロモーションの終了のうちの何れか1つに関連があるシーケンスタイムアウト値に到達後にオーバーフローストレージに格納されている着信メッセージを削除するため、各着信メッセージにはシーケンスタイムアウト値が付与される、方法。
  21. ソフトウェアプログラム命令を含む非一時的コンピュータ可読媒体であって、少なくとも1つのデータプロセッサによるソフトウェアプログラム命令の実行は、請求項16〜20の何れか1項に記載の方法からなる動作の実行を含む、非一時的コンピュータ可読媒体。
JP2015524671A 2012-08-02 2013-08-01 分散並列環境における非同期メッセージのシーケンシングの方法、システム、およびコンピュータプログラム製品 Active JP6198825B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US13/565,284 2012-08-02
US13/565,284 US8903767B2 (en) 2012-08-02 2012-08-02 Method, system and computer program product for sequencing asynchronous messages in a distributed and parallel environment
EP12368017.5A EP2693337B1 (en) 2012-08-02 2012-08-02 Method, system and computer program products for sequencing asynchronous messages in a distributed and parallel environment
EP12368017.5 2012-08-02
PCT/EP2013/002302 WO2014019701A1 (en) 2012-08-02 2013-08-01 Method, system and computer program product for sequencing asynchronous messages in a distributed and parallel environment

Publications (3)

Publication Number Publication Date
JP2015527658A JP2015527658A (ja) 2015-09-17
JP2015527658A5 JP2015527658A5 (ja) 2017-08-24
JP6198825B2 true JP6198825B2 (ja) 2017-09-20

Family

ID=48953356

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015524671A Active JP6198825B2 (ja) 2012-08-02 2013-08-01 分散並列環境における非同期メッセージのシーケンシングの方法、システム、およびコンピュータプログラム製品

Country Status (5)

Country Link
JP (1) JP6198825B2 (ja)
KR (1) KR101612682B1 (ja)
CN (1) CN104428754B (ja)
IN (1) IN2014DN10080A (ja)
WO (1) WO2014019701A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107093138B (zh) * 2017-04-21 2019-04-30 山东佳联电子商务有限公司 基于分布式无阻塞异步消息处理模式的拍卖竞价系统及其运行方法
WO2018224659A1 (en) * 2017-06-08 2018-12-13 Amadeus S.A.S. Multi-standard message processing
EP3419250B1 (en) * 2017-06-23 2020-03-04 Vestel Elektronik Sanayi ve Ticaret A.S. Methods and apparatus for distributing publish-subscribe messages
CN110865891B (zh) * 2019-09-29 2024-04-12 深圳市华力特电气有限公司 一种异步消息编排方法和装置
CN111045839A (zh) * 2019-12-04 2020-04-21 中国建设银行股份有限公司 分布式环境下基于两阶段事务消息的顺序调用方法及装置
CN111506430B (zh) * 2020-04-23 2024-04-19 上海数禾信息科技有限公司 多任务下数据处理的方法、装置及电子设备
CN111562888B (zh) * 2020-05-14 2023-06-23 上海兆芯集成电路有限公司 存储器自更新的调度方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5588117A (en) * 1994-05-23 1996-12-24 Hewlett-Packard Company Sender-selective send/receive order processing on a per message basis
JPH09101901A (ja) * 1995-10-06 1997-04-15 N T T Data Tsushin Kk マルチプロセスで動作するパーソナルコンピュータ上で行われるプロセス間のメッセージ通信方式及びメッセージ通信方法
US20030182464A1 (en) * 2002-02-15 2003-09-25 Hamilton Thomas E. Management of message queues
US7698267B2 (en) * 2004-08-27 2010-04-13 The Regents Of The University Of California Searching digital information and databases
GB0613195D0 (en) * 2006-07-01 2006-08-09 Ibm Methods, apparatus and computer programs for managing persistence in a messaging network
WO2008105099A1 (ja) * 2007-02-28 2008-09-04 Fujitsu Limited アプリケーション連携制御プログラム、アプリケーション連携制御方法およびアプリケーション連携制御装置
US8392925B2 (en) * 2009-03-26 2013-03-05 Apple Inc. Synchronization mechanisms based on counters
EP2254046B1 (en) * 2009-05-18 2014-07-30 Amadeus S.A.S. A method and system for managing the order of messages
US8495656B2 (en) * 2010-10-15 2013-07-23 Attivio, Inc. Ordered processing of groups of messages

Also Published As

Publication number Publication date
KR101612682B1 (ko) 2016-04-14
WO2014019701A1 (en) 2014-02-06
IN2014DN10080A (ja) 2015-08-21
JP2015527658A (ja) 2015-09-17
CN104428754B (zh) 2018-04-06
CN104428754A (zh) 2015-03-18
KR20150037980A (ko) 2015-04-08

Similar Documents

Publication Publication Date Title
JP6198825B2 (ja) 分散並列環境における非同期メッセージのシーケンシングの方法、システム、およびコンピュータプログラム製品
US8903925B2 (en) Scheduled messages in a scalable messaging system
US9208476B2 (en) Counting and resetting broadcast system badge counters
US10133797B1 (en) Distributed heterogeneous system for data warehouse management
US8139596B2 (en) Communicating prioritized messages to a destination queue from multiple source queues using source-queue-specific priority values
EP2335153B1 (en) Queue manager and method of managing queues in an asynchronous messaging system
US20130067025A1 (en) Target subscription for a notification distribution system
US10592827B2 (en) Throttling solutions into a legacy inventory system during a service disruption
US20130066980A1 (en) Mapping raw event data to customized notifications
US7895328B2 (en) System and method for context-based serialization of messages in a parallel execution environment
US10728205B2 (en) Multi-standard message processing
US20140366039A1 (en) Computer system, computer-implemented method and computer program product for sequencing incoming messages for processing at an application
US8903767B2 (en) Method, system and computer program product for sequencing asynchronous messages in a distributed and parallel environment
EP2693337B1 (en) Method, system and computer program products for sequencing asynchronous messages in a distributed and parallel environment
US20190370353A1 (en) Change notifications for object storage
US8694462B2 (en) Scale-out system to acquire event data
CN110709820B (zh) 多标准消息处理
CN114205354A (zh) 事件管理系统、事件管理方法、服务器及存储介质
CN117178539A (zh) 混合云事件通知管理

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20150831

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20151014

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160502

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170524

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170619

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20170714

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: 20170724

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170822

R150 Certificate of patent or registration of utility model

Ref document number: 6198825

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250