JP2015527658A - Method, system, and computer program product for asynchronous message sequencing in a distributed parallel environment - Google Patents

Method, system, and computer program product for asynchronous message sequencing in a distributed parallel environment Download PDF

Info

Publication number
JP2015527658A
JP2015527658A JP2015524671A JP2015524671A JP2015527658A JP 2015527658 A JP2015527658 A JP 2015527658A JP 2015524671 A JP2015524671 A JP 2015524671A JP 2015524671 A JP2015524671 A JP 2015524671A JP 2015527658 A JP2015527658 A JP 2015527658A
Authority
JP
Japan
Prior art keywords
message
sequence
rank
outbound
messages
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.)
Granted
Application number
JP2015524671A
Other languages
Japanese (ja)
Other versions
JP2015527658A5 (en
JP6198825B2 (en
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 EP12368017.5A external-priority patent/EP2693337B1/en
Priority claimed from US13/565,284 external-priority patent/US8903767B2/en
Application filed by Amadeus SAS filed Critical Amadeus SAS
Publication of JP2015527658A publication Critical patent/JP2015527658A/en
Publication of JP2015527658A5 publication Critical patent/JP2015527658A5/ja
Application granted granted Critical
Publication of JP6198825B2 publication Critical patent/JP6198825B2/en
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)

Abstract

インバウンドハンドラ層を形成する複数のインバウンドハンドラと、アウトバウンドハンドラ層を形成する複数のアウトバウンドハンドラと、を有する分散並列システムにおいて分散非同期メッセージのシーケンシングを、少なくとも1つのデータプロセッサを用いて、コンピュータにより実行する方法であって:複数のインバウンドハンドラのうちの何れかのインバウンドハンドラが、着信メッセージを含むシーケンスを識別するシーケンス相関値を含む着信メッセージを受信するステップ;共有シーケンスストレージにおける前記シーケンスのシーケンスステータスをチェックするステップ;および、前記シーケンスにおいてメッセージの順序を維持するため、着信メッセージが次に処理するメッセージであるかを判断するステップ;を有し、シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラがいずれも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理するメッセージであると判断された場合、その着信メッセージをキューストレージに転送し、次いで、処理のためにアウトバウンドハンドラ層の使用可能なアウトバウンドハンドラによってメッセージを取得し、シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、あるいは、キューストレージが前記シーケンスの処理すべきメッセージをすでに含んでいる場合、あるいは、着信メッセージは前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージを共有オーバーフローストレージのメモリに格納し、さらなる処理のために保持する方法。【選択図】図8BDistributed asynchronous message sequencing by a computer using at least one data processor in a distributed parallel system having a plurality of inbound handlers forming an inbound handler layer and a plurality of outbound handlers forming an outbound handler layer A method in which any of the plurality of inbound handlers receives an incoming message that includes a sequence correlation value that identifies a sequence that includes the incoming message; the sequence status of the sequence in a shared sequence storage; Checking; and determining whether the incoming message is the next message to process in order to maintain the order of the messages in the sequence. And when the sequence status indicates that none of the outbound handlers of the outbound handler layer is currently processing the message of the sequence, and it is determined that the incoming message is a message to be processed next to the sequence, The incoming message is forwarded to queue storage and then retrieved by the outbound handler layer's available outbound handler for processing, and the sequence status is at least one of the outbound handler layer's outbound handlers currently said sequence The queue storage already contains messages to be processed in the sequence, or the incoming message is in the sequence Then when it is determined not to be the message to be processed, and stores the incoming message in the memory of the shared overflow storage, a method of holding for further processing. [Selection] Figure 8B

Description

本発明は、一般に通信システムのデータおよび情報処理に関し、具体的には、分散並列処理環境において、シーケンスの非同期メッセージを処理する方法、装置、およびシステムに関する。   The present invention relates generally to data and information processing in communication systems, and more specifically to a method, apparatus, and system for processing a sequence of asynchronous messages in a distributed parallel processing environment.

サービスコールまたはイベント処理において、分散ソフトウェアアーキテクチャを使用する場合、メッセージの伝送は同期、あるいは非同期で行われる。メッセージは個々のフルレシピエント(Full recipient)に配信およびマルチキャストされ、各マルチキャストメッセージは個別に処理される。   When a distributed software architecture is used in service calls or event processing, message transmission is performed synchronously or asynchronously. Messages are delivered and multicast to individual full recipients, and each multicast message is processed individually.

図1は、一方は呼出システム110であり、もう一方は遠隔システム120である2つのシステム間のメッセージ、またはサービスコールの同期伝送を示し、呼出システム110がメッセージ処理の順序を制御する。この場合、呼出システム110は遠隔処理の結果を待ち、その結果、呼出側は、メッセージをサーバシステム、または遠隔システムで実際に処理する順序に関するマスターとなる。   FIG. 1 shows the synchronous transmission of a message or service call between two systems, one of which is a paging system 110 and the other is a remote system 120, which controls the order of message processing. In this case, the call system 110 waits for the result of the remote processing, so that the caller becomes the master for the order in which messages are actually processed at the server system or remote system.

呼出システム110からの第1メッセージAの伝送111は、遠隔システム120で処理され、次に、処理済みメッセージA121として、呼出システム110に返される。一度、処理済みメッセージAを受信すると、呼出システム110は第2メッセージBの伝送113を、遠隔システム120に向けて行うことができる。第2メッセージBは、次に、遠隔システム120によって処理され、処理済みメッセージB123は呼出システム110に返される。   Transmission 111 of the first message A from the calling system 110 is processed at the remote system 120 and then returned to the calling system 110 as a processed message A121. Once the processed message A is received, the call system 110 can transmit the second message B 113 to the remote system 120. The second message B is then processed by the remote system 120 and the processed message B 123 is returned to the calling system 110.

このフローチャートで示した例は、呼出システム110と遠隔システム120間の同期の呼出し、またはメッセージの処理の順番を示し、サーバシステムまたは遠隔システム120の第1メッセージAの処理112が、第2メッセージBの処理114の前に行われていることがわかる。   The example shown in this flow chart shows the sequence of synchronous calls or message processing between the calling system 110 and the remote system 120, and the processing 112 of the first message A of the server system or remote system 120 is the second message B. It can be seen that this process is performed before the process 114.

図2は、呼出システム210とサーバシステムまたは遠隔システム220の間のメッセージまたはサービスコールの非同期伝送について示し、この呼出システム210は、サービスコールまたはメッセージをサーバシステムまたは遠隔システム220に送信し、これらのシステム220は、それ自体のスケジューリングに従って、メッセージの処理を行う。クライアントシステム、または呼出システム210は、メッセージ処理のタイミングの制御を緩める。   FIG. 2 shows the asynchronous transmission of a message or service call between the call system 210 and the server system or remote system 220, which sends the service call or message to the server system or remote system 220, and these The system 220 processes messages according to its own scheduling. The client system or call system 210 relaxes control of message processing timing.

呼出システム210からの第1メッセージAの伝送211は、遠隔システム220により処理される。その間に、呼出システム210は、第2メッセージBの遠隔システム220への伝送213を開始している。第2メッセージBは、次に、遠隔システム220によって処理されるが、メッセージAが処理されるまで、処理済みメッセージBを呼出システム210に返す判断はできない。   Transmission 211 of the first message A from the calling system 210 is processed by the remote system 220. Meanwhile, paging system 210 has begun transmitting 213 second message B to remote system 220. The second message B is then processed by the remote system 220, but it cannot be determined to return the processed message B to the calling system 210 until message A is processed.

このフローチャートで示した例は、非同期の呼出し、または呼出システム210と遠隔システム220間のメッセージの処理の順番を示し、サーバシステムまたは遠隔システム220の第1メッセージAの処理212が、第2メッセージBの処理214とほぼ同時に行われることを示す。第2メッセージBを第1メッセージAより先に処理することも可能であるが、メッセージAおよびBを含むシーケンスの適合性に重大な影響を与える可能性がある。   The example shown in this flowchart shows the order of asynchronous calls or message processing between the call system 210 and the remote system 220, and the processing 212 of the first message A of the server system or remote system 220 is changed to the second message B. It is shown that the process 214 is performed almost simultaneously. Although it is possible to process the second message B before the first message A, it may have a significant impact on the suitability of the sequence containing messages A and B.

図3は、分散システムにおけるサービスコールまたはメッセージの並列処理を例証するフローチャートである。分散システムにおいて、障害許容力とスケーラビリティの要件を満たすために、サービスコールまたはメッセージは、インスタンス化による並列処理および/またはマルチスレッディングでの処理が行われる。この図では、処理システムの310−1、310−2、…、および310−nに該当するインスタンス1、2、3、…、およびnが、メッセージキュー340の4つのメッセージ1、2、3および4をインバウンドシーケンスによって処理する。   FIG. 3 is a flowchart illustrating parallel processing of service calls or messages in a distributed system. In distributed systems, service calls or messages are processed in parallel and / or multi-threaded by instantiation to meet fault tolerance and scalability requirements. In this figure, instances 1, 2, 3,..., And n corresponding to processing systems 310-1, 310-2,..., And 310-n are represented by four messages 1, 2, 3, and 4 is processed by the inbound sequence.

並列処理は、連続するサービスコールやメッセージを処理し完了させる順序を保証するものではない。しかし、サービスコールやメッセージ処理は、関連するイベントやメッセージ間のシーケンスの遂行を強く求めることがある。   Parallel processing does not guarantee the order in which consecutive service calls and messages are processed and completed. However, service calls and message processing may strongly require execution of sequences between related events and messages.

図3に示す例では、メッセージ1はインスタンス2によって処理され、メッセージ2はインスタンス3によって処理され、メッセージ3はインスタンス1によって処理され、メッセージ4は、メッセージ2のようにインスタンス3によって処理される。メッセージの処理は調整されないので、メッセージ2が最初に処理され、次に、メッセージ1、メッセージ4、最後にメッセージ3が処理される。これは一貫性のない処理順序となる。   In the example shown in FIG. 3, message 1 is processed by instance 2, message 2 is processed by instance 3, message 3 is processed by instance 1, and message 4 is processed by instance 3 as message 2. Since message processing is not coordinated, message 2 is processed first, then message 1, message 4, and finally message 3. This is an inconsistent processing order.

この図では、シーケンスは、サービスコールやメッセージの分散システムによる伝送および/または処理に関する順序を参照する。この順序は通常、業務処理、または業界標準により進められる。この順序に従わないことにより、処理が十分に行われない結果となり、最悪の場合は、格納されている機能データの不可逆的な破損や呼び出されたデータベースの破損に至る。   In this figure, the sequence refers to the order for service call and message transmission and / or processing by the distributed system. This order is usually driven by business processing or industry standards. Failure to follow this order results in inadequate processing, which in the worst case results in irreversible corruption of the stored functional data and corruption of the called database.

図4は、分散処理システムにおける非同期コールまたはメッセージの並列処理であり、メッセージ処理が順序通りに実行されないリスク、およびデータ破損のリスクが生じることを例証するフローチャートである。   FIG. 4 is a flow chart illustrating the parallel processing of asynchronous calls or messages in a distributed processing system and the risk of message processing not being performed in order and the risk of data corruption.

同期環境では、遠隔システムへのメッセージ伝送を順次実行し、関連するメッセージ間のシーケンスフローを事実上制御するエミッタシステムまたは呼出システムによってシーケンシングが確保される。   In a synchronous environment, sequencing is ensured by an emitter system or paging system that sequentially executes message transmissions to remote systems and effectively controls the sequence flow between related messages.

遠隔システム420でのメッセージ処理の終了を判断できないので、このシーケンシングは、エミッタシステムまたは呼出システム410が非同期分散処理を取り扱う必要性が生じると不可能になる。図4は、第1メッセージAの呼出システム410から遠隔システム420への伝送411に続く、第2メッセージBの伝送413の、このリスクを示す。第2メッセージBの処理414は、第1メッセージAの処理414の処理412の前に開始する。したがって、メッセージ処理が逆になり、処理が十分に行われない結果となり、最悪の場合は、格納されている機能データの不可逆的な破損やデータベースの破損に至る。   Since it is not possible to determine the end of message processing at the remote system 420, this sequencing is not possible when the emitter system or paging system 410 needs to handle asynchronous distributed processing. FIG. 4 illustrates this risk of transmission 413 of the second message B following transmission 411 of the first message A from the calling system 410 to the remote system 420. The process 414 of the second message B starts before the process 412 of the process 414 of the first message A. Therefore, the message processing is reversed, resulting in insufficient processing. In the worst case, the stored functional data is irreversibly damaged or the database is damaged.

したがって、本発明は、前述の問題を緩和し、格納する機能データやデータベースの不可逆的な破損を避けることを目的とする。   Accordingly, an object of the present invention is to alleviate the above-mentioned problems and to avoid irreversible damage to stored functional data and databases.

本発明の一実施形態は、インバウンドハンドラ層を形成する複数のインバウンドハンドラと、アウトバウンドハンドラ層を形成する複数のアウトバウンドハンドラと、を有する分散並列システムにおいて、分散非同期メッセージのシーケンシングをコンピュータで実行する方法を提供し、この方法は、少なくとも1台のデータプロセッサを用いて実行し:
複数のインバウンドハンドラのうちの何れかのインバウンドハンドラにおいて、着信メッセージを含むシーケンスを特定するシーケンス相関値が付与された着信メッセージを受信するステップ;および
共有シーケンスストレージにおける前記シーケンスのシーケンスステータスをチェックし、前記シーケンスにおいてメッセージの順序を維持するため、着信メッセージが次に処理すべきメッセージであるかを判断するステップを含み、
シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラがいずれも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理すべきメッセージであると判断された場合、その着信メッセージを共有キューストレージに転送し、次いで、処理のために使用可能なアウトバウンドハンドラによってメッセージを取得し、
シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、または、共有キューストレージが前記シーケンスの処理されるメッセージをすでに含んでいる場合、あるいは、着信メッセージは前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージを共有オーバーフローストレージのメモリに格納し、さらなる処理のために保持する。
One embodiment of the present invention performs distributed asynchronous message sequencing on a computer in a distributed parallel system having a plurality of inbound handlers forming an inbound handler layer and a plurality of outbound handlers forming an outbound handler layer. A method is provided that is performed using at least one data processor:
Receiving an incoming message with a sequence correlation value identifying a sequence including the incoming message in any of the plurality of inbound handlers; and checking the sequence status of the sequence in the shared sequence storage; Determining whether the incoming message is the next message to be processed in order to maintain the order of the messages in the sequence;
If the sequence status indicates that none of the outbound handler layer's outbound handlers is currently processing messages in the sequence, and it is determined that the incoming message is a message to be processed next to the sequence, Forward the incoming message to shared queue storage, then get the message by an outbound handler available for processing,
If the sequence status indicates that at least one of the outbound handler layer's outbound handlers is currently processing the message of the sequence, or if the shared queue storage already contains the message to be processed of the sequence Alternatively, if it is determined that the incoming message is not a message to be processed next in the sequence, the incoming message is stored in the shared overflow storage memory and retained for further processing.

したがって、分散並列システムは、:多くのシーケンスに関係するメッセージを受信する、インバウンドハンドラ層に互いに平行に配列されたインバウンドハンドラ;および、共有シーケンスストレージ、キューストレージおよび共有オーバーフローストレージを含み、インバウンドハンドラからメッセージを受信し、それらをメモリに格納するように構成されたストレージ層、を含むルーターと見なすことができる。シーケンスストレージは、オーバーフローストレージを含んでもよい。分散並列システムは、同システムが、それぞれのシーケンス内で正確なメッセージのシーケンシングを確保しながら、アウトバウンドハンドラ層において互いに平行に配列され、処理のために共有キューストレージからメッセージを取得するように構成されたアウトバウンドハンドラをさらに含む。アウトバウンドハンドラは、処理を行い、場合によっては正しい受け手に配信するために、メッセージを受信するように構成される。   Thus, a distributed parallel system includes: an inbound handler arranged in parallel to each other in an inbound handler layer that receives messages related to many sequences; and a shared sequence storage, a queue storage, and a shared overflow storage from an inbound handler It can be considered a router that includes a storage layer configured to receive messages and store them in memory. The sequence storage may include overflow storage. A distributed parallel system is configured so that it is arranged in parallel with each other in the outbound handler layer and retrieves messages from shared queue storage for processing, ensuring accurate message sequencing within each sequence A further outbound handler. The outbound handler is configured to receive a message for processing and possibly delivery to the correct recipient.

オーバーフローストレージおよびシーケンスストレージは、インバウンドハンドラおよびアウトバウンドハンドラに共有される。それらは、並列インバウンドハンドラおよび並列アウトバウンドハンドラによって共有して使用される。   Overflow storage and sequence storage are shared by inbound handlers and outbound handlers. They are shared and used by parallel inbound handlers and parallel outbound handlers.

したがって、本発明は、分散環境における様々なシーケンスの並列処理を実行しながら、同一のシーケンスに関するメッセージの順序を維持するためのソリューションを提供する。さらに、インバウンドハンドラをアウトバウンドハンドラから切り離すことによって、受け手のスループットからエミッタのスループットを分離することが可能になる。さらに、インバウンドハンドラおよびアウトバウンドハンドラの数を、高度かつ個別に拡張できる。また、本発明は、シーケンスとインバウンドハンドラまたはアウトバウンドハンドラ間に類似性が生じることを避けるので、インバウンドハンドラまたはアウトバウンドハンドラは、どのシーケンスのメッセージでも処理できる。したがって、一部のハンドラやアウトバウンドハンドラの停止が、メッセージの処理に影響しないので、本発明は、強い障害許容性を提供する。   Thus, the present invention provides a solution for maintaining the order of messages for the same sequence while performing parallel processing of various sequences in a distributed environment. Further, separating the inbound handler from the outbound handler makes it possible to separate the emitter throughput from the receiver throughput. In addition, the number of inbound and outbound handlers can be advanced and individually expanded. The present invention also avoids similarities between sequences and inbound or outbound handlers so that inbound or outbound handlers can process any sequence of messages. Therefore, the present invention provides strong fault tolerance because some handlers and outbound handlers do not affect message processing.

本発明の方法はさらに、以下に示すさらなる機能およびステップの何れかを含んでよい。   The method of the present invention may further include any of the additional functions and steps shown below.

一実施形態において、前記シーケンスのメッセージの順序を維持するために、着信メッセージが次に処理すべきメッセージであるかどうかの判断は:
・ 前記シーケンスにおける着信メッセージの順序を示すメッセージランクを判断するステップ;および
・ メッセージランクを、前記シーケンスの処理すべき次のメッセージのランクを定義するシーケンスランクと比較するステップ;を含み、
・ メッセージランクがシーケンスランクと同一の場合、そのメッセージは、前記シーケンスにおけるメッセージの順序を維持するために、次に処理すべきメッセージと判断され;
・ メッセージランクがシーケンスランクよりも大きい場合、そのメッセージは、前記シーケンスにおけるメッセージの順序を維持するために、次に処理すべきメッセージとは判断しない。
In one embodiment, to maintain the order of messages in the sequence, the determination of whether an incoming message is the next message to process is:
Determining a message rank indicating the order of incoming messages in the sequence; andcompare the message rank with a sequence rank defining a rank of the next message to be processed in the sequence;
If the message rank is the same as the sequence rank, the message is determined to be the next message to be processed in order to maintain the order of the messages in the sequence;
If the message rank is greater than the sequence rank, the message is not considered the next message to be processed in order to maintain the order of the messages in the sequence.

シーケンスに含まれ、特定の順序に処理されるべきメッセージは、メッセージランク番号を付与され、これは現在のメッセージランクの記述として参照される。メッセージランクは、シーケンス内のメッセージの順序を定義する。メッセージにはメッセージ発信者または、サードパーティによってメッセージランクが付与されることがある。メッセージランクは、シーケンスのメッセージの到着順に応じて、システムにより割り当てられる場合もある。   Messages that are included in the sequence and are to be processed in a particular order are given a message rank number, which is referred to as a description of the current message rank. Message rank defines the order of messages in a sequence. A message rank may be given to a message by a message originator or a third party. The message rank may be assigned by the system depending on the order of arrival of the messages in the sequence.

本明細書の記述通り、シーケンスランクは、与えられたシーケンスのどのメッセージが次に処理すべきかを定義する、つまり、次に処理されるべきメッセージが有するべきメッセージランクを定義する。   As described herein, the sequence rank defines which message of a given sequence should be processed next, that is, the message rank that the message to be processed next should have.

シーケンスランクは、シーケンスストレージ内に示されることが好ましい。   The sequence rank is preferably indicated in the sequence storage.

典型的に、アウトバウンドハンドラによってメッセージを処理することは、アウトバウンドハンドラがメッセージを受け手に送信または配信することを意味する。 Typically, processing a message by an outbound handler means that the outbound handler sends or delivers the message to the recipient.

有利なことに、アウトバウンドハンドラにおいて与えられたシーケンスのメッセージの処理が完了したら、前記与えられたシーケンスのシーケンスランクは、インクリメントされる。 Advantageously, once processing of a given sequence of messages in the outbound handler is complete, the sequence rank of the given sequence is incremented.

シーケンスのシーケンスランクをインクリメントする際、方法は、オーバーフローストレージに、メッセージランクがインクリメントされ、シーケンスランクと同等であるメッセージが含まれるかをチェックし、次いで、このメッセージをキューストレージに転送することが好ましい。   When incrementing the sequence rank of a sequence, the method preferably checks whether the overflow storage contains a message whose message rank is incremented and is equal to the sequence rank, and then forwards this message to the queue storage. .

有利な実施形態によれば、受信した着信メッセージに、シーケンス内でのメッセージランクを示すインデックスが付与されていない場合のメッセージランクを判断するステップは、シーケンス内の着信メッセージのランクを示すメッセージランクを着信メッセージに割り当て、割り当てられたメッセージランクをシーケンスストレージに格納することを含む。   According to an advantageous embodiment, the step of determining the message rank when the received incoming message is not given an index indicating the message rank in the sequence comprises the step of determining the message rank indicating the rank of the incoming message in the sequence: Assigning to incoming messages and storing the assigned message rank in sequence storage.

割り当てられたメッセージランクは、前記シーケンスに1を加えてインクリメントした、インバウンドハンドラの任意の1箇所において最後に受信したメッセージのランクに相当していることが好ましい。したがって、着信メッセージが、前記シーケンスの第1メッセージであれば、メッセージランクは1となる。あるインバウンドハンドラで受信した前のメッセージのメッセージランクがNであれば、新たに着信したメッセージに割り当てられるメッセージランクはN+1となる。 The assigned message rank preferably corresponds to the rank of the last message received at any one place in the inbound handler, incremented by adding 1 to the sequence. Therefore, if the incoming message is the first message in the sequence, the message rank is 1. If the message rank of the previous message received by a certain inbound handler is N, the message rank assigned to the newly received message is N + 1.

別の有利な実施形態では、インバウンドハンドラで受信した着信メッセージには、シーケンス内でのメッセージランクを示すインデックスが付与されている。   In another advantageous embodiment, incoming messages received by the inbound handler are given an index that indicates the message rank in the sequence.

メッセージランクがシーケンスランクよりも大きい場合、シーケンスのステータスを「保留(pending)」に設定することが好ましい。したがって、「保留」は、オーバーフローストレージ領域は、与えられたシーケンスの少なくとも1つのメッセージを含むが、この(これらの)メッセージのメッセージランクは、シーケンスランクと同等ではないことを意味する。 If the message rank is greater than the sequence rank, it is preferable to set the status of the sequence to “pending”. Thus, “pending” means that the overflow storage area contains at least one message of a given sequence, but the message rank of this (these) messages is not equal to the sequence rank.

どのアウトバウンドハンドラも現在、前記シーケンスのメッセージを処理しておらず、そのシーケンスのメッセージがオーバーフローストレージ領域にない場合、典型的に、シーケンスステータスは、「待つ(waiting)」に設定される。少なくとも1つのアウトバウンドハンドラが現在、前記シーケンスのメッセージを処理している場合、典型的にシーケンスステータスは「処理中(processing)」に設定される。 If no outbound handler is currently processing the sequence message and the sequence message is not in the overflow storage area, typically the sequence status is set to “waiting”. If at least one outbound handler is currently processing a message of the sequence, typically the sequence status is set to “processing”.

有利なことに、キューストレージが着信メッセージのシーケンスのメッセージを含まない場合、そして、着信メッセージのメッセージランクがシーケンスストレージに示されるシーケンスランクよりも大きい場合、着信メッセージは、シーケンスランクがインクリメントされ、着信メッセージのメッセージランクと同等になるまで、オーバーフローストレージに格納される。   Advantageously, if the queue storage does not contain a message in the sequence of incoming messages, and if the message rank of the incoming message is greater than the sequence rank indicated in the sequence storage, the incoming message is incremented by the sequence rank and the incoming message It is stored in overflow storage until it is equal to the message rank of the message.

したがって、メッセージにメッセージの発信者または第三者からメッセージランクが付与されていて、メッセージランクがシーケンスランクよりも大きい場合、メッセージは、オーバーフローストレージに格納される。他のメッセージランクの低いメッセージが処理される場合、メッセージランクが、先に格納したメッセージのメッセージランクに到達するまで、シーケンスランクはインクリメントされる。このメッセージは、次にシーケンスストレージ、より具体的には、オーバーフローストレージからリリースされ、一度、キューストレージおよびインバウンドハンドラが、このシーケンスのメッセージを格納せず、処理しなくなると、キューストレージに送信されることがある。 Thus, if a message is given a message rank from the message originator or a third party and the message rank is greater than the sequence rank, the message is stored in overflow storage. If other lower message rank messages are processed, the sequence rank is incremented until the message rank reaches the message rank of the previously stored message. This message is then released from sequence storage, more specifically overflow storage, and once queue storage and inbound handlers have not stored and cannot process this sequence of messages, they are sent to queue storage. Sometimes.

同様のことは、メッセージランクは付与されないものの、到着順に応じてシステムによりメッセージランクが割り当てられるメッセージについても適用される。 The same applies to messages that are not assigned a message rank but are assigned a message rank by the system according to the order of arrival.

有利なことに、アウトバウンドハンドラにより、メッセージが適切に処理された場合、そのメッセージは、キューストレージから削除される。   Advantageously, if the message is properly processed by the outbound handler, the message is deleted from the queue storage.

有利なことに、アウトバウンドハンドラは非同期に作動することにより、メッセージの送信が可能となり、メッセージを送信後、このメッセージの受け手から肯定応答を受信するまで、別の処理が可能となる。   Advantageously, the outbound handler operates asynchronously, allowing the message to be sent and allowing further processing after sending the message until an acknowledgment is received from the recipient of the message.

有利な実施形態によると、アウトバウンドハンドラはメッセージを受け手に送信する配信処理と、受け手から肯定応答を受信する肯定応答処理を含む。配信処理と肯定応答処理は、独立して作動するので、配信処理は、メッセージ送信後すぐに使用可能となる。   According to an advantageous embodiment, the outbound handler includes a delivery process for sending a message to the recipient and an acknowledgment process for receiving an acknowledgment from the recipient. Since the delivery process and the acknowledgment process operate independently, the delivery process can be used immediately after sending the message.

有利なことに、着信メッセージを受信し、チェックステップに進むまで、この方法は、着信メッセージがシーケンスストレージに格納されるか、キューストレージに送信されるまで、すべてのインバウンドハンドラが、前記シーケンスの他のメッセージを受信することを停止される、インバウンドロックステップを実行することを含む。   Advantageously, until an incoming message is received and proceeds to the checking step, this method ensures that all inbound handlers will receive the rest of the sequence until the incoming message is stored in sequence storage or sent to queue storage. Performing an inbound lock step that is stopped from receiving the message.

有利なことに、同一シーケンスの他のメッセージがアウトバウンドハンドラによって送信され、処理される間に、着信メッセージは、インバウンドハンドラによって受け入れられることが可能である。着信メッセージがロックからリリースされるために待つ必要が生じる状況は以下に限定される:
・ 別の着信メッセージがストレージ層に格納されているか、インバウンドハンドラによって受信されている場合;および
・ 前記シーケンスのメッセージに対する受け手の応答が、アウトバウンドハンドラによって受信され、処理されている場合。アウトバウンドハンドラが受け手から応答(肯定応答)を受信した場合、シーケンス、対応するランク、もしあれば、前記シーケンスに送信する次のメッセージを探す時間、およびランクのインクリメントはロックされる。
Advantageously, incoming messages can be accepted by the inbound handler while other messages in the same sequence are sent and processed by the outbound handler. Situations where an incoming message needs to wait for release from lock are limited to:
If another incoming message is stored in the storage layer or received by the inbound handler; and if the recipient's response to the sequence of messages is received and processed by the outbound handler. If the outbound handler receives a response (acknowledgment) from the recipient, the sequence, the corresponding rank, if any, the time to look for the next message to send to the sequence, and the rank increment are locked.

インバウンドロックステップに、シーケンスストレージに格納されている前記シーケンス専用のミューテックスをロックすることが含まれていることが好ましい。 The inbound lock step preferably includes locking the sequence-specific mutex stored in the sequence storage.

着信メッセージを受信すると、インバウンドハンドラは、前記着信メッセージのシーケンスのシーケンス相関値をチェックし、その着信メッセージを受け取る前に、前記シーケンスのミューテックスパラメータを読むことが好ましい。ミューテックスがロックされていなければ、インバウンドハンドラは着信メッセージを受け取る。ミューテックスがロックされていると、着信メッセージはミューテックスがリリースされるのを待つ。 Upon receipt of an incoming message, the inbound handler preferably checks the sequence correlation value of the sequence of incoming messages and reads the mutex parameters of the sequence before receiving the incoming message. If the mutex is not locked, the inbound handler receives an incoming message. If the mutex is locked, the incoming message waits for the mutex to be released.

より具体的には、ミューテックスは、シーケンスストレージに含まれるシーケンスレジスターに格納される。 More specifically, the mutex is stored in a sequence register included in the sequence storage.

有利なことに、インバウンドハンドラおよびアウトバウンドハンドラのシーケンス1つに対し、ミューテックスは1つだけ存在する。キューストレージのストレージキューは、与えられたシーケンスに対し、アウトバウンドハンドラ層がそのシーケンスのメッセージの処理を完了するまで、1つのメッセージのみがアウトバウンドハンドラに伝播されることを確実にする。   Advantageously, there is only one mutex per sequence of inbound and outbound handlers. A storage queue in queue storage ensures that for a given sequence, only one message is propagated to the outbound handler until the outbound handler layer has finished processing the messages in that sequence.

アウトバウンドロックステップに、シーケンスストレージに格納されている前記シーケンス専用のミューテックスをロックすることが含まれていることが好ましい。   Preferably, the outbound lock step includes locking the sequence-specific mutex stored in the sequence storage.

有利なことに、アウトバウンドハンドラが使用可能である場合、アウトバウンドハンドラは、処理が可能なメッセージがないかキューストレージをチェックし、前記メッセージを取り出して、処理を行う。アウトバウンドハンドラが使用可能であれば、アウトバウンドハンドラは、処理可能なメッセージがないか、キューストレージ850をチェックすることが好ましい。   Advantageously, if an outbound handler is available, the outbound handler checks the queue storage for messages that can be processed, retrieves the messages, and processes them. If an outbound handler is available, the outbound handler preferably checks the queue storage 850 for messages that can be processed.

メッセージがあれば、このメッセージは、前記与えられたシーケンスに対し、自動的に修正され、処理される。 If there is a message, this message is automatically modified and processed for the given sequence.

一実施形態において、着信メッセージのシーケンスストレージ、具体的には、オーバーフローストレージへの格納時に、インバウンドハンドラは肯定応答メッセージを送信する。   In one embodiment, when storing incoming messages in sequence storage, specifically overflow storage, the inbound handler sends an acknowledgment message.

典型的に、肯定応答メッセージは、メッセージの発信者に送信される。   Typically, an acknowledgment message is sent to the originator of the message.

有利なことに、シーケンスランクよりも大きいメッセージランクを有するメッセージが、そのメッセージランクがシーケンスランク(つまり、次に処理されるメッセージのランク)に合致しない限り、オーバーフローストレージに格納され、メッセージシーケンスはロックされる。   Advantageously, messages with a message rank greater than the sequence rank are stored in overflow storage and the message sequence is locked unless the message rank matches the sequence rank (ie, the rank of the next message to be processed). Is done.

シーケンスランクよりも大きいメッセージランクを有するメッセージが最初にオーバーフローストレージに格納され、次に、メッセージのシーケンスに割り当てられたタイムアウト値に到達した後、オーバーフローストレージから破棄されることが好ましい。別の方法として、または追加として、シーケンスランクよりも大きいメッセージランクを有するメッセージが最初にオーバーフローストレージに格納され、次に、メッセージに割り当てられたタイムアウト値に到達した後、オーバーフローストレージから破棄される。   Preferably, messages having a message rank greater than the sequence rank are first stored in the overflow storage and then discarded from the overflow storage after reaching the timeout value assigned to the sequence of messages. Alternatively or additionally, messages having a message rank greater than the sequence rank are first stored in the overflow storage and then discarded from the overflow storage after reaching the timeout value assigned to the message.

別の実施形態では、本発明は、ソフトウェアプログラム命令を含む非一時的コンピュータ可読媒体に関し、少なくとも1台のデータプロセッサによるソフトウェアプログラム命令の実行は、本発明による方法の実行を含む動作の実行となる。   In another embodiment, the invention relates to a non-transitory computer readable medium comprising software program instructions, wherein execution of the software program instructions by at least one data processor is an execution of an operation comprising execution of a method according to the invention. .

他の実施形態では、本発明は、非同期メッセージのシーケンシングを行う分散並列型処理システムに関し、分散並列型処理システムは:
・ それぞれが、様々なシーケンスに関連する複数の着信メッセージを独立して受信するように構成されている、少なくとも1つのデータプロセッサを含む複数のインバウンドハンドラ;
・ それぞれが、複数の着信メッセージを独立して処理し、転送する、少なくとも1つのデータプロセッサを含む複数のアウトバウンドハンドラ;および
・ ストレージ層を含み、前記ストレージ層は、少なくとも1つのメモリと:
・ 複数のアウトバウンドハンドラへ伝送される状態にある着信メッセージを格納するキューストレージ;および
・ シーケンスストレージ、を含み、前記シーケンスストレージは、着信メッセージのシーケンスのステータスを維持し、更新するシーケンスステータスコンテキスト(802)、およびインバウンドハンドラからのメッセージを受信し、それらを順次、キューストレージに転送するよう構成されたオーバーフローストレージ、を含む。
本システムも、着信メッセージが、このメッセージのシーケンスにおけるメッセージの順序を維持するため、次に処理すべきメッセージであるかどうかを判断し、少なくとも1つのデータプロセッサにより実行される以下の処理を実行するよう構成されている。
シーケンスステータスが、アウトバウンドハンドラがいずれも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理するメッセージであると判断された場合、その着信メッセージをキューストレージに転送し、次いで、処理のために使用可能なアウトバウンドハンドラに転送する。
シーケンスステータスが、アウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、または、キューストレージが前記シーケンスの処理されるメッセージをすでに含んでいる場合、あるいは、着信メッセージが前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージを共有オーバーフローストレージ格納し、さらなる処理のために保持する。
In another embodiment, the invention relates to a distributed parallel processing system that performs asynchronous message sequencing, the distributed parallel processing system comprising:
A plurality of inbound handlers including at least one data processor, each configured to independently receive a plurality of incoming messages associated with various sequences;
A plurality of outbound handlers including at least one data processor, each independently processing and forwarding a plurality of incoming messages; and a storage layer, said storage layer comprising at least one memory:
A queue storage for storing incoming messages in a state to be transmitted to a plurality of outbound handlers; and a sequence storage, wherein the sequence storage maintains a status of the sequence of incoming messages and updates a sequence status context (802) ), And overflow storage configured to receive messages from inbound handlers and forward them sequentially to queue storage.
The system also determines whether the incoming message is the next message to be processed in order to maintain the message order in this sequence of messages, and performs the following processing executed by at least one data processor: It is configured as follows.
If the sequence status indicates that none of the outbound handlers is currently processing messages in the sequence and it is determined that the incoming message is a message to be processed next to the sequence, the incoming message is queued. And then forward to an outbound handler that is available for processing.
If the sequence status indicates that at least one of the outbound handlers is currently processing messages for the sequence, or if the queue storage already contains messages to be processed for the sequence, or an incoming message Is determined not to be the next message to be processed in the sequence, the incoming message is stored in shared overflow storage and retained for further processing.

追加の実施形態において、ストレージ層のキューストレージおよびシーケンスストレージは、インメモリーデータまたはファイルベースストレージに実装される。別の方法として、ストレージ層のキューストレージおよびシーケンスストレージは、クライアント/サーバストレージデータベースに実装される。   In additional embodiments, storage layer queue storage and sequence storage are implemented in in-memory data or file-based storage. Alternatively, storage layer queue storage and sequence storage are implemented in a client / server storage database.

シーケンスステータスのチェックには、前記シーケンスのシーケンス相関値に基づくシーケンスのステータスを取得することを含んでいることが好ましい。   Preferably, the checking of the sequence status includes obtaining the status of the sequence based on the sequence correlation value of the sequence.

別の実施形態において、本発明は、複数の並列インバウンドハンドラと複数の並列アウトバウンドハンドラを有する並列環境における少なくとも1つのサーバプリケーションと少なくとも1つのクライアントアプリケーション間で非同期メッセージを処理するためにコンピュータにより実施される旅行モニタリング方法に関し、この方法は、少なくとも1つのデータプロセッサで以下のステップを実行する:
・ 複数の並列インバウンドハンドラのうちの1つのインバウンドハンドラにおいて着信メッセージを含むシーケンスを特定するシーケンス相関値が付与された着信メッセージを受信し;
・ シーケンスストレージにおける前記シーケンスのシーケンスステータスをチェックし;
・ 前記シーケンスにおいてメッセージの順序を維持するため、着信したメッセージが次に処理するメッセージであるかを判断し;
シーケンスステータスが、複数の並列アウトバウンドハンドラのうちのいずれのアウトバウンドハンドラも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理するメッセージであると判断された場合、その着信メッセージをキューストレージに送信し、次いで、処理のために使用可能なアウトバウンドハンドラに転送し;
シーケンスステータスが、アウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、あるいは、キューストレージが前記シーケンスの処理されるメッセージをすでに含んでいる場合、あるいは、着信メッセージが前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージを共有オーバーフローストレージに格納し、さらなる処理のために保持し;
メッセージは、乗客に関するデータと、交通サービスのリファレンスに関する、シーケンス相関値を含むデータを含む。
In another embodiment, the invention is implemented by a computer to process asynchronous messages between at least one server application and at least one client application in a parallel environment having multiple parallel inbound handlers and multiple parallel outbound handlers. With regard to the travel monitoring method to be performed, this method performs the following steps with at least one data processor:
Receiving an incoming message with a sequence correlation value specifying a sequence including the incoming message in one inbound handler of a plurality of parallel inbound handlers;
Check the sequence status of the sequence in the sequence storage;
Determining whether the incoming message is the next message to be processed in order to maintain the message order in the sequence;
Sequence status indicates that none of the multiple outbound outbound handlers is currently processing messages in the sequence, and the incoming message is determined to be the next message to be processed after the sequence If so, send the incoming message to queue storage and then forward it to an outbound handler available for processing;
If the sequence status indicates that at least one of the outbound handlers is currently processing a message of the sequence, or if the queue storage already contains a message to be processed of the sequence, or an incoming message Is determined not to be the next message to be processed in the sequence, the incoming message is stored in the shared overflow storage and retained for further processing;
The message includes data relating to passengers and data including sequence correlation values relating to traffic service references.

本発明の方法はさらに、以下に示すさらなる機能およびステップの何れか1つを含む。   The method of the present invention further includes any one of the following additional functions and steps.

一度、処理されると、メッセージは、アウトバウンドハンドラから以下のうちの少なくとも1つに転送される。旅行予約システム、航空会社の在庫システム、航空会社のイーチケットシステム、空港の出国管理システム、空港の運用システム、航空会社の運用システム、地上業務の運用システム。 Once processed, the message is forwarded from the outbound handler to at least one of the following: Travel reservation system, airline inventory system, airline e-ticket system, airport departure control system, airport operation system, airline operation system, ground service operation system.

一実施形態では、交通サービスのリファレンスとして、フライトナンバー、日付および予約クラス以のうち少なくとも1つを含む。   In one embodiment, the traffic service reference includes at least one of a flight number, date and booking class.

一実施形態におけるメッセージは、搭乗客、キャンセルした搭乗客、追加の乗客のうち少なくとも1つを明示する。 The message in one embodiment specifies at least one of a passenger, a canceled passenger, or an additional passenger.

一実施形態において、シーケンスタイムアウト値に到達後にオーバーフローストレージに格納されている着信メッセージを削除するため、各着信メッセージにはシーケンスタイムアウト値が付与されていて、シーケンスタイムアウト値は、フライトの出発時刻または、フライト提示の終了、あるいはプロモーションの終了のうちの何れか1つによって起動される。 In one embodiment, each incoming message is given a sequence timeout value to delete incoming messages stored in overflow storage after the sequence timeout value is reached, and the sequence timeout value is the flight departure time or It is activated by either one of the end of flight presentation or the end of promotion.

別の実施形態では、本発明は、ソフトウェアプログラム命令を含む非一時的コンピュータ可読媒体に関し、少なくとも1つのデータプロセッサによる当該ソフトウェアプログラム命令の実行は、本発明による上記方法の実行を含む動作の実行となる。   In another embodiment, the present invention relates to a non-transitory computer readable medium comprising software program instructions, wherein execution of said software program instructions by at least one data processor comprises execution of operations including execution of said method according to the present invention. Become.

さらに別の実施形態で、本発明は、複数のインバウンドハンドラ、および複数のアウトバウンドハンドラを有し、メッセージを処理する少なくとも1つのプロセッサを含む分散並列システムにおいて、配信された非同期メッセージをコンピュータによりシーケンシングする方法に関し、この方法は、少なくとも1つのデータプロセッサを用いる、以下のステップを含む:
・ インバウンドハンドラにおいて、着信メッセージを含むシーケンスを特定するシーケンス相関値が付与された着信メッセージを受信し、前記シーケンス内の着信メッセージの順序を示すメッセージランクを判断し;
・ シーケンスストレージにおける前記シーケンスのシーケンスステータスをチェックし:
シーケンスステータスがいずれのアウトバウンドハンドラも、前記シーケンスのメッセージを現時点で処理していないことを示し;
受信した着信メッセージが、シーケンス内でのメッセージランクを示す如何なるインデックスも付与されておらず、シーケンスストレージが前記シーケンスの処理すべきメッセージを未だに含んでいない場合;あるいは、
受信した着信メッセージは、シーケンス内のメッセージランク(シーケンスストレージに示されるシーケンスランクと同等)を示すインデックスが付与され、前記メッセージランクは、次に処理すべき前記シーケンスのメッセージのランクを定義し;
次に、着信メッセージをキューストレージに転送し、続いて、それを処理が可能なアウトバウンドハンドラに転送する。
シーケンスステータスが、アウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、あるいは、キューストレージが前記シーケンスの処理すべきメッセージをすでに含んでいる場合、または、受信した着信メッセージが、シーケンス内のメッセージランク(シーケンスストレージに示されるシーケンスランクよりも大きい)を示すインデックスが付与され、前記メッセージランクは、次に処理すべき前記シーケンスのメッセージのランクを定義する場合、次に、着信メッセージをさらなる処理のためにオーバーフローストレージに格納する。
In yet another embodiment, the present invention provides a computer for sequencing delivered asynchronous messages in a distributed parallel system having a plurality of inbound handlers and a plurality of outbound handlers and including at least one processor for processing messages. The method includes the following steps using at least one data processor:
In an inbound handler, receive an incoming message with a sequence correlation value that identifies a sequence including the incoming message, and determine a message rank indicating the order of the incoming message in the sequence;
Check the sequence status of the sequence in the sequence storage:
The sequence status indicates that none of the outbound handlers is currently processing the message of the sequence;
The received incoming message does not have any index indicating the message rank in the sequence and the sequence storage does not yet contain the message to be processed in the sequence; or
Received incoming messages are given an index indicating the message rank in the sequence (equivalent to the sequence rank shown in the sequence storage), the message rank defining the rank of the message in the sequence to be processed next;
It then forwards the incoming message to queue storage, which is then forwarded to an outbound handler that can process it.
If the sequence status indicates that at least one of the outbound handlers is currently processing messages for the sequence, or if the queue storage already contains messages to be processed for the sequence, or received If an incoming message is indexed to indicate the message rank in the sequence (greater than the sequence rank shown in the sequence storage), and the message rank defines the rank of the message in the sequence to be processed next, then Incoming messages are stored in overflow storage for further processing.

本発明の前記実施形態および他の態様の実施形態は、以下の図を参照することにより、さらに理解されよう。

図1Aは呼出システムと遠隔システム間の同期コールまたはメッセージの処理の順序を例証するフローチャートである。 呼出システムと遠隔システム間の非同期コールまたはメッセージの処理の順序を例証するフローチャートである。 分散処理システムにおけるコールまたはメッセージの並列処理を例証するフローチャートである。 分散処理システムにおける非同期コールまたはメッセージの並列処理であり、メッセージ処理が順序通りに実行されないリスク、およびデータ破損のリスクが生じることを例証するフローチャートである。 本発明による、集中型および共有型シーケンスコンテキストにおける高レベルシーケンス管理を例証するブロック図である。 本発明による、伝送および処理チャンネル内でのシーケンスを特定する処理を例証するフローチャートである。 本発明による、非同期分散処理システムを例証する図である。 インバウンドハンドラがシーケンスAの第1メッセージを受信する、本発明によるシーケンシング処理のステップを例証する図である。 インバウンドハンドラがシーケンスAの第2メッセージを受信する、本発明によるシーケンシング処理の別のステップを例証する図である。 アウトバウンドハンドラがシーケンスAの第1メッセージを処理する、本発明によるシーケンシング処理の別のステップを例証する図である。 アウトバウンドハンドラがシーケンスAの第1メッセージを処理した、本発明によるシーケンシング処理の別のステップを例証する図である。 シーケンスが再配列された、本発明によるシーケンシング処理のステップを例証する図である。
The foregoing embodiments of the invention and embodiments of other aspects will be further understood by reference to the following figures.

FIG. 1A is a flowchart illustrating the order of processing synchronous calls or messages between a calling system and a remote system. FIG. 6 is a flow chart illustrating the order of processing asynchronous calls or messages between a calling system and a remote system. 6 is a flowchart illustrating parallel processing of calls or messages in a distributed processing system. 6 is a flowchart illustrating the parallel processing of asynchronous calls or messages in a distributed processing system and the risk of message processing not being performed in order and the risk of data corruption. FIG. 4 is a block diagram illustrating high level sequence management in centralized and shared sequence contexts according to the present invention. 6 is a flowchart illustrating a process for identifying a sequence in a transmission and processing channel according to the present invention. 1 illustrates an asynchronous distributed processing system according to the present invention. FIG. FIG. 4 illustrates the steps of the sequencing process according to the invention, where the inbound handler receives the first message of sequence A. FIG. 6 illustrates another step of the sequencing process according to the invention, where the inbound handler receives the second message of sequence A. FIG. 6 illustrates another step of the sequencing process according to the present invention in which the outbound handler processes the first message of sequence A. FIG. 6 illustrates another step of the sequencing process according to the present invention, in which the outbound handler processes the first message of sequence A. FIG. 4 illustrates the steps of the sequencing process according to the invention with the sequence rearranged.

以下の記述は、旅行業界への応用を意図するものであるが、本発明は、ホテル客室、レンタカー、鉄道チケットなどの旅行商品を始めとして、あらゆる用途のデータ処理に使用可能であるので、本発明は以下の例に限定されない。   The following description is intended for applications in the travel industry, but the present invention can be used for data processing for any application, including travel products such as hotel rooms, rental cars, and rail tickets. The invention is not limited to the following examples.

本発明によると、メッセージの処理順序は、与えられたシーケンスの次のメッセージを送信する前に、メッセージのエミッタまたは呼出システムによって、非同期並列環境において、シーケンス内の各メッセージのランクを示すインデックスを付与することによって明示的に、あるいは、メッセージを順次配信して、そのメッセージの肯定応答が配信されるのを待つことによって非明示的に、定義される。   According to the present invention, the message processing order is indexed by the message emitter or call system in the asynchronous parallel environment to indicate the rank of each message in the sequence before sending the next message in the given sequence. Defined explicitly, or implicitly by delivering messages sequentially and waiting for the acknowledgment of the message to be delivered.

本発明は、同時に独立して実行される処理が、シーケンスと定義された、与えられたメッセージのセットを処理するためのシーケンシングの順序を順守することを確実にすることを目的とする。   The present invention aims to ensure that processing performed independently at the same time adheres to the sequencing order for processing a given set of messages, defined as a sequence.

その点に関し、本発明による分散非同期メッセージのシーケンシングを行うための、方法、装置、およびシステムは、様々な動作を実行するが、それらは下記に簡潔に説明し、後に図を用いて詳細に説明する。   In that regard, the method, apparatus and system for performing distributed asynchronous message sequencing according to the present invention perform various operations, which will be briefly described below and will be described in detail later with reference to the drawings. explain.

与えられたシーケンスの各メッセージまたはサービスコールは、インタフェース定義によりタグ付けされ、それが属する特定のシーケンスを実際に参照する。   Each message or service call in a given sequence is tagged with an interface definition and actually refers to the specific sequence to which it belongs.

メッセージのシーケンス内のメッセージまたはサービスコールのランクは、下記の何れかである:
・ 十分なインタフェースを介して、メッセージまたはサービスコールのエミッタ/送り手によって明示的に提供される。例えば、メッセージは、そのシーケンス内のメッセージのランクを定義するインデックスを有するフィールドを含む;または
・ シーケンス内のメッセージまたはサービスコールを、時間を超過して受信する場合の順序を使用して非明示的に提供される。
The rank of a message or service call within a sequence of messages is one of the following:
• Explicitly provided by the emitter / sender of the message or service call via a sufficient interface. For example, a message includes a field with an index that defines the rank of the message in the sequence; or • Implicitly using the order in which messages or service calls in the sequence are received over time Provided to.

一度、シーケンスおよび、メッセージランク、またはサービスコールの順序が特定されると、シーケンスは適切に管理される必要がある。   Once the sequence and message rank or service call order is identified, the sequence needs to be managed appropriately.

図5は、本発明による、集中型および共有型シーケンスコンテキストにおける高レベルシーケンス管理を例証するブロック図である。この図は、システムの主要機能および主要ステップを詳述している。   FIG. 5 is a block diagram illustrating high level sequence management in a centralized and shared sequence context according to the present invention. This figure details the major functions and major steps of the system.

非同期分散処理システムは、着信メッセージ501を受信するインバウンドハンドラ510、およびメッセージを処理し、それらを配信するよう構成される、アウトバウンドハンドラ530を含む。システムはまた、当該メッセージが属するシーケンスの順序を維持するため、メッセージ501の処理を保留する必要がある場合、インバウンドハンドラから受信したメッセージを格納することがある、オーバーフローストレージ領域540を含む。   The asynchronous distributed processing system includes an inbound handler 510 that receives incoming messages 501 and an outbound handler 530 that is configured to process the messages and deliver them. The system also includes an overflow storage area 540 that may store a message received from an inbound handler if processing of the message 501 needs to be suspended to maintain the sequence order to which the message belongs.

システムは、複数の並列インバウンドハンドラ510と複数の並列アウトバウンドハンドラ530を含むが、図5は分かり易くするために簡潔に示されていることを理解されたい。   Although the system includes a plurality of parallel inbound handlers 510 and a plurality of parallel outbound handlers 530, it should be understood that FIG. 5 is shown briefly for clarity.

インバウンドハンドラはまた、アクセプターまたは、アクセプター処理とも呼ばれる。したがって、複数のインバウンドハンドラを含むインバウンドハンドラ層は、アクセプター層とも呼ばれることがある。   Inbound handlers are also called acceptors or acceptor processes. Accordingly, an inbound handler layer including a plurality of inbound handlers may be referred to as an acceptor layer.

アウトバウンドハンドラは、プロセッサまたは配信処理と呼ばれることがある。したがって、複数のアウトバウンドハンドラを含むアウトバウンドハンドラ層は、配信層とも呼ばれることがある。   An outbound handler may be referred to as a processor or delivery process. Thus, an outbound handler layer that includes multiple outbound handlers may also be referred to as a distribution layer.

インバウンドハンドラ510は、以下のうちの何れか1つを実行するよう構成される。パブリッシャーなどのエミッタからメッセージを受信する、メッセージのインテグリティのバリデーションを行う、シーケンスロックおよびステータスのバリデーションを行う、2領域のうちの1領域にメッセージを格納する(例:キューストレージまたは、オーバーフロー領域)、エミッタに応答する。   The inbound handler 510 is configured to perform any one of the following: Receive messages from emitters such as publishers, validate message integrity, perform sequence lock and status validation, store messages in one of two areas (eg queue storage or overflow area), Respond to the emitter.

有利な実施形態によると、アウトバウンドハンドラ530は、2つの処理から構成される。デリバリー処理531と呼ばれる第1処理は、以下の何れか1つの処理を実行するように構成されている。ストレージキューからメッセージを入手する;そのメッセージを、通信チャネルを介して受け手に送信する;および、他の処理によって使用されることを停止する。   According to an advantageous embodiment, the outbound handler 530 consists of two processes. The first process called the delivery process 531 is configured to execute any one of the following processes. Obtain a message from the storage queue; send the message to the recipient via the communication channel; and stop being used by other processes.

肯定応答処理532と呼ばれる第2処理は、以下の何れか1つの処理を実行するように構成されている。受け手から肯定応答を受信する;シーケンス管理を実行して次のメッセージを対応するシーケンス(もしあれば、ストレージキュー)に入れる;および、他の処理によって使用されることを停止する。   The second process called the affirmative response process 532 is configured to execute any one of the following processes. Receive acknowledgment from recipient; perform sequence management to place next message into corresponding sequence (storage queue, if any); and stop being used by other processes.

したがって、アウトバウンドハンドラ532により形成される配信層は、高い拡張性の要件に対応する非同期である。このように、システムは受け手の待ち時間に対し、独立している。より正確には、アウトバウンドハンドラは、第1シーケンスのメッセージを取得および配信し、次に、アウトバウンドハンドラが第1シーケンスのメッセージの配信に対する肯定応答を受信するまでに、第2シーケンスの別のメッセージを取得し、配信することができることを意味する。したがって、アウトバウンドハンドラは非同期的に多くのシーケンスからのメッセージを取り扱うことができ、それによって、常に各シーケンスの正確な順序を維持しながら、システムが送ることができるメッセージの数を増やすことができる。   Thus, the delivery layer formed by the outbound handler 532 is asynchronous that accommodates high scalability requirements. In this way, the system is independent of the waiting time of the recipient. More precisely, the outbound handler retrieves and delivers the first sequence of messages, and then sends another message of the second sequence until the outbound handler receives an acknowledgment for delivery of the first sequence of messages. Means that can be acquired and distributed. Thus, the outbound handler can handle messages from many sequences asynchronously, thereby increasing the number of messages that the system can send while always maintaining the exact order of each sequence.

本発明によると、ステートマシンが各シーケンスに使用される、中央共有シーケンスコンテキストが実装される。着信メッセージ501がインバウンドハンドラ510に受信される度に、それに対応するシーケンスコンテキストステータスがチェックされる(520)。一実施形態によれば、対応するシーケンスコンテキストが存在しない場合、動的および透過的に作成される。したがって、本発明は、システムにおいて前もってシーケンスを定義する必要はなく、この点については、全面的に動的である。さらに、メッセージに、シーケンス内のメッセージのランクを示すインデックスが付与されていない場合、メッセージランクは、メッセージの到着順序に応じてメッセージに割り当てられる:
・ アウトバウンドハンドラ層がシーケンスの次のメッセージを待っている状態(つまり、シーケンスステータスが「待ち(Waiting)」)であることを、シーケンスステータスが示した場合、着信メッセージ501が、アウトバウンドハンドラ530の標準的動作により通常通り処理(522)される(メッセージは非同期処理可能となる);
・ あるいは、シーケンスのメッセージが現在、処理中である、つまり、シーケンスステータスが「処理中(Processing)」とシーケンスステータスが示す場合、着信メッセージ501は、後に処理(524)を受けるため、特定のシーケンスオーバーフローストレージ領域540に格納される。オーバーフローストレージ領域540は、着信メッセージの順序が失われないように構成/インデックス付けされる。このように、着信メッセージ501は、さらなる処理のために保持され、即時処理のために使用可能とはならない(シーケンスから除外)。
In accordance with the present invention, a central shared sequence context is implemented in which a state machine is used for each sequence. Each time an incoming message 501 is received by the inbound handler 510, the corresponding sequence context status is checked (520). According to one embodiment, if a corresponding sequence context does not exist, it is created dynamically and transparently. Thus, the present invention does not need to define a sequence in advance in the system, and in this respect is totally dynamic. Further, if the message is not indexed to indicate the rank of the message in the sequence, the message rank is assigned to the message according to the arrival order of the messages:
If the sequence status indicates that the outbound handler layer is waiting for the next message in the sequence (ie, the sequence status is “Waiting”), the incoming message 501 is the standard for the outbound handler 530 Is processed (522) as usual by the target operation (messages can be processed asynchronously);
Alternatively, if the sequence message is currently being processed, that is, if the sequence status indicates “Processing” and the sequence status indicates that the incoming message 501 is subject to processing (524) later, the particular sequence Stored in the overflow storage area 540. The overflow storage area 540 is configured / indexed so that the order of incoming messages is not lost. In this way, the incoming message 501 is retained for further processing and is not available for immediate processing (excluded from the sequence).

アウトバウンドハンドラ層は、標準的動作によって処理される、事実上、正しいシーケンスランクのメッセージを受信する。   The outbound handler layer receives a message of effectively the correct sequence rank that is processed by standard operations.

一度、メッセージ501が処理されると、アウトバウンドハンドラ層がオーバーフローストレージ領域540のシーケンスにおいて処理する次のメッセージを探す。もし、そのようなメッセージが見つかったら、標準処理に基づいて、アウトバウンドハンドラ層にプッシュする。メッセージが見つからない場合、シーケンスステータスは、「待ち(Waiting)」の設定に戻される。   Once the message 501 is processed, the outbound handler layer looks for the next message to process in the sequence of the overflow storage area 540. If such a message is found, it is pushed to the outbound handler layer based on standard processing. If no message is found, the sequence status is returned to the setting of “Waiting”.

シーケンス内の各メッセージの順序は、維持される。シーケンスストレージは、シーケンスのメッセージの順序を維持するために、処理が義務づけられる次のメッセージのランクを示すシーケンスランクを定義する。シーケンスランクは、メッセージの処理が完了する度に、インクリメンタルに更新される。したがって、シーケンスランクは、カウンターと見なすことができる。   The order of each message in the sequence is maintained. The sequence storage defines a sequence rank that indicates the rank of the next message that must be processed in order to maintain the order of the messages in the sequence. The sequence rank is incrementally updated each time message processing is complete. Therefore, the sequence rank can be regarded as a counter.

シーケンスランクに合致しない如何なる着信メッセージ(つまり、処理すべき次のメッセージのランク)も、処理すべき正しいメッセージがインバウンドハンドラ510に受信されるまで、オーバーフローストレージ領域540に格納される。このことは、シーケンスのランクおよび各メッセージのランクを考慮しながら、オーバーフローストレージ領域540において、挿入/削除動作が実行されることを意味する。   Any incoming message that does not match the sequence rank (ie, the rank of the next message to be processed) is stored in the overflow storage area 540 until the correct message to be processed is received by the inbound handler 510. This means that insert / delete operations are performed in the overflow storage area 540, taking into account the rank of the sequence and the rank of each message.

メッセージがオーバーフローストレージ領域540に格納され、シーケンス内で処理が保留されているので、シーケンス内の次のメッセージによってシーケンスのロックが外されることはない。このような状況は頻繁には起こらないが、本発明は、期限が切れたメッセージやシーケンスを破棄するなど、期限が切れたと考えられるシーケンスに対して動作を起こすためにシーケンスのコンテキストの中にインジケータを残す動的な方法を提供する。   Since the message is stored in the overflow storage area 540 and processing is suspended in the sequence, the sequence is not unlocked by the next message in the sequence. Although this situation does not occur frequently, the present invention provides an indicator in the context of a sequence to take action on sequences that are considered expired, such as discarding expired messages and sequences. Provide a dynamic way to leave.

一部のMOM(Message Oriented Middleware)は、並列処理の利用を避けることによって、シーケンシング機能を提供する(つまり、これらは1件のデキューの消費者のみに対して実行する)。したがって、これらは、スケーラビリティを犠牲にして、シーケンスを保証する。Oracle(登録商標) Advanced Queuingは典型例である。   Some MOMs (Message Oriented Middleware) provide sequencing capabilities by avoiding the use of parallel processing (ie, they only run for a single dequeued consumer). They therefore guarantee the sequence at the expense of scalability. Oracle (R) Advanced Queueing is a typical example.

他の一部のMOM(MQ-Seriesなど)は、コリレータに基づくシーケンス機能を提供するが、これらは、処理するシーケンスのメッセージが論理的にグループ化されていることを要件とする。その上、グループのサイズに制限があり、MOMはデキュー処理に新たな制限が加えられていることがある。   Some other MOMs (such as MQ-Series) provide correlator-based sequencing functions, which require that the messages in the sequence to be processed are logically grouped. In addition, there is a limit on the size of the group, and the MOM may have a new limit on the dequeue process.

本発明による分散並列型処理は、並列性とスケーラビリティを維持し、メッセージまたはサービスコールを関連付け、あるいはデキュー処理によって処理する方法において特別な制限がない、厳格なシーケンシングを提供する。本発明の方法、装置、およびシステムによる高度なスケーラビリティおよび障害許容力によって、以下が実現する:
・ 「ポストおよびクイット」の原則を利用して、別の処理(肯定応答処理)は肯定応答を受信する役割を担いながら、メッセージがポストされ、肯定応答を待つことなく処理を行う、全面的な非同期配信処理を実行し、それによって非常に高度なメッセージスループットによる処理が可能になる;
・ および、全面的な分散処理を実行し、シーケンスとインバウンド/アウトバウンドハンドラ間の類似性を取り除くことによって、インバウンド/アウトバウンドハンドラは、どのシーケンスのメッセージの取扱いも可能になる。
The distributed parallel processing according to the present invention provides strict sequencing that maintains parallelism and scalability, and has no special restrictions on how messages or service calls are associated or processed by dequeue processing. With the high scalability and fault tolerance of the method, apparatus and system of the present invention, the following is achieved:
• Using the “post and quit” principle, another process (acknowledgment process) is responsible for receiving the acknowledgment, while the message is posted and processed without waiting for the acknowledgment. Perform asynchronous delivery processing, which allows processing with very high message throughput;
And, by performing full distributed processing and removing the similarity between sequences and inbound / outbound handlers, inbound / outbound handlers can handle any sequence of messages.

メッセージシーケンシングの通常の方法に、モノプロセス構造に戻ることがあるが、これは、障害許容力とスケーラビリティにおいて重大で、時には受け入れられない制限がある。それに対して、本発明は、シーケンスの濃度を高く保ちながら、分散並列処理においてインバウンドハンドラレベルおよびアウトバウンドハンドラレベルの2段階で多くの利点を提供する。つまり、システムが多数のシーケンスを並列的に取り扱う必要があれば、本発明はシーケンス処理の並列化に多くの利点を提供する。   The usual method of message sequencing may return to the monoprocess structure, which is critical in fault tolerance and scalability, and has unacceptable limitations. In contrast, the present invention provides many advantages in two stages, inbound handler level and outbound handler level, in distributed parallel processing while keeping the sequence density high. In other words, if the system needs to handle a large number of sequences in parallel, the present invention provides many advantages for parallelization of sequence processing.

シーケンスの維持に関して、ストレージ領域、およびデキュー処理に前提条件はない:
・ インバウンドハンドラのメッセージ受け入れのキュー処理、およびアウトバウンドハンドラ層のメッセージ処理のキュー処理は、本発明によって達成されるので、シーケンスの保持をサポートする必要はない;
・ メッセージの並列ストレージおよび並列取得(つまり、キューイング/デキューイング)は、完全に維持される;
・ 非制限的な実施形態によると、キューストレージ自体は、ノードに対してローカルになることができ、オーバーフローストレージ領域は、グローバルなままである(つまり、すべてのアウトバウンドハンドラに共有されている)。どのノードも与えられたシーケンスを処理することができるので、オーバーフローストレージは共有される必要があり、オーバーフローストレージは一意的なオーバーフロー領域にアクセスし、ストレージにおいて実際にキューおよびデキューイングを行う。キューストレージがすべてのアウトバウンドハンドラによって共有されない場合、単独のアウトバウンドハンドラまたは複数のアウトバウンドハンドラに専有とすることができる。キューストレージがすべてのアウトバウンドハンドラに共有されない場合、各メッセージは、1つのローカルのキューストレージのみによって受信される;
・ メッセージは、ステータスが変更されてオーバーフロー領域に配置するので、例外キューの必要がなく、拒絶メッセージのストレージは容易である。
There are no prerequisites for storage space and dequeuing for sequence maintenance:
• Inbound handler message acceptance queuing and outbound handler layer message processing queuing are accomplished by the present invention and need not support sequence preservation;
• Parallel storage and retrieval of messages (ie queuing / dequeuing) is fully maintained;
According to a non-limiting embodiment, the queue storage itself can be local to the node, and the overflow storage area remains global (ie shared by all outbound handlers). Since any node can process a given sequence, overflow storage needs to be shared, and overflow storage accesses a unique overflow area and actually queues and dequeues in the storage. If queue storage is not shared by all outbound handlers, it can be dedicated to a single outbound handler or multiple outbound handlers. If queue storage is not shared by all outbound handlers, each message is received by only one local queue storage;
-Since the status of the message is changed and placed in the overflow area, there is no need for an exception queue, and storage of rejection messages is easy.

本発明の方法、装置、およびシステムによると、メッセージシーケンスが、シーケンスの特定とシーケンス内のメッセージランクを特定することによって、分散並列モードにおいて処理される。特定することに加えて、シーケンスは、管理および再配列され、それには、シーケンスロックおよびタイムアウトが含まれる。これらの態様は、以下に詳述される。   According to the method, apparatus, and system of the present invention, a message sequence is processed in a distributed parallel mode by identifying the sequence and identifying the message rank within the sequence. In addition to specifying, sequences are managed and rearranged, including sequence locks and timeouts. These aspects are described in detail below.

シーケンスの特定
与えられた伝送チャネルにおいて共有されるメッセージまたはイベントのフロー中で、関連メッセージのセットは、シーケンスが優先されるので、明確に定義される必要がある。図6は、エミットシステム610およびプロセスシステム630間の伝送および処理チャネル620内で、シーケンスを識別する処理を例証するフローチャートである。
In a flow of messages or events shared in a given transmission channel of a sequence, a set of related messages needs to be clearly defined because the sequence takes precedence. FIG. 6 is a flowchart illustrating the process of identifying a sequence in the transmission and processing channel 620 between the Emit system 610 and the process system 630.

専用パラメータは、与えられた伝送に含まれる各メッセージ要素(messaging primitive)に提供される。この専用パラメータは、シーケンス識別子であり、シーケンス相関値とも呼ばれる。これは典型的に、メッセージのエミットシステムによって設定される英数字の値である。このパラメータは、関与する各構成要素によって使用され、同じシーケンスに属するメッセージを識別する。例えば、メッセージ1〜4は、伝送チャネル620内で解析され、メッセージ#1〜#4と識別される。これらの関連付けされ、順序付けされたメッセージは、同じ送信チャネル620を共有し、連続的にお互いを追跡することはない。これらは、送信チャネル620において、他のシーケンスに属するメッセージと結合する。   A dedicated parameter is provided for each message primitive included in a given transmission. This dedicated parameter is a sequence identifier and is also called a sequence correlation value. This is typically an alphanumeric value set by the message's emmit system. This parameter is used by each participating component and identifies messages belonging to the same sequence. For example, messages 1-4 are analyzed in transmission channel 620 and identified as messages # 1- # 4. These associated and ordered messages share the same transmission channel 620 and do not continuously track each other. These combine in the transmission channel 620 with messages belonging to other sequences.

シーケンス相関パラメータは、与えられた送信および処理チェーンにおいて、個別の衝突する処理により共有されないことを確実にするために、定義される。この状況では、厳格に一意的であることが必須となる。このシーケンス相関パラメータの定義は、本システムを使用する業務処理の責務である。   Sequence correlation parameters are defined to ensure that they are not shared by individual conflicting processes in a given transmission and processing chain. In this situation, it must be strictly unique. The definition of the sequence correlation parameter is the responsibility of the business process using this system.

シーケンス内のメッセージランクの識別
特定の順序によって処理される必要のあるメッセージは、以下の2種類に分類される:
・ 第1種類のメッセージは、シーケンス内の順序またはランクがメッセージの作成時に判明し、メッセージの総数も、メッセージの作成時に判明することが好ましく、生成処理は、各メッセージの伝送要素に特定のメッセージランク番号を割り当てることができる。このメッセージランク番号は、次に、全体的なチェーンの一部として、最終処理が実行されるまで、各処理によって運ばれ、格納される;
・ 第2種類のメッセージのシーケンス内の順序は、生成時に判断される。これらの第2種類のメッセージの処理は通常、インクリメンタルであり、つまり、処理内の各新規メッセージ(またはイベント)は、シーケンス内の前のメッセージの処理結果を変更する。その点において、メッセージのエミットシステムは、与えられたシーケンス内のメッセージランクもメッセージの数も把握しておらず、シーケンス内のメッセージの総数も把握していない。
分かり易くするために、この記述では、与えられたシーケンス内のメッセージのメッセージランク番号をメッセージランクと呼ぶ。
Identification of the message rank in the sequence Messages that need to be processed in a specific order are classified into two types:
For the first type of message, the order or rank in the sequence is known at the time of message creation, and the total number of messages is preferably also known at the time of message creation. A rank number can be assigned. This message rank number is then carried and stored by each process as part of the overall chain until the final process is performed;
The order in the sequence of the second type message is determined at the time of generation. The processing of these second types of messages is usually incremental, that is, each new message (or event) in the process changes the processing result of the previous message in the sequence. In that regard, the message emit system does not know the message rank or number of messages in a given sequence, nor does it know the total number of messages in the sequence.
For simplicity, this description refers to the message rank number of messages in a given sequence as the message rank.

コアシーケンス管理
図7に例証するように、非同期分散処理システムは以下を含む:
・ 複数のインバウンドハンドラ710、720、…、740が、インバウンドハンドラ層を形成する。インバウンドハンドラは着信メッセージ711、721、731、および741を受信し、それらを個別にキューストレージ750に格納し、これら着信メッセージ711、721、731、および741を問題なく受信したことを示す肯定応答を、エミットシステムに送る;
・ 複数のアウトバウンドハンドラ760、770、…、790が、アウトバウンドハンドラ層を形成する。各アウトバウンドハンドラはキューストレージ750からメッセージを取得し、それらを処理するよう構成される。アウトバウンドハンドラはまた、処理済みメッセージのアプリケーションへの転送を担当する。
Core Sequence Management As illustrated in FIG. 7, the asynchronous distributed processing system includes:
A plurality of inbound handlers 710, 720,..., 740 form an inbound handler layer. The inbound handler receives the incoming messages 711, 721, 731 and 741, stores them individually in the queue storage 750, and acknowledges that these incoming messages 711, 721, 731 and 741 have been received successfully. , Send to Emit system;
A plurality of outbound handlers 760, 770, ..., 790 form an outbound handler layer. Each outbound handler is configured to retrieve messages from queue storage 750 and process them. The outbound handler is also responsible for forwarding processed messages to the application.

インバウンドハンドラはまた、アクセプターまたは、アクセプター処理とも呼ばれる。アウトバウンドハンドラは、プロセッサまたは配信処理と呼ばれることがある。   Inbound handlers are also called acceptors or acceptor processes. An outbound handler may be referred to as a processor or delivery process.

図8Aは、インバウンドハンドラがエミットシステムから受信したシーケンスAの第1メッセージをシーケンシング処理するステップを例証する図7の実施形態を改善した図である。ここでの改善によって、シーケンスストレージ800と呼ばれる追加された構成要素が、複数のインバウンドハンドラ810、820、…、840と複数のアウトバウンドハンドラ860、870、…、890の間にストレージ層の一部として実装されている。シーケンスストレージ800は以下を含む:
・ ミューテックスとも呼ばれる、集中型、または共有型シーケンスであるミューテックス804は、一度に、1つのハンドラのみが、与えられたシーケンス(または同じシーケンス相関値が付与されたもの)のメッセージを取り扱うことを確実にし、競合する場合、先着順とする;
・ ステータスとも呼ばれる、集中型または共有型シーケンスステータスコンテキスト802は、すべての処理の間のシーケンスステータスの共有を維持し、シーケンスは、シーケンス自体のシーケンス相関値により一意的に識別される。ステータスはまた、与えられたシーケンスの各イベントに対し、適用する動作を決定することができる;
・ 「待ち(waiting)」ステータスは、次の着信メッセージを配信のためにキューに入れることを意味する;
・ 「配信中(delivering)」ステータスは、次の着信メッセージが保持されていることを意味する;
・ オーバーフロー、またはオーバーフローストレージ領域とも呼ばれる集中型または共有型オーバーフローストレージ806は、複数のアウトバウンドハンドラによって次に処理されるメッセージのみが、それらにアクセスできることを確実にし、他はこのオーバーフロー領域において「保留(pending)」とする。オーバーフローストレージは、インデックス付けされ、順序づけされた、現在のシーケンスステータスに関して、配信される準備ができていないシーケンスメッセージである。
FIG. 8A is an improvement over the embodiment of FIG. 7 illustrating the steps for the inbound handler to sequence the first message of sequence A received from the emit system. With this improvement, an additional component called sequence storage 800 is added as part of the storage layer between multiple inbound handlers 810, 820,..., 840 and multiple outbound handlers 860, 870,. Has been implemented. The sequence storage 800 includes:
A mutex 804, also called a mutex, which is a centralized or shared sequence, ensures that only one handler handles a given sequence (or one with the same sequence correlation value) at a time. If there are conflicts, the first-come-first-served basis;
A centralized or shared sequence status context 802, also called status, maintains the sharing of sequence status between all processes, and the sequence is uniquely identified by the sequence correlation value of the sequence itself. The status can also determine the action to apply for each event in a given sequence;
A “waiting” status means that the next incoming message is queued for delivery;
“Delivering” status means that the next incoming message is held;
Centralized or shared overflow storage 806, also called overflow, or overflow storage area, ensures that only the next message processed by multiple outbound handlers can access it, and others are "pending ( pending) ". Overflow storage is an indexed, ordered sequence message that is not ready to be delivered with respect to the current sequence status.

ステータス802、ミューテックス804、およびオーバーフローストレージ806の3つの構成要素は、文脈処理情報であり、キューストレージ850と同じ性質を有する。これらは、以下に実装される:
・ すべての分散処理が同じノードで実行される場合は、メモリーデータ、またはファイルベースのストレージ;または
・ サーバシステムが遠隔システムであるいくつかのノードで分散処理が実行される場合は、クライアント/サーバストレージデータベース。
The three components of status 802, mutex 804, and overflow storage 806 are context processing information and have the same properties as queue storage 850. These are implemented as follows:
• Memory data or file-based storage if all distributed processing is performed on the same node; or • Client / server if distributed processing is performed on several nodes where the server system is a remote system Storage database.

ストレージ層と標準メッセージストレージの間の最大の一貫性は、独自のトランザクションを共有する共有RDBMSエンジンに両者を実装することである。   The greatest consistency between the storage layer and standard message storage is to implement both in a shared RDBMS engine that shares its own transactions.

本発明の方法、装置、およびシステムによると:
・ キューストレージ850は、複数のインバウンドハンドラと複数のアウトバウンドハンドラの間のメッセージの交換を可能にし、シーケンスストレージ800から独立して動作し;
・ シーケンスストレージ800のオーバーフローストレージ806は、複数のインバウンドハンドラ810、820、…、840と複数のアウトバウンドハンドラ860、870、…、890間のメッセージ交換のシーケンシングを確実にする。
According to the method, apparatus and system of the present invention:
The queue storage 850 enables the exchange of messages between multiple inbound handlers and multiple outbound handlers and operates independently of the sequence storage 800;
The overflow storage 806 of the sequence storage 800 ensures sequencing of message exchange between the plurality of inbound handlers 810, 820,..., 840 and the plurality of outbound handlers 860, 870,.

図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をリリースし、その他のあらゆる着信メッセージを受信するよう準備する。
FIG. 8A illustrates the incoming message sequencing process of the present invention:
Message 801-1 belongs to sequence correlation value “A” and is received by inbound handler 810;
The inbound handler 810 locks the mutex 804 of sequence “A”, as shown at 812, preventing all inbound or outbound handlers from handling messages with a sequence correlation value of “A”;
The inbound handler 810 checks whether the sequence does not exist in the central status context 802 of the sequence “A”, as shown at 814, whether the sequence is in a “Waiting” status;
The inbound handler 810 sets the status context 802 of the sequence “A” to “Processing” as indicated by 814. The present invention assigns a message rank to the incoming message that is the same as the rank incremented by adding 1 to the previously received message. Since the incoming message is the first message in this sequence, the message rank assigned to the message is set to 1. The message rank is preferably stored in the sequence storage 800, more precisely in the sequence context 802. Inbound handler 810 preferably stores message 851 in queue storage 850, as shown at 816; and • Inbound handler 810 acknowledges the message emitter, releases mutex 804 of sequence “A”, etc. Prepare to receive all incoming messages.

図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」のミューテックスをリリースし、その他のあらゆる着信メッセージを受信するよう準備する。
FIG. 8B illustrates the next step in the sequencing process where other incoming messages are received by the system:
The second message 801-2 belongs to the sequence “A” and is received by the inbound handler 820;
The inbound handler 820 locks the mutex 804 of sequence “A”, as shown at 822, and the inbound handler 810, 830, or 840, or the outbound handler handles another message in the sequence “A” prevent;
The inbound handler 820 checks the central status context 802 of the sequence “A” whose sequence status is “Processing”, as indicated at 824. Since the message is not available to any outbound handler, inbound handler 820 stores message 807 in overflow storage 806 as shown at 826.
A message rank value incremented by adding 1 to the previous incoming message is assigned to the incoming message as the message rank. Since the message rank of the previous message is 1, the message rank assigned to the incoming message is 2. In addition, the present invention increments a sequence rank that defines the rank of the next message to be processed in that sequence. If multiple messages from the same sequence are stored in the sequence storage 800, these message ranks allow the system to identify the correct message to be transferred to the queue storage 850. A correct message is a message having a message rank corresponding to the sequence rank defined in the sequence. Advantageously, this applies when the incoming message has a message rank assigned by the emitter, and the incoming message rank is assigned according to the arrival order in the inbound handler;
Inbound handler 820 acknowledges the message emitter, releases the mutex of sequence “A”, and prepares to receive any other incoming message.

図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に該当する。
FIG. 8C illustrates the next step in the sequencing process, where a message stored in the queue storage queue is dequeued for processing by one of the outbound handlers:
One of the outbound handlers 870 obtains a message 851 of sequence “A” from the queue storage 850 as indicated at 871. According to the invention, this message is automatically the next message in the sequence to be processed. Therefore, the rank is a value obtained by adding 1 to the rank of the last message processed. In this illustrated embodiment, the message stored in the queue storage is the first message in sequence A, so its rank is necessarily “1”;
Outbound handler 870 delivers the message with message rank “1”, as shown at 873, by the relevant recipient or another routing means before further delivery to that recipient. Once the message is sent by step 873, the outbound handler 870 is available for further processing. This continues until an acknowledgment is received from the recipient. For example, the outbound handler 870 can obtain and send another message for another sequence, thereby achieving asynchronous delivery and improving throughput. This can also be acknowledged by the emitter's message. Thus, the response time of the message emitter in step 873 has no limit on the number of messages and processes processed by the outbound handler;
The receiver receives the message from the delivery process 8701 of the outbound handler 870 transmitted in Step 873. In response, the recipient sends an acknowledgment message to the system. An acknowledgment process 8702 of the same outbound handler 870 or an acknowledgment process 8602 of another outbound handler 860 receives the acknowledgment message. This corresponds to step 874 shown in FIG. 8C.

図8Dは、次のメッセージが処理のために、アウトバウンドハンドラの1つに転送される前に、オーバーフローストレージ領域806に格納され、キューストレージ850に転送されるシーケンシング処理の次のステップを示す。図8Dに示されるステップは、本システムのインバウンドハンドラにおける肯定応答メッセージの受信875により、起動される:
・ アウトバウンドハンドラ860は、862に示すステータスコンテキスト802のシーケンスランクをチェックし、肯定応答したメッセージのシーケンス内で、処理すべき次のメッセージのランクを判断する。シーケンスランクは、「2」に設定されているので、アウトバウンドハンドラ860は、809に示すメッセージランク「2」を有するオーバーフローストレージ領域806からの、シーケンス「A」のメッセージ807を取得する。このメッセージ807は、次に、キューストレージ850に格納され、すべてのアウトバウンドハンドラに対し、利用可能となる。ステータスコンテキスト802は「処理中(Processing)」のままである。シーケンスランクは、インクリメントされ、「3」に設定されるので、次に処理されるメッセージは「3」と同等のメッセージランクを有することを示す;
・ アウトバウンドハンドラ860は、停止し、キューストレージ850に格納されている別のメッセージの処理を行うよう準備する;
・ 処理は、着信メッセージがすべてのシーケンスが処理され、配信されるまで、継続される。
FIG. 8D shows the next step in the sequencing process where the next message is stored in the overflow storage area 806 and forwarded to the queue storage 850 before being forwarded to one of the outbound handlers for processing. The steps shown in FIG. 8D are triggered by receipt of an acknowledgment message 875 in the inbound handler of the system:
Outbound handler 860 checks the sequence rank of status context 802 shown at 862 to determine the rank of the next message to process within the sequence of messages that have been acknowledged. Since the sequence rank is set to “2”, the outbound handler 860 acquires the message “807” of the sequence “A” from the overflow storage area 806 having the message rank “2” indicated by 809. This message 807 is then stored in the queue storage 850 and is available to all outbound handlers. The status context 802 remains “Processing”. The sequence rank is incremented and set to “3”, indicating that the next message to be processed has a message rank equivalent to “3”;
Outbound handler 860 stops and prepares to process another message stored in queue storage 850;
Processing continues until the incoming message has been processed and delivered through all sequences.

図8A〜8Dに示す処理は、受信した着信メッセージのシーケンスインデックス(シーケンス内のメッセージのランクを示す)の有無については統一されている。それが提供されている場合、同じシーケンス内の受信順序に基づき、インバウンドハンドラによってランキングが生成されている場合でない限り、シーケンシングランクとして使用される。   The processes shown in FIGS. 8A to 8D are unified with respect to the presence / absence of the sequence index (indicating the rank of the message in the sequence) of the received incoming message. If it is provided, it is used as a sequencing rank unless ranking is generated by an inbound handler based on the order of reception within the same sequence.

シーケンスの再配列
図8A〜8Dに詳細に示した、着信メッセージが厳格なシーケンス順序に従ってインバウンドハンドラによって受信される処理に加えて、シーケンス外で受信したメッセージを処理するため、同じ処理を実行した。唯一の事実上の前提条件は、メッセージのエミッタが同じシーケンス内の各メッセージに対し、シーケンス内でのメッセージのランクを示すインデックスを提供することである。
Sequence Reordering In addition to the process shown in detail in FIGS. 8A-8D, where incoming messages are received by the inbound handler according to a strict sequence order, the same process was performed to process messages received out of sequence. The only practical prerequisite is that the message emitter provides an index indicating the rank of the message in the sequence for each message in the same sequence.

先に示した通り、本発明は、そのシーケンスで処理されるべき次のメッセージのランクを定義するシーケンスランクをインクリメントする。キューストレージ850が、与えられたシーケンスからメッセージを受信することができると、シーケンスランクがチェックされる。メッセージランクがシーケンスランクと同等のメッセージのみが、キューストレージ850に転送される。シーケンスランクと同等のメッセージランクを有するメッセージがシーケンスストレージ800のオーバーフロー領域806にない場合、このシーケンスの処理は、インバウンドハンドラから正しいランクのメッセージを受信するまで、保留される。したがって、シーケンスランクは、処理すべきメッセージを示すカウンターのように作動する。シーケンスランクは、シーケンスストレージ800内に格納されることが好ましい。   As indicated above, the present invention increments a sequence rank that defines the rank of the next message to be processed in that sequence. When the queue storage 850 can receive a message from a given sequence, the sequence rank is checked. Only messages whose message rank is equivalent to the sequence rank are transferred to the queue storage 850. If a message having a message rank equivalent to the sequence rank is not in the overflow area 806 of the sequence storage 800, processing of this sequence is suspended until a message of the correct rank is received from the inbound handler. Thus, the sequence rank operates like a counter indicating the message to be processed. The sequence rank is preferably stored in the sequence storage 800.

図8Eは、シーケンスが再配列された着信メッセージ801のシーケンシング処理のステップを例証する:
複数のインバウンドハンドラ810、…、840、によって実行される前述の処理に加えて、インデックスの命令により行われた再配列に関するステップが追加される場合がある;
・ メッセージのインデックスにより示されるメッセージのランクは、シーケンスの順序を維持するため、次に処理されるメッセージのランクと比較される。シーケンス順序を維持するための、次に処理するメッセージのこのランクは、インクリメントして更新されるシーケンスランクによって、好ましくはシーケンスストレージにおいて示される;
・ メッセージのランクが818に示すようにシーケンスランクと一致する場合、着信メッセージ815はキューストレージ850に格納され、複数のアウトバウンドハンドラに使用可能となる。シーケンスステータスは「処理中(Processing)」に設定される。処理するシーケンスランクは、インクリメントされ、先述した処理が適用される;
・ インデックスにより示されるメッセージのランクが、シーケンスランク819を越える場合、メッセージ813は、オーバーフローストレージ806に格納される。シーケンスステータス802は「保留(Pending)」に設定される。メッセージは、事実上、処理されない。所望のメッセージランクを有する、処理すべきメッセージがインバウンドハンドラにより受信されると、シーケンシングは再開される。その場合、インバウンドハンドラは対応するメッセージをキューストレージに格納し、シーケンスステータスを「処理中(Processing)」に設定する。
FIG. 8E illustrates the steps of the sequencing process for incoming message 801 with the sequence rearranged:
In addition to the above-described processing performed by the plurality of inbound handlers 810,..., 840, steps related to the rearrangement performed by the index instruction may be added;
The message rank indicated by the message index is compared with the rank of the next message to be processed in order to maintain the sequence order. This rank of the next message to process to maintain the sequence order is preferably indicated in the sequence storage by a sequence rank that is incremented and updated;
If the message rank matches the sequence rank as shown at 818, the incoming message 815 is stored in the queue storage 850 and is available to multiple outbound handlers. The sequence status is set to “Processing”. The sequence rank to be processed is incremented and the processing described above is applied;
If the rank of the message indicated by the index exceeds the sequence rank 819, the message 813 is stored in the overflow storage 806. The sequence status 802 is set to “Pending”. The message is effectively not processed. Sequencing is resumed when a message to be processed with the desired message rank is received by the inbound handler. In that case, the inbound handler stores the corresponding message in the queue storage and sets the sequence status to “Processing”.

図8A〜8Dに示す処理に関しては、アウトバウンドハンドラがメッセージに対する動作を終了すると、アウトバウンドハンドラは、オーバーフローストレージ806内で、メッセージランクがシーケンスランクに一致するメッセージを探す(シーケンスランクは、シーケンスの順序を維持するための、次に処理すべきメッセージのランクを示す)。もし該当するメッセージが見つかった場合、キューストレージ850に格納するが、もし該当メッセージが見つからなかった場合、シーケンスステータスは、「保留(Pending)」(このシーケンスのメッセージがオーバーフロー領域に存在するが、メッセージランクは、シーケンスランクと同等でない場合)または、「待ち(Waiting)」(オーバーフローストレージ領域にそのシーケンスのメッセージは存在しない)に設定される。   8A-8D, once the outbound handler has finished operating on the message, the outbound handler looks in the overflow storage 806 for messages whose message rank matches the sequence rank (the sequence rank determines the sequence order). To indicate the rank of the next message to be processed). If the corresponding message is found, the message is stored in the queue storage 850. If the corresponding message is not found, the sequence status is “Pending” (the message in this sequence exists in the overflow area, but the message The rank is set to “Waiting” (if there is no message for that sequence in the overflow storage area).

シーケンスロックとタイムアウトの管理
前述した通り、与えられたシーケンスの受信メッセージは、これらのメッセージランクが処理すべきメッセージに合致しない限り、オーバーフロー806に格納される。これは、次と予想される処理すべきメッセージがインバウンドハンドラによって受信されない限り、シーケンス全体にとってはロック状態となる。
Sequence Lock and Timeout Management As described above, received messages of a given sequence are stored in overflow 806 unless their message rank matches the message to be processed. This is locked for the entire sequence unless the next expected message to be processed is received by the inbound handler.

特定の実施形態で、本発明は、このロック状態が処理によって要求されれば、時間的に制限されることを確実にする。この処理はさらに、長さ(秒、分、日数、など)によって表現されるグローバルなシーケンスタイムアウト値を定義する。   In certain embodiments, the present invention ensures that this lock state is limited in time if requested by a process. This process further defines a global sequence timeout value expressed in length (seconds, minutes, days, etc.).

他の実施形態では、シーケンスコンテキスト802は、シーケンスタイムアウトとして定義される絶対時刻値を含んでもよい。インバウンドハンドラまたはアウトバウンドハンドラが与えられたシーケンスコンテキスト記録にアクセスする度に、つまり、シーケンスに属するメッセージを何らかの方法で処理していて、シーケンスに対する動作を示す場合、この絶対時刻値は、現在のシステム時刻とシーケンスタイムアウト期間の総和である値により更新される。   In other embodiments, the sequence context 802 may include an absolute time value defined as a sequence timeout. Each time an inbound or outbound handler accesses a given sequence context record, that is, if the message belonging to the sequence is being processed in some way and indicates action on the sequence, this absolute time value is the current system time. And the value that is the sum of the sequence timeout periods.

さらに別の実施形態では、シーケンスコンテキストのフルリストを定期的に起動し、スキャンするタイムアウトシーケンスコレクターを実装してもよい。この特別な実装によって、シーケンス期間が期限切れとなったシーケンスはいずれも、検出される。この処理は、選択を達成するために、シーケンスタイムアウト値を活用する。   In yet another embodiment, a timeout sequence collector may be implemented that periodically activates and scans the full list of sequence contexts. With this special implementation, any sequence whose sequence period has expired is detected. This process takes advantage of the sequence timeout value to achieve the selection.

これが実装されることによって、本発明による方法、装置、およびシステムは以下のことが可能となる:
・ オーバーフローストレージ806およびシーケンスコンテキスト802における対応するメッセージを消去する;
・ 特定のシーケンス期限イベントに対し、十分な処理と記録を実行する;
・アイテムを順番に取るか、見つかるまで次を待つ間はアイテムを無視して、同期をずらす;
・アラームを発する。
By implementing this, the method, apparatus and system according to the present invention can:
Delete corresponding messages in overflow storage 806 and sequence context 802;
Perform sufficient processing and recording for specific sequence deadline events;
Take items in order or ignore items while waiting for the next until they are found;
・ Sound an alarm.

本発明は、データ処理に多くのアプリケーションを有する。しかし、それは特に以下に示す内容について適している:
・ 企業、より具体的には、ソフトウェア企業のインフラストラクチャのハブとし作動するアプリケーションが長時間のメッセージングを取扱うAMS(Amadeus Messaging Server)などのメッセージングサーバ。予約業務を必要とする業界では、AMSは予約システムおよび出発管理システムの両方で使用される。シーケンシングは、すべてのテレタイプのトラフィックのために実行される。テレタイプのメッセージは、通常、TTYと呼ばれる。TTYタイプBは、航空業界の標準であり、与えられた機能的コンテキストにおいて厳格な順序で処理を行う非同期チャネルを介してメッセージを交換する。例えば、第1メッセージは、搭乗客のリストを含み、第2リストは、非搭乗の乗客(suppressed passengers)を含み、第3リストは、追加の乗客のリストを含む。これらの乗客名簿は、順序を厳格に守る必要がある;
・ 別の分野の用途として、例えば、OHF(OTF high-level framework)があり、これは、保証された非同期配信を実行するための多くの用途で使用されるミドルウェアソフトウェアコンポーネントである。OHFのシーケンシングの主な使用方法として、CDB(coupon database)と電子チケット用途の間の同期化が挙げられる。限られた時間内に、1つのクーポンに多くの変更が加えられることはよくある。これらの変更は、同期を維持するため、正しい順序で、電子チケットアプリケーション、またはクーポンデータベースに転送される必要がある。
The present invention has many applications for data processing. However, it is particularly suitable for the following:
A messaging server, such as an AMS (Amadeus Messaging Server), where an application operating as an infrastructure hub of a company, more specifically a software company, handles long-time messaging. In industries that require a booking service, AMS is used in both booking and departure management systems. Sequencing is performed for all teletype traffic. Teletype messages are usually called TTY. TTY Type B is an airline industry standard that exchanges messages over asynchronous channels that process in a strict order in a given functional context. For example, the first message includes a list of passengers, the second list includes suppressed passengers, and the third list includes a list of additional passengers. These passenger lists need to follow the order strictly;
Another area of application is, for example, OHF (OTF high-level framework), which is a middleware software component used in many applications to perform guaranteed asynchronous delivery. The primary use of OHF sequencing is to synchronize between CDB (coupled database) and electronic ticket applications. Often, many changes are made to a coupon within a limited time. These changes need to be transferred to the electronic ticket application or coupon database in the correct order to remain synchronized.

上記では主に、エアラインまたはエアキャリアにより提供される旅行ソリューションについて取り上げたが、当業者は、本発明の実施形態が、エアラインの使用に限定されず、これらに限定されないが、船舶、鉄道、自動車、バスおよびホテルなどの旅行商品などを含む、他の種類の旅行様式および旅行提供業者にも適応できることを理解されたい。   While the above has primarily focused on travel solutions provided by airlines or air carriers, those skilled in the art will recognize that embodiments of the present invention are not limited to, but not limited to, use of airlines, ships, railways It should be understood that other types of travel styles and travel providers can also be applied, including travel products such as cars, buses and hotels.

上記は、典型的かつ非限定の例を用いて様々な方法、装置、およびソフトウェアを全面から例証し、本発明の実施形態として運用するものである。しかし、上記説明を、添付の図面および請求項と併せると、様々な修正および改造は、関連技術の当業者には明らかにされよう。例の一部として、他の類似した、あるいは、同等の処理、または、アルゴリズム、およびデータ表記は、当業者によって試行されてもよい。さらに、各構成要素、関数、アルゴリズム(例:、など)の名称は単に記述的なもので、限定された意味を持つことを意図しておらず、これらの構成要素、関数、およびアルゴリズムは、適切であればどのような名称で呼んでもよい。本発明における教示の、そのような類似した修正はすべて、本発明の実施形態の範囲に含まれる。   The above illustrates various methods, apparatus, and software from the whole using typical and non-limiting examples, and operates as an embodiment of the present invention. However, various modifications and adaptations will become apparent to those skilled in the relevant art when taken in conjunction with the accompanying drawings and claims. As part of the example, other similar or equivalent processes or algorithms and data representations may be tried by those skilled in the art. Furthermore, the names of each component, function, and algorithm (eg, etc.) are merely descriptive and are not intended to have a limited meaning; these components, functions, and algorithms are You may call it by any name as appropriate. All such similar modifications of the teachings of the present invention are within the scope of embodiments of the present invention.

さらに、本発明の実施形態のいくつかの機能は、他の機能の対応する使用なしに、有利に利用される。そのため、上記説明は、これらに限定されることなく、本発明の原理、教示、および実施形態を単に説明するものである。   Furthermore, some features of embodiments of the present invention are advantageously utilized without the corresponding use of other features. Therefore, the above description is merely illustrative of the principles, teachings, and embodiments of the present invention, without being limited thereto.

本明細書で説明した様々な技術の実施形態は、ディジタル電子回路、コンピュータハードウェア、ハンドヘルド電子機器ハードウェア、ファームウェア、ソフトウェア、またはこれらの組み合わせに実装されてもよい。本実施形態は、データ処理装置(例:プログラマブルプロセッサ、コンピュータ、タブレット、または多数のコンピュータによって)によって実行されるか、データ処理装置の動作を制御するために、プログラム、またはソフトウェア製品として、つまり、情報キャリアに有形に具体化されたコンピュータプログラムとして(例:機械可読ストレージ装置、または伝播される信号内において)実装されてもよい。上記のコンピュータプログラムなどのプログラムは、コンパイルされた、あるいは、インタプリタされた言語を含む、如何なる形式のプログラミング言語で記述することが可能であり、スタンドアローンプログラム、モジュール、コンポーネント、サブルーチン、その他コンピューティング環境において使用が適切な装置を含む如何なる形式でも展開可能である。プログラムは、1台のコンピュータ、またはタブレット、複数のコンピュータ、またはタブレット、1つのサイト、または複数のサイトに分散して、通信ネットワーク、または無線ネットワークを介して相互接続して展開し、実行することが可能である。   Embodiments of the various techniques described herein may be implemented in digital electronic circuitry, computer hardware, handheld electronic hardware, firmware, software, or combinations thereof. This embodiment is executed by a data processing device (eg, by a programmable processor, computer, tablet, or multiple computers) or as a program or software product to control the operation of the data processing device, ie It may be implemented as a computer program tangibly embodied in an information carrier (eg in a machine-readable storage device or in a propagated signal). Programs such as the computer programs described above can be written in any form of programming language, including compiled or interpreted languages, stand-alone programs, modules, components, subroutines, and other computing environments Can be deployed in any form including devices suitable for use. The program is distributed on one computer or tablet, multiple computers or tablets, one site, or multiple sites, interconnected via a communication network or wireless network, and deployed and executed Is possible.

コンピュータプログラムを実行するのに適切なプロセッサの例として、汎用型および専用型マイクロプロセッサ、および、様々なタイプのディジタルコンピュータ、タブレット、または電子機器の1基以上のプロセッサが挙げられる。一般に、プロセッサは、ROM(Read-only memory)またはRAM(Random access memory)またはその両方から命令とデータを受ける。コンピュータの構成要素は、命令を実行する少なくとも1つのプロセッサと、命令およびデータを格納する1つ以上のメモリ装置を備える。一般に、コンピュータ、または電子機器は、データを受信、送信、および送受信するため、さらに、1つ以上の大容量ストレージ装置(例:磁気ディスク、光磁気ディスク、光ディスク)を有するか、効果的に結合されている。   Examples of suitable processors for executing computer programs include general and special purpose microprocessors and one or more processors of various types of digital computers, tablets, or electronic devices. Generally, a processor receives instructions and data from a read-only memory (ROM), a random access memory (RAM), or both. The computer components comprise at least one processor for executing instructions and one or more memory devices for storing instructions and data. In general, a computer or electronic device has one or more mass storage devices (eg, magnetic disk, magneto-optical disk, optical disk) or is effectively coupled to receive, transmit, and transmit and receive data. Has been.

本実施形態は、バックエンドコンポーネントを含むコンピューティングシステム(例:データサーバ)、ミドルウェアコンポーネントを含むコンピューティングシステム(例:アプリケーションサーバ)、フロンドエンドコンポーネントを含むコンピューティングシステム(例:グラフィカルユーザーインタフェース、またはWebブラウザを有し、これらを介してユーザーは、実装プログラムと相互作用が可能なクライアントコンピュータ)、または、そのようなバックエンド、ミドルウェア、またはフロントエンドコンポーネントを組み合わせた、コンピューティングシステムに実装されてもよい。構成要素は、通信ネットワーク、無線ネットワーク、電気通信ネットワークなどの、ディジタルデータ通信の如何なる形式、または媒体により相互接続されてもよい。通信ネットワーク、または電気通信ネットワークの例として、LAN(local area network)およびWAN(wide area network)がある(例:インターネットやWifiネットワークなどの無線ネットワーク)。   The present embodiment includes a computing system that includes a back-end component (eg, a data server), a computing system that includes a middleware component (eg, an application server), a computing system that includes a front-end component (eg, a graphical user interface, or A client computer that has a web browser through which a user can interact with an implementation program) or implemented in a computing system that combines such backend, middleware, or frontend components Also good. The components may be interconnected by any form or medium of digital data communication, such as a communication network, a wireless network, a telecommunications network, etc. Examples of communication networks or telecommunications networks include a local area network (LAN) and a wide area network (WAN) (eg, a wireless network such as the Internet or a WiFi network).

本明細書では、実装された特定の機能について説明してきたが、多くの修正、代替、変更、および等価が発生することを当業者は理解されたい。したがって、本明細書に記載の請求項には、本発明の実施形態の精神と範囲にしたがって、そのようなすべての修正や変更が含まれることを理解されたい。   Although specific features implemented have been described herein, those skilled in the art will appreciate that many modifications, alternatives, changes, and equivalents will occur. Accordingly, it is to be understood that the claims herein contain all such modifications and changes in accordance with the spirit and scope of the embodiments of the present invention.

Claims (21)

インバウンドハンドラ層を形成する複数のインバウンドハンドラと、アウトバウンドハンドラ層を形成する複数のアウトバウンドハンドラと、を有する分散並列システムにおいて分散非同期メッセージのシーケンシングを、少なくとも1つのデータプロセッサを用いて、コンピュータにより実行する方法であって:
複数のインバウンドハンドラのうちの何れかのインバウンドハンドラが、着信メッセージを含むシーケンスを識別するシーケンス相関値を含む着信メッセージを受信するステップ;
共有シーケンスストレージにおける前記シーケンスのシーケンスステータスをチェックするステップ;および
前記シーケンスにおいてメッセージの順序を維持するため、着信メッセージが次に処理するメッセージであるかを判断するステップ;を有し、
シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラがいずれも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理するメッセージであると判断された場合、その着信メッセージをキューストレージに転送し、次いで、処理のためにアウトバウンドハンドラ層の使用可能なアウトバウンドハンドラによってメッセージを取得し、
シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、あるいは、キューストレージが前記シーケンスの処理すべきメッセージをすでに含んでいる場合、あるいは、着信メッセージは前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージを共有オーバーフローストレージのメモリに格納し、さらなる処理のために保持する、方法。
Distributed asynchronous message sequencing by a computer using at least one data processor in a distributed parallel system having a plurality of inbound handlers forming an inbound handler layer and a plurality of outbound handlers forming an outbound handler layer How to:
The inbound handler of any of the plurality of inbound handlers receiving an incoming message that includes a sequence correlation value that identifies a sequence that includes the incoming message;
Checking the sequence status of the sequence in shared sequence storage; and determining whether the incoming message is the next message to process in order to maintain the order of messages in the sequence;
If the sequence status indicates that none of the outbound handler layer's outbound handlers are currently processing messages in the sequence, and it is determined that the incoming message is a message to be processed next to the sequence, the incoming Forward the message to queue storage, then get the message by an outbound handler available in the outbound handler layer for processing,
If the sequence status indicates that at least one of the outbound handlers of the outbound handler is currently processing messages of the sequence, or if the queue storage already contains messages to be processed of the sequence, Alternatively, if it is determined that the incoming message is not a message to be processed next in the sequence, the incoming message is stored in the memory of the shared overflow storage and retained for further processing.
前記シーケンスのメッセージの順序を維持するために、着信メッセージが次に処理すべきメッセージであるか判断する、以下のステップを含む請求項1に記載の方法であって:
前記シーケンスにおける着信メッセージの順序を示すメッセージランクを判断するステップ;および
メッセージランクを、前記シーケンスの処理すべき次のメッセージのランクを定義するシーケンスランクと比較するステップ;を有し、
メッセージランクがシーケンスランクと同一の場合、そのメッセージは、前記シーケンスにおけるメッセージの順序を維持するために、次に処理すべきメッセージと判断され、
メッセージランクがシーケンスランクと同一でない場合、そのメッセージは、前記シーケンスにおけるメッセージの順序を維持するために次に処理すべきメッセージとは判断されない、方法。
The method of claim 1, comprising determining whether an incoming message is a next message to be processed in order to maintain the order of the messages in the sequence:
Determining a message rank indicating the order of incoming messages in the sequence; and comparing the message rank with a sequence rank defining a rank of the next message to be processed in the sequence;
If the message rank is the same as the sequence rank, the message is determined to be the next message to be processed in order to maintain the order of the messages in the sequence;
If the message rank is not the same as the sequence rank, the message is not determined to be the next message to be processed in order to maintain the order of the messages in the sequence.
請求項1又は2に記載の方法であって、アウトバウンドハンドラにおける与えられたシーケンスのメッセージの処理が完了した際に、前記与えられたシーケンスのシーケンスランクがインクリメントされ、シーケンスのシーケンスランクがインクリメントされたとき、オーバーフローストレージが、インクリメントされたシーケンスランクと同一であるメッセージランクを有するメッセージを含む場合、このメッセージをキューストレージに転送する、方法。   3. The method according to claim 1 or 2, wherein when a message of a given sequence is completed in an outbound handler, the sequence rank of the given sequence is incremented and the sequence rank of the sequence is incremented. When the overflow storage includes a message having a message rank that is the same as the incremented sequence rank, the method forwards the message to the queue storage. 請求項2又は3に記載の方法であって、受信した着信メッセージに、シーケンスのメッセージランクを示すインデックスが付与されていない場合のメッセージランクを判断するステップは、シーケンス内の着信メッセージのランクを示すメッセージランクを着信メッセージに割り当て、割り当てられたメッセージランクをシーケンスストレージに格納することを含む、方法。   4. The method according to claim 2, wherein the step of determining the message rank when the received incoming message is not given an index indicating the message rank of the sequence indicates the rank of the incoming message in the sequence. Assigning a message rank to the incoming message and storing the assigned message rank in sequence storage. 請求項4に記載の方法であって、割り当てられたメッセージランクは、前記シーケンスに1をプラスしてインクリメントした、インバウンドハンドラの任意の1箇所において最後に受信したメッセージのランクに相当している、方法。   5. The method of claim 4, wherein the assigned message rank corresponds to the rank of the last message received at any one place in the inbound handler, incremented by adding 1 to the sequence. Method. 請求項1〜3の何れか1項目に記載の方法であって、インバウンドハンドラにおいて受信した着信メッセージには、シーケンス内のメッセージランクを示すインデックスが付与されている、方法。   The method according to any one of claims 1 to 3, wherein an index indicating a message rank in a sequence is assigned to an incoming message received by an inbound handler. 請求項2〜6のいずれか1項にに記載の方法であって、キューストレージが着信メッセージのシーケンスの、どのメッセージをも含んでおらず、着信メッセージのメッセージランクがシーケンスストレージに示されたシーケンスランクよりも大きい場合、着信メッセージは、シーケンスランクがインクリメントされ着信メッセージのメッセージランクと同等になるまで、オーバーフローストレージに格納される、方法。   The method according to any one of claims 2 to 6, wherein the queue storage does not contain any message of the sequence of incoming messages, and the message rank of the incoming message is indicated in the sequence storage. If greater than the rank, the incoming message is stored in overflow storage until the sequence rank is incremented and is equal to the message rank of the incoming message. 請求項1〜7のいずれか1項に記載の方法であって、アウトバウンドハンドラは非同期に作動することにより、メッセージの送信が可能となり、メッセージを送信後、このメッセージの受け手から肯定応答を受信するまで、別の処理が可能となる、方法。   The method according to any one of claims 1 to 7, wherein the outbound handler operates asynchronously, so that a message can be transmitted, and after transmitting the message, an acknowledgment is received from the recipient of the message. Until another process is possible. 請求項1〜8のいずれか1項に記載の方法であって、アウトバウンドハンドラは、メッセージを受け手に送信する配信処理と、受け手から肯定応答を受信する肯定応答処理を含み、配信処理および肯定確認動作は独立している、方法。   The method according to any one of claims 1 to 8, wherein the outbound handler includes a delivery process for transmitting a message to the receiver and an acknowledgment process for receiving an acknowledgment from the receiver, and the delivery process and the positive confirmation. The way the behavior is independent. 請求項1〜9のいずれか1項に記載の方法であって、着信メッセージを受信してから、チェックするステップまで、すべてのインバウンドハンドラが前記シーケンスの別のメッセージを受信することを防止される、インバウンドをロックするステップを、着信メッセージがシーケンスストレージに格納されるまで、あるいは、キューストレージに送信されるまで実行し、前記インバウンドをロックするステップは、シーケンスストレージに格納されている前記シーケンス専用のミューテックスをロックすることが含まれる、方法。   10. A method as claimed in any preceding claim, wherein all inbound handlers are prevented from receiving another message in the sequence from receiving an incoming message until checking. Performing the step of locking the inbound until the incoming message is stored in the sequence storage or being sent to the queue storage, and the step of locking the inbound is dedicated to the sequence stored in the sequence storage. A method, comprising locking the mutex. 請求項1〜10のいずれか1項に記載の方法であって、キューストレージからアウトバウンドハンドラに着信メッセージを転送後、すべての他のアウトバウンドハンドラが前記シーケンスの別のメッセージを受信することを、着信メッセージの処理が完了するまで防止される、アウトバウンドをロックするステップを実行し、アウトバウンドをロックするステップに、シーケンスストレージに格納されている前記シーケンス専用のミューテックスをロックすることが含まれている、方法。   11. The method according to any one of claims 1-10, wherein after an incoming message is transferred from queue storage to an outbound handler, all other outbound handlers receive another message in the sequence. Performing the locking outbound step, which is prevented until message processing is complete, and the locking outbound step includes locking the sequence-specific mutex stored in sequence storage. . 請求項11に記載の方法であって、アウトバウンドハンドラが利用可能であるとき、キューストレージの中の、前記メッセージのシーケンスのミューテックスをチェックし、ミューテックスがロックされていない場合のみ、前記メッセージを取得する、方法。   12. The method according to claim 11, wherein when an outbound handler is available, the mutex of the sequence of messages in queue storage is checked and the message is obtained only if the mutex is not locked. ,Method. 請求項2〜12の何れか1項目に記載の方法であって、シーケンスランクよりも大きいメッセージランクを有するメッセージが最初にオーバーフローストレージに格納され、次に、メッセージのシーケンスとメッセージの何れか一方に割り当てられたタイムアウト値に到達した後、オーバーフローストレージから破棄される、方法。   13. A method as claimed in any one of claims 2 to 12, wherein a message having a message rank greater than the sequence rank is first stored in the overflow storage, and then the message sequence and / or the message A method that is discarded from overflow storage after reaching the assigned timeout value. ソフトウェアプログラム命令を含む非一時的コンピュータ可読媒体であって、少なくとも1つのデータプロセッサによるソフトウェアプログラム命令の実行は、請求項1〜13の何れか1項目に記載の方法の実行を含む、非一時的コンピュータ可読媒体。   A non-transitory computer readable medium containing software program instructions, wherein execution of the software program instructions by at least one data processor comprises execution of the method of any one of claims 1-13. Computer readable medium. 非同期メッセージをシーケンシングする分散並列型処理システムであって:
インバウンドハンドラ層であって、少なくとも1つのデータプロセッサを含む複数のインバウンドハンドラを含み、複数のインバウンドハンドラのそれぞれは、様々なシーケンスに関連する複数の着信メッセージを独立して受信するように構成されている、複数のインバウンドハンドラを含む、インバウンドハンドラ層;および、
アウトバウンドハンドラ層であって、少なくとも1つのデータプロセッサを含む複数のアウトバウンドハンドラを含み、複数のアウトバウンドハンドラのそれぞれは、複数の着信メッセージを独立して処理し転送するように構成されている、複数のアウトバウンドハンドラを含む、アウトバウンドハンドラ層、を含む分散並列型処理システムであって;システムは:
少なくとも1つのメモリを含むストレージ層を含み;当該ストレージ層は:
- 複数のアウトバウンドハンドラへ伝送される状態にある着信メッセージを格納するキューストレージ;および
- 共有シーケンスストレージを含み;当該共有シーケンスストレージは:
- 着信メッセージの各シーケンスのステータスを維持し、更新するためのシーケンスステータスコンテキスト;および
- インバウンドハンドラからのメッセージを受信し、それらを順次、キューストレージに転送するよう構成された共有オーバーフローストレージ;を含み、
本システムも、着信メッセージが、このメッセージのシーケンスにおけるメッセージの順序を維持するため、次に処理すべきメッセージであるかどうかを判断し、少なくとも1つのデータプロセッサにより実行される以下のステップを実行するよう構成されたシステムであって:
- シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラがいずれも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理するメッセージであると判断された場合、その着信メッセージをキューストレージに送信し、次いで、処理のために使用可能なアウトバウンドハンドラによってメッセージを取り出すステップ;および
- シーケンスステータスが、アウトバウンドハンドラ層のアウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、または、キューストレージが前記シーケンスの処理すべきメッセージをすでに含んでいる場合、あるいは、着信メッセージが前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージをオーバーフローストレージのメモリに格納し、さらなる処理のために保持する、ステップを実行するよう構成された非同期メッセージをシーケンシングする分散並列型処理システム。
A distributed parallel processing system for sequencing asynchronous messages:
An inbound handler layer comprising a plurality of inbound handlers including at least one data processor, each of the plurality of inbound handlers configured to independently receive a plurality of incoming messages associated with various sequences An inbound handler layer comprising a plurality of inbound handlers; and
An outbound handler layer comprising a plurality of outbound handlers including at least one data processor, each of the plurality of outbound handlers configured to independently process and forward a plurality of incoming messages; A distributed parallel processing system that includes an outbound handler layer, including an outbound handler; the system:
Including a storage layer including at least one memory;
-Queue storage to store incoming messages that are ready to be transmitted to multiple outbound handlers; and
-Includes shared sequence storage; the shared sequence storage is:
-A sequence status context to maintain and update the status of each sequence of incoming messages; and
-Shared overflow storage configured to receive messages from inbound handlers and forward them sequentially to queue storage;
The system also determines whether the incoming message is the next message to be processed in order to maintain the message order in this sequence of messages and performs the following steps executed by at least one data processor: A system configured as follows:
-If the sequence status indicates that none of the outbound handler layer's outbound handlers are currently processing messages in the sequence and it is determined that the incoming message is a message to be processed next to the sequence, Sending the incoming message to queue storage and then retrieving the message by an outbound handler available for processing; and
-If the sequence status indicates that at least one of the outbound handler layer's outbound handlers is currently processing messages of the sequence, or if the queue storage already contains messages to be processed of the sequence Or, if it is determined that the incoming message is not the next message to be processed in the sequence, the incoming message is stored in an overflow storage memory and held for further processing. A distributed parallel processing system for sequencing asynchronous messages.
複数の並列型インバウンドハンドラおよび複数の並列型アウトバウンドハンドラを有し、並列環境における少なくとも1つのサーバプリケーションと少なくとも1つのクライアントアプリケーション間で非同期メッセージを処理するために少なくとも1つのデータプロセッサを用いて、コンピュータにより実行する旅行モニタリング方法であって:
複数のインバウンドハンドラのうちの1つのインバウンドハンドラにおいて、受信メッセージを含むシーケンスを特定するシーケンス相関値が伴う着信メッセージを受信するステップと;
シーケンスストレージにおける前記シーケンスのシーケンスステータスをチェックするステップと;
前記シーケンスにおいてメッセージの順序を維持するため、着信したメッセージが次に処理するメッセージであるかを判断するステップと;を有し、
シーケンスステータスが、複数のアウトバウンドハンドラのうちのいずれのアウトバウンドハンドラも現時点で、前記シーケンスのメッセージを処理していないことを示し、着信メッセージが前記シーケンスの次に処理するメッセージであると判断された場合、その着信メッセージをキューストレージに送信し、次いで、処理のために使用可能なアウトバウンドハンドラに転送し、
シーケンスステータスが、アウトバウンドハンドラの少なくとも1つが、現時点で前記シーケンスのメッセージを処理していることを示す場合、または、キューストレージが前記シーケンスの処理すべきメッセージをすでに含んでいる場合、あるいは、着信メッセージが前記シーケンスの次に処理すべきメッセージではないと判断された場合、着信メッセージを共有オーバーフローストレージに格納し、さらなる処理のために保持し、
メッセージは、乗客に関するデータと、交通サービスのリファレンスに関する、シーケンス相関値を含むデータを含む、旅行モニタリング方法。
Using at least one data processor to process asynchronous messages between at least one server application and at least one client application in a parallel environment having a plurality of parallel inbound handlers and a plurality of parallel outbound handlers; A computer-implemented travel monitoring method comprising:
Receiving an incoming message in one of the plurality of inbound handlers with a sequence correlation value that identifies a sequence that includes the received message;
Checking the sequence status of the sequence in sequence storage;
Determining whether the incoming message is the next message to be processed in order to maintain the order of the messages in the sequence;
When the sequence status indicates that none of the plurality of outbound handlers is currently processing the message of the sequence, and it is determined that the incoming message is a message to be processed next to the sequence , Send the incoming message to queue storage, then forward it to an outbound handler available for processing,
If the sequence status indicates that at least one of the outbound handlers is currently processing a message of the sequence, or if the queue storage already contains a message to be processed of the sequence, or an incoming message Is not a message to be processed next in the sequence, the incoming message is stored in shared overflow storage and held for further processing;
The travel monitoring method, wherein the message includes data relating to passengers and data including sequence correlation values relating to traffic service references.
請求項16に記載の方法であって、処理済みのメッセージをアウトバウンドハンドラから、旅行予約システム、航空会社の在庫システム、航空会社のイーチケットシステム、空港の出国管理システム、空港の運用システム、航空会社の運用システム、および、地上業務の運用システムの少なくとも1つに転送する、方法。   17. The method of claim 16, wherein the processed message is sent from an outbound handler to a travel reservation system, an airline inventory system, an airline e-ticket system, an airport departure management system, an airport operation system, and an airline. And a method for transferring to at least one of a ground service operation system. 請求項16および17の何れか1項に記載の方法であって、交通サービスのリファレンスは少なくとも、フライトナンバー、日付および予約クラスうちの1つを含む、方法。   18. A method according to any one of claims 16 and 17, wherein the traffic service reference includes at least one of a flight number, a date and a booking class. 請求項16〜18の何れか1項に記載の方法であって、メッセージは、搭乗客、キャンセルした乗客、追加の乗客の何れか1つを記述する、方法。   19. A method according to any one of claims 16 to 18, wherein the message describes any one of a passenger, a canceled passenger, or an additional passenger. 請求項16〜19の何れか1項に記載の方法であって、フライトの出発時刻または、フライト提示の終了、あるいは、プロモーションの終了のうちの何れか1つによって起動されるシーケンスタイムアウト値に到達後にオーバーフローストレージに格納されている着信メッセージを削除するため、各着信メッセージにはシーケンスタイムアウト値が付与される、方法。   20. The method according to any one of claims 16 to 19, wherein a sequence timeout value triggered by any one of a flight departure time, a flight presentation end, or a promotion end is reached. A method in which each incoming message is given a sequence timeout value to later delete incoming messages stored in overflow storage. ソフトウェアプログラム命令を含む非一時的コンピュータ可読媒体であって、少なくとも1つのデータプロセッサによるソフトウェアプログラム命令の実行は、請求項16〜20の何れか1項に記載の方法からなる動作の実行を含む、非一時的コンピュータ可読媒体。   21. A non-transitory computer readable medium comprising software program instructions, wherein execution of software program instructions by at least one data processor comprises execution of operations comprising the method of any one of claims 16-20. Non-transitory computer readable medium.
JP2015524671A 2012-08-02 2013-08-01 Method, system, and computer program product for asynchronous message sequencing in a distributed parallel environment Active JP6198825B2 (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
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
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
US13/565,284 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 true JP2015527658A (en) 2015-09-17
JP2015527658A5 JP2015527658A5 (en) 2017-08-24
JP6198825B2 JP6198825B2 (en) 2017-09-20

Family

ID=48953356

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015524671A Active JP6198825B2 (en) 2012-08-02 2013-08-01 Method, system, and computer program product for asynchronous message sequencing in a distributed parallel environment

Country Status (5)

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

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107093138B (en) * 2017-04-21 2019-04-30 山东佳联电子商务有限公司 Auction Ask-Bid System and its operation method based on distributed clog-free asynchronous message tupe
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 (en) * 2019-09-29 2024-04-12 深圳市华力特电气有限公司 Asynchronous message arrangement method and device
CN111045839A (en) * 2019-12-04 2020-04-21 中国建设银行股份有限公司 Sequence calling method and device based on two-phase transaction message in distributed environment
CN111506430B (en) * 2020-04-23 2024-04-19 上海数禾信息科技有限公司 Method and device for processing data under multitasking and electronic equipment
CN111562888B (en) * 2020-05-14 2023-06-23 上海兆芯集成电路有限公司 Scheduling method for self-updating memory

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07319787A (en) * 1994-05-23 1995-12-08 Hewlett Packard Co <Hp> Message processing method and processing node
JPH09101901A (en) * 1995-10-06 1997-04-15 N T T Data Tsushin Kk System and method for message communication between processes performed on personal computer operated by multiprocess
WO2008105099A1 (en) * 2007-02-28 2008-09-04 Fujitsu Limited Application-cooperative controlling program, application-cooperative controlling method, and application-cooperative controlling apparatus
US7991847B2 (en) * 2009-05-18 2011-08-02 Amadeus S.A.S. Method and system for managing the order of messages

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US8392925B2 (en) * 2009-03-26 2013-03-05 Apple Inc. Synchronization mechanisms based on counters
US8495656B2 (en) * 2010-10-15 2013-07-23 Attivio, Inc. Ordered processing of groups of messages

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07319787A (en) * 1994-05-23 1995-12-08 Hewlett Packard Co <Hp> Message processing method and processing node
JPH09101901A (en) * 1995-10-06 1997-04-15 N T T Data Tsushin Kk System and method for message communication between processes performed on personal computer operated by multiprocess
WO2008105099A1 (en) * 2007-02-28 2008-09-04 Fujitsu Limited Application-cooperative controlling program, application-cooperative controlling method, and application-cooperative controlling apparatus
US7991847B2 (en) * 2009-05-18 2011-08-02 Amadeus S.A.S. Method and system for managing the order of messages

Also Published As

Publication number Publication date
IN2014DN10080A (en) 2015-08-21
JP6198825B2 (en) 2017-09-20
WO2014019701A1 (en) 2014-02-06
KR20150037980A (en) 2015-04-08
CN104428754A (en) 2015-03-18
KR101612682B1 (en) 2016-04-14
CN104428754B (en) 2018-04-06

Similar Documents

Publication Publication Date Title
JP6198825B2 (en) Method, system, and computer program product for asynchronous message sequencing in a distributed parallel environment
US9208476B2 (en) Counting and resetting broadcast system badge counters
US8903925B2 (en) Scheduled messages in a scalable messaging system
US8139596B2 (en) Communicating prioritized messages to a destination queue from multiple source queues using source-queue-specific priority values
US10133797B1 (en) Distributed heterogeneous system for data warehouse management
US20140089619A1 (en) Object replication framework for a distributed computing environment
US8984530B2 (en) Queued message dispatch
US20110173252A1 (en) System and method for context-based serialization of messages in a parallel execution environment
KR20140072044A (en) Distributing multi-source push notifications to multiple targets
US9262241B2 (en) Computer system, computer-implemented method and computer program product for sequencing incoming messages for processing at an application
US10728205B2 (en) Multi-standard message processing
US10055695B2 (en) Throttling solutions into a legacy inventory system during a service disruption
WO2019231645A1 (en) Change notifications for object storage
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
JP6067714B2 (en) Scale-out system that acquires event data
US20220382605A1 (en) Classical management of qubit requests
US8762533B2 (en) Moving a project in a complex event processing cluster
JP7083850B2 (en) Multi-standard message processing
CN117806785A (en) Data processing system

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250