IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

<>
  • 特許-メッセージ・ストリームの処理 図1
  • 特許-メッセージ・ストリームの処理 図2
  • 特許-メッセージ・ストリームの処理 図3
  • 特許-メッセージ・ストリームの処理 図4
  • 特許-メッセージ・ストリームの処理 図5
  • 特許-メッセージ・ストリームの処理 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-02
(45)【発行日】2024-05-14
(54)【発明の名称】メッセージ・ストリームの処理
(51)【国際特許分類】
   G06F 11/34 20060101AFI20240507BHJP
【FI】
G06F11/34 176
【請求項の数】 17
(21)【出願番号】P 2022509674
(86)(22)【出願日】2020-08-18
(65)【公表番号】
(43)【公表日】2022-10-25
(86)【国際出願番号】 IB2020057774
(87)【国際公開番号】W WO2021033135
(87)【国際公開日】2021-02-25
【審査請求日】2023-01-20
(31)【優先権主張番号】16/545,121
(32)【優先日】2019-08-20
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】ロス、マーティン
(72)【発明者】
【氏名】エドワーズ、アンドリュー、スティーブン、マーカス
【審査官】福西 章人
(56)【参考文献】
【文献】米国特許出願公開第2006/0039393(US,A1)
【文献】特開2010-134724(JP,A)
【文献】特開2017-199117(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/07
11/28-11/36
H04L 13/00-13/18
51/00-51/58
(57)【特許請求の範囲】
【請求項1】
メッセージ・ストリームを処理するためのコンピュータ実施方法であって、前記方法が、
メッセージ・ストリームのメッセージを取得することであって、それぞれのメッセージが関連するタイムスタンプを有する、取得することと、
それぞれのメッセージを、複数の待ち行列のうちの少なくとも1つの待ち行列に格納することであって、それぞれの待ち行列の前記メッセージが、前記メッセージのタイムスタンプに基づいて、最も早いタイムスタンプを有するメッセージが前記待ち行列の先頭に配置されるように順序付けされる、格納することと、
ターゲット待ち行列の先頭からのターゲット・メッセージの取出しを、前記ターゲット・メッセージの前記タイムスタンプと前記複数の待ち行列のうちの前記ターゲット待ち行列を含まない他の待ち行列の各々における先頭メッセージの前記タイムスタンプとの間のタイミング差に基づいて制御することであって、
前記他の待ち行列の各々について、前記ターゲット・メッセージの前記タイムスタンプと前記待ち行列の先頭メッセージとの間のタイミング差を決定することと、
決定された前記タイミング差の中からタイミング差の最大値を識別することと、
前記タイミング差の最大値がしきい値を超えているかどうかに基づいて、前記ターゲット待ち行列からの前記ターゲット・メッセージの取出しを許可することを含む、前記制御することと、
を含む、コンピュータ実施方法。
【請求項2】
前記ターゲット・メッセージの取出しを許可することが、
前記タイミング差の最大値が前記しきい値よりも小さい場合に、前記ターゲット待ち行列からの前記ターゲット・メッセージの取出しを許可すること
を含む、請求項に記載の方法。
【請求項3】
前記タイミング差の最大値が前記しきい値を超えている場合に、前記ターゲット待ち行列からの前記メッセージの取出しを拒否すること、および
前記ターゲット待ち行列からの前記メッセージの前記取出しが拒否されたことに応答して、エラー・メッセージを生成すること
をさらに含む、請求項に記載の方法。
【請求項4】
拒否されている前記ターゲット待ち行列からの前記メッセージの取出しを遅延させること
をさらに含む、請求項から請求項のいずれか一項に記載の方法。
【請求項5】
前記最大値に関連した前記メッセージがもはや前記メッセージの関連待ち行列にないと判定すること、
決定された前記タイミング差の中から、残りのタイミング差の最大値を識別すること、および
前記残りのタイミング差の最大値が前記しきい値よりも小さい場合に、前記ターゲット待ち行列からの前記ターゲット・メッセージの取出しを許可すること
をさらに含む、請求項に記載の方法。
【請求項6】
時間的整列要件を表す入力信号を受け取ること、および
受け取った前記入力信号に基づいて前記しきい値を決定すること
をさらに含む、請求項から請求項のいずれか一項に記載の方法。
【請求項7】
前記しきい値が、それぞれの待ち行列の中の前記先頭メッセージと第2のメッセージのタイミング差の平均に等しい、請求項2から請求項のいずれか一項に記載の方法。
【請求項8】
取得したそれぞれのメッセージについて、
前記メッセージに関連した時刻を表すタイムスタンプを生成すること、および
生成された前記タイムスタンプを前記メッセージに関連づけること
をさらに含む、請求項1から請求項のいずれか一項に記載の方法。
【請求項9】
それぞれのメッセージが、複数のトピックのうちの少なくとも1つのトピックに関係しており、
前記方法が、前記複数のトピックのそれぞれのトピックについて、少なくとも1つのトピックに関連した複数の待ち行列を定義することをさらに含み、
それぞれのメッセージを、複数の待ち行列のうちの少なくとも1つの待ち行列に前記格納することが、それぞれのメッセージを、前記メッセージが関係する前記トピックに関連した前記複数の待ち行列のうちの少なくとも1つの待ち行列に格納することを含む、
請求項1から請求項のいずれか一項に記載の方法。
【請求項10】
コンピュータに、請求項1から請求項のいずれか一項に記載の方法における各ステップを実行させる、コンピュータ・プログラム。
【請求項11】
請求項1から請求項のいずれか一項に記載の方法における各ステップをコンピュータに実行させるためのコンピュータ・プログラムを記憶した、コンピュータ可読ストレージ媒体。
【請求項12】
メッセージ・ストリームを処理するためのシステムであって、前記システムが、
メッセージ・ストリームのメッセージを取得するように構成されたインタフェースであって、それぞれのメッセージが関連するタイムスタンプを有する、インタフェースと、
それぞれのメッセージを、複数の待ち行列のうちの少なくとも1つの待ち行列に格納するように構成された待ち行列構成要素であって、それぞれの待ち行列の前記メッセージが、前記メッセージのタイムスタンプに基づいて、最も早いタイムスタンプを有するメッセージが前記待ち行列の先頭に配置されるように順序付けされる、待ち行列構成要素と、
ターゲット待ち行列の先頭からのターゲット・メッセージの取出しを、前記ターゲット・メッセージの前記タイムスタンプと前記複数の待ち行列のうちの前記ターゲット待ち行列ではない他の待ち行列の各々における先頭メッセージの前記タイムスタンプとの間のタイミング差に基づいて制御するように構成されたメッセージ取出し構成要素であって、
前記他の待ち行列の各々について、前記ターゲット・メッセージの前記タイムスタンプと前記待ち行列の先頭メッセージとの間のタイミング差を決定し、
決定された前記タイミング差の中からタイミング差の最大値を識別し、
前記タイミング差の最大値がしきい値を超えているかどうかに基づいて、リクエストされた前記待ち行列からの前記ターゲット・メッセージの取出しを許可するように構成された、前記メッセージ取出し構成要素と、
を備える、システム。
【請求項13】
前記メッセージ取出し構成要素が、
前記タイミング差の最大値が前記しきい値を超えていない場合に、前記リクエストされた待ち行列からの前記ターゲット・メッセージの取出しを許可する
ように構成された、請求項12に記載のシステム。
【請求項14】
前記メッセージ取出し構成要素がさらに、前記タイミング差の最大値が前記しきい値を超えている場合に、前記リクエストされた待ち行列からの前記ターゲット・メッセージの取出しを拒否したことに応答して、エラー・メッセージを生成するように構成された、請求項12または請求項13に記載のシステム。
【請求項15】
時間的整列要件を表す入力信号を受け取り、受け取った前記入力信号に基づいて前記しきい値を決定するように構成された整列設定構成要素
をさらに備える、請求項12から請求項14のいずれか一項に記載のシステム。
【請求項16】
取得したそれぞれのメッセージについて、前記メッセージに関連した時刻を表すタイムスタンプを生成し、生成された前記タイムスタンプをそれぞれのメッセージに関連づけるように構成されたタイミング構成要素
をさらに備える、請求項12から請求項15のいずれか一項に記載のシステム。
【請求項17】
それぞれのメッセージが、複数のトピックのうちの少なくとも1つのトピックに関係しており、
前記待ち行列構成要素がさらに、前記複数のトピックのそれぞれのトピックについて、前記トピックに関連した複数の待ち行列を定義するように構成されており、
前記待ち行列構成要素がさらに、それぞれのメッセージを、前記メッセージが関係する前記トピックに関連した前記複数の待ち行列のそれぞれの待ち行列に格納するように構成されている、
請求項12から請求項16のいずれか一項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は一般にデータの処理に関し、より詳細には、時間メッセージ・ストリーム(temporal message stream)を処理するための方法に関する。
【0002】
本開示はさらに、メッセージ・ストリームを処理するためのシステムに関する。
【0003】
本開示はさらに、システムのプロセッサが該方法を実施することを可能にするコンピュータ可読プログラム・コードを含むコンピュータ・プログラム製品に関する。
【背景技術】
【0004】
時間的データ(temporal data)(または厳密な順序付けは必要としないが、同様の時刻にデータを処理することを求めるデータ)を処理するための伝統的なデータ処理システムは通常、データ・ストリームを処理するように適合された処理エンジンを備えることができる。このような処理エンジンは、高速データ・ストリームをリアルタイムで処理することができ、異なるサイズのストリームに対応するために、データ・ストリームのサイズに基づいて処理エンジンをスケーリングすることができる。しかしながら、このスケーリングは、出力データの順序の誤りにつながることがあり、したがって結果として得られる出力データが使用不能になることがある。
【0005】
例えば、システム内のアプリケーションが、計量データ(例えば応答時間、トランザクション速度、および中央処理ユニット(CPU)使用量)を、メッセージ・ハブを通して計量処理エンジンに送ることがある。続いて、計量処理エンジンは、その計量データを、オープンソースの計量解析ツールに送ることがある。計量処理エンジンのスケーリングは、計量データに対応するトピック(topic)をパーティション(partition)(または待ち行列(キュー、queue))に分割することを含み、このことは、計量処理エンジンのインスタンス間で計量データを共用することを可能にする。しかしながら、計量処理エンジンのインスタンスの1つに問題が生じた場合には、それらのインスタンスが同期しないことがあり、その結果、計量解析ツールのユーザインタフェースにおいて使用不能な出力が生じることがある(例えば、トランザクション速度データは、他のデータと同期していないワークロード・スパイクを示すことがあり、このことは正確なデータ相関および問題診断を妨げる)。
【0006】
別の例では、大量のアイテムを販売または配給している会社(例えばチケット販売会社)が、アイテムの注文に対応する行動と注文の処理に対応する行動とを分離することによって、高い注文速度を処理することがある。アイテムの注文は、そのアイテムに特有のトピック上にメッセージを置くことに帰着することがあり、複数の注文メッセージ(すなわち生成された注文に対応するメッセージ)が、そのトピックに対応するいくつかのパーティション(以後、待ち行列と呼ぶ)に亘って配置される。それぞれの待ち行列の中のメッセージを処理するように複数の処理エンジンを適合させることができる。しかしながら、メッセージの処理が、複数の処理エンジンに不均等に分配され得るリスクがある。その結果として、このことは、データが誤った順序で到着するリスク、例えば、1人の個人が、やはり注文したアイテムを受け取ることになっている別の個人からの注文よりもかなり後に注文を出した場合であっても、その人が、大量のアイテムのうちの最後のアイテムを受け取るリスク、を増大させる。さらに、処理エンジンが「遅い」ために、個人の注文が履行されないリスクが増大する可能性もある。
【0007】
したがって、当技術分野では、上述の課題を解決することが求められている。
【発明の概要】
【0008】
本開示はさらに、メッセージ・ストリームを処理するためのシステムを提供することを目的とする。
【0009】
本開示は、メッセージ・ストリームを処理するためのコンピュータ実施方法を提供することを目的とする。
【0010】
本開示はさらに、コントローラ・ユニットによって実行されたときに提案された方法を実施するコンピュータ・プログラム・コードを含むコンピュータ・プログラム製品を提供することを目的とする。
【0011】
本開示の一態様によれば、メッセージ・ストリームを処理するためのコンピュータ実施方法が提供される。この方法は、メッセージ・ストリームのメッセージを取得することを含み、それぞれのメッセージは、関連づけられたタイムスタンプを有する。この方法はさらに、それぞれのメッセージを、複数の待ち行列のうちの少なくとも1つの待ち行列に格納することを含み、それぞれの待ち行列のメッセージは、それらのメッセージのタイムスタンプに基づいて、最も早いタイムスタンプを有するメッセージがその待ち行列の先頭に配置されるように順序付けされる。この方法はさらに、ターゲット待ち行列の先頭からのターゲット・メッセージの取出し(retrieval)を、ターゲット・メッセージのタイムスタンプと複数の待ち行列のうちの他の待ち行列の各々における先頭メッセージのタイムスタンプとの間のタイミング差に基づいて制御することを含む。
【0012】
本開示の別の態様によれば、メッセージ・ストリームを処理するためのコンピュータ・プログラム製品が提供される。このコンピュータ・プログラム製品は、プログラム命令が実装されたコンピュータ可読ストレージ媒体を含み、このプログラム命令は、提案された実施形態による方法を実行することを処理ユニットに実行させるように処理ユニットによって実行可能である。
【0013】
本開示の別の態様によれば、少なくとも1つのプロセッサと、一実施形態によるコンピュータ・プログラム製品とを備える処理システムが提供される。この少なくとも1つのプロセッサは、前記コンピュータ・プログラム製品のコンピュータ・プログラム・コードを実行するように適合されている。
【0014】
本開示のさらに別の態様によれば、メッセージ・ストリームを処理するシステムが提供される。このシステムは、メッセージ・ストリームのメッセージを取得するように構成されたインタフェースを備え、それぞれのメッセージは関連づけられたタイムスタンプを有する。このシステムはさらに、それぞれのメッセージを、複数の待ち行列のうちの少なくとも1つの待ち行列に格納するように構成された待ち行列構成要素を備える。それぞれの待ち行列のメッセージは、それらのメッセージのタイムスタンプに基づいて、最も早いタイムスタンプを有するメッセージがその待ち行列の先頭に配置されるように順序付けされる。このシステムはさらに、複数の待ち行列のうちのターゲット待ち行列の先頭からのターゲット・メッセージの取出しを、ターゲット・メッセージのタイムスタンプと複数の待ち行列のうちの他の待ち行列の各々における先頭メッセージのタイムスタンプとの間のタイミング差に基づいて制御するように構成されたメッセージ取出し構成要素を備える。
【0015】
次に、以下の図面を参照して、本開示の好ましい実施形態を、単なる例として説明する。
【図面の簡単な説明】
【0016】
図1】例示的な実施形態の態様を実施することができる例示的な分散システムの絵図である。
図2】例示的な実施形態の態様を実施することができる例示的なシステムのブロック図である。
図3】時間メッセージ・ストリームを並行処理するためのシステムの例示的な実施形態の簡略化されたブロック図である。
図4】時間メッセージ・ストリームを並行処理するためのコンピュータ実施方法の流れ図である。
図5】例示的な実施形態の方法に含まれるステップのグラフであり、垂直軸は、複数のそれぞれの待ち行列を示しており、水平軸は、メッセージに対応するタイムスタンプの時刻を示している。
図6】時間メッセージ・ストリームを並行処理するためのシステムの例示的な実施形態の簡略化されたブロック図である。
【発明を実施するための形態】
【0017】
これらの図は単なる概略図であり、一定の倍率では描かれていない。同じ部分または同様の部分を示すために、全ての図を通して同じ参照符号が使用されていることも理解すべきである。
【0018】
本出願の文脈では、本開示の実施形態が方法を構成している場合、かかる方法は、コンピュータによって実行するためのプロセス、すなわちコンピュータ実施可能方法であることがある。したがって、その方法のさまざまなステップは、コンピュータ・プログラムのさまざまな部分、例えば1つまたは複数のアルゴリズムのさまざまな部分を反映していることがある。
【0019】
さらに、本出願の文脈では、システムが、本開示の方法の1つまたは複数の実施形態を実行するように適合された単一のデバイスまたは分散デバイスの集合体であることがある。例えば、システムは、パーソナル・コンピュータ(PC)、サーバ、もしくはPCの集合体、または本開示の方法の少なくとも1つの実施形態を協力して実行するためにローカル・エリア・ネットワーク、インターネットなどのネットワークを介して接続された複数のサーバ、あるいはこれらの組合せであることがある。
【0020】
メッセージ・ストリームを処理するための発想が提案されている。そのような発想は、処理のおおよその時間的整列(temporal alignment)を維持しつつ処理エンジンをスケーリングすることにより、時間的データを並行処理することを可能にすることができる。これに応じて、実施形態は、時間メッセージ・ストリームの並行処理を容易にすることができる。
【0021】
実施形態は、メッセージング・システムまたは事象システム、例えばKafka(R)、Message Queue(MQ)またはJava Message Service(JMS)の実装とともに実施することができる。
【0022】
提案された実施形態は、その中にメッセージを格納し、メッセージを時間的に整列させる(例えば待ち行列に入れる)ことができる一群の待ち行列(またはパーティションもしくはストリーム)を定義するという発想を使用することができる。メッセージは、待ち行列から順番に取り出すことができるが、そのような取出しは、メッセージに関連づけられたタイムスタンプに基づいて制御することができる。例えば、それらのタイムスタンプを解析および使用して、待ち行列から取り出されたメッセージの同期が比較的にとれていることを保証することができる。
【0023】
本開示の実施形態は、メッセージ取出し構成要素の提供を提案している。そのようなメッセージ取出し構成要素は、複数の待ち行列のうちの1つの待ち行列の先頭からのメッセージの取出しを、そのメッセージのタイムスタンプと複数の待ち行列のうちの他の待ち行列の各々における先頭メッセージのタイムスタンプとの間のタイミング差に基づいて制御するように構成されていてもよい。例えば、メッセージが、全ての待ち行列の中の最も早いタイムスタンプの所定の許容時間差内にある場合にのみ、そのメッセージの取出しを許可することによって、取り出されるメッセージの時間的整列を維持することができる。
【0024】
したがって、実施形態は、並行処理されたデータのおおよその時間的整列を維持することにより、時間メッセージ・ストリームの並行処理の改良を提供することができる。
【0025】
例として、実施形態は、メッセージング・サービスまたはストリーミング・サービスとともに実施することができる。このような実施形態は、処理エンジンのスケーリングを可能にしない厳密な順序付けもしくはシングルスレッド挙動またはその両方を強制する手段を必要とすることなく、メッセージ・ストリームの時間的整列を可能にすることができる。これに応じて、メッセージの割振りが最適化され、それによってメッセージング・サービスまたはストリーミング・サービスにおける非効率性のリスクが低減される。これは、先行技術よりも有利な点の一例である。
【0026】
本開示の目的上、ターゲット・メッセージは、メッセージ・ストリームのメッセージの1つである。顧客(または他の構成員)がターゲット・メッセージを待ち行列(例えばGETコマンドの対象。GETコマンドは、後続の処理のために待ち行列からメッセージを取り出すコードである)から取り出そうとしたときに、メッセージはターゲット・メッセージになる。一般に、ターゲット・メッセージは、待ち行列の中の最初のメッセージ(例えば列の次のメッセージ、最も早いタイムスタンプを有するメッセージなど)である。ターゲット・メッセージを含む待ち行列をターゲット待ち行列と呼ぶことがある。
【0027】
本開示の目的上、トピックは、グループ、ストリームもしくはパーティションまたはこれらの組合せとすることができる。トピックは、メッセージ・ストリームの中の複数のメッセージを異なる待ち行列に仕分け(ソート)するためにそれらのメッセージを仕分けおよび/または編成する任意の手段とすることができる。トピックは、メッセージのサイズ、メッセージのタイプ(例えばフォーマット)、データの源、無作為、ラウンド・ロビン、逐次的もしくは他の任意の仕分け方法、またはこれらの組合せとすること(あるいはこれらに関係すること)ができる。例えば、システムが、イベントのチケットを販売することに関係していると仮定する。特定の時刻に、チケットの販売が開始され、いくつかの購入メッセージが生成されるであろう。それらのチケットのトピックは、購入されたチケットの数、購入の総量、個々のチケット価格に基づくもの、購入が生じた位置に基づくもの、要求されたチケットの区分(例えば指定席かまたは自由席か)に基づくもの、もしくは他の同様の因子またはこれらの組合せとすることができる。
【0028】
提案された実施形態では、取出しを制御することが、ターゲット・メッセージと他の待ち行列の各々における先頭メッセージとの間のタイミング差を決定することを含むことができる。タイミング差は、2つのメッセージのタイムスタンプ間の差である。取出しを制御することは次いで、決定されたタイミング差の中からタイミング差の最大値を識別すること、および、次いで、タイミング差の最大値がしきい値を超えているかどうかに基づいて、ターゲット待ち行列からのターゲット・メッセージの取出しを許可することを含むことができる。このようにすると、全ての待ち行列にわたって公平に待ち行列からメッセージが取り出されるように、メッセージの取出しを制御することができる。これによって、メッセージに対応するデータの時間的整列を最適化することができ、それによって時間的に似たデータを同様の時刻に処理することを可能にすることができる。したがって、スケーリングにより時間的データの順序を乱すリスクを低減させることができる。このことは、プロセスを効率的にスケーリングする利点を提供する。
【0029】
いくつかの実施形態では、取出しを制御することがさらに、時間的整列要件を表す入力信号を受け取ること、および受け取った入力信号に基づいてしきい値を決定することを含むことができる。したがって、メッセージの取出しを確立するために使用されるしきい値は、時間的整列要件に依存したものとすることができる。このことは、メッセージの取出しの確立が、方法もしくはシステムまたはその両方に対する要件に基づくことを可能にし、要件に関して自動的に調整することができる。このようにすると、時間メッセージ・ストリームを並行処理するための方法もしくはシステムまたはその両方の効率が最適化される。
【0030】
提案された実施形態では、タイミング差の最大値がしきい値を超えていないときにターゲット・メッセージの取出しを許可することができる。さらに、タイミング差の最大値がしきい値を超えている場合にターゲット・メッセージの取出しを拒否することができる。したがって、メッセージの取出しを、複数の待ち行列のそれぞれの待ち行列にわたって公平に維持することができる。このことは、メッセージを取り出すときの複数の待ち行列の間の偏りのリスクを低減させることができ、その結果として、複数の待ち行列の平均量に比べてかなり大きな/小さな量のメッセージを1つの待ち行列が取り出すリスクを低減させることができる。
【0031】
いくつかの実施形態では、ターゲット待ち行列からのターゲット・メッセージの取出しが拒否された場合にエラー・メッセージを生成することができる。このようにすると、メッセージの取出しの拒否をユーザに知らせることができる。このことは、拒否された取出しに対応する待ち行列を識別することを可能にすることができ、その結果として、複数の待ち行列のそれぞれの待ち行列の取出しの速度を決定および解析することを可能にすることができる。特定の待ち行列において比較的に大きな量の取出しが拒否された場合には、その量を決定することができ、したがってその待ち行列を識別することができ、是正措置をとることができる。
【0032】
時間メッセージ・ストリームを並行処理するための方法はさらに、取得されたそれぞれのメッセージのタイムスタンプを生成することを含むことができ、このタイムスタンプは、そのメッセージに関連した時刻を表すことができる。このようにすると、それぞれのメッセージは、タイムスタンプによって識別される対応する時刻を含む。例えば、メッセージに関連したタイムスタンプは、そのメッセージが取得された時刻(例えばインタフェースによって受け取られた時刻)を識別することができる。このことは、時間に依存した順序でメッセージを編成することを可能にし、それによって時間的整列を最適化することができる。
【0033】
タイムスタンプの一例は、メッセージが待ち行列にPUTされた時刻を含むことができる。PUTは、プログラミング言語のコマンドである。タイムスタンプは、メッセージを発行したクライアントまたはメッセージング・システムによって生成されてもよい。これは、メッセージが待ち行列に入れられた時刻またはメッセージ・データが生成された時刻に実行することができる。この時刻は、エポック・タイム(epoch time)またはフル・デート・タイム・ストリング(full date time string)とすることができ、それらは、メッセージ本体の中(またはメッセージ・ヘッダ/メタデータの中)にあってもよい。
【0034】
いくつかの実施形態では、それぞれのメッセージが、複数のトピックのうちの少なくとも1つのトピックに関係していてもよい。いくつかの実施形態では、時間メッセージ・ストリームを並行処理するための方法がさらに、複数のトピックのそれぞれのトピックについて、それぞれのトピックに関連した1つまたは複数の待ち行列を定義することを含むことができる。この方法はさらに、それぞれのメッセージを、同じトピックに関連した待ち行列の中の少なくとも1つのトピックに関係した複数の待ち行列のうちの少なくとも1つの待ち行列に格納することを含むことができる。したがって、この方法を、2つ以上のトピック、したがって対応する複数の待ち行列をグループ分けするように拡張することができる。このことは、メッセージに関係した複数のトピックを並列に処理することを可能にすることができ、このことは、方法もしくはシステムまたはその両方の効率を向上させ、方法もしくはシステムまたはその両方の複雑さを増大させることを可能にすることができる。
【0035】
図1は、例示的な実施形態の態様を実施することができる例示的な分散システムの絵図を示している。分散システム100は、例示的な実施形態の態様を実施することができるコンピュータのネットワークを含むことができる。分散システム100は少なくとも1つのネットワーク102を含み、ネットワーク102は、分散データ処理システム100内で一緒に接続されたさまざまなデバイスおよびコンピュータ間の通信リンクを提供するために使用される媒体である。ネットワーク102は、有線通信リンク、無線通信リンクまたは光ファイバ・ケーブルなどの接続を含むことができる。
【0036】
図示の例では、ネットワーク102に、ストレージ・ユニット108とともに、第1のサーバ104および第2のサーバ106が接続されている。ネットワーク102にはさらに、クライアント110、112および114も接続されている。クライアント110、112および114は例えばパーソナル・コンピュータ、ネットワーク・コンピュータなどであってもよい。図示の例では、第1のサーバ104が、ブート・ファイル、オペレーティング・システム・イメージおよびアプリケーションなどのデータを、クライアント110、112および114に提供する。図示の例では、クライアント110、112および114が第1のサーバ104のクライアントである。分散処理システム100は、示されていない追加のサーバ、クライアントおよび他のデバイスを含んでいてもよい。
【0037】
図示の例では、分散システム100は、伝送制御プロトコル/インターネット・プロトコル(TCP/IP)プロトコル・スイートを使用して互いに通信するネットワークおよびゲートウェイの世界的な集合体を表すネットワーク102を含む、インターネットである。インターネットの中心には、データおよびメッセージを送信する数千の商用、政府機関、教育および他のコンピュータ・システムからなる主要なノードまたはホスト・コンピュータ間の高速データ通信回線のバックボーンがある。分散システム100は、例えばイントラネット、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)などのいくつかの異なるタイプのネットワークを含むように実施することもできる。上述のとおり、図1は、例であることが意図されており、図1が、本開示の異なる実施形態のアーキテクチャを限定することは意図されておらず、したがって、図1に示された特定の要素が、本開示の例示的な実施形態を実施することができる環境を限定すると考えるべきではない。
【0038】
図2は、例示的な実施形態の態様を実施することができる例示的なシステム200のブロック図である。システム200は、本開示の例示的な実施形態のためのプロセスを実施するコンピュータ使用可能コードまたは命令が置かれていてもよい、図1のクライアント110などのコンピュータの一例である。
【0039】
図示の例では、システム200が、ノース・ブリッジおよびメモリ・コントローラ・ハブ(NB/MCH)202ならびにサウス・ブリッジおよび入力/出力(I/O)コントローラ・ハブ(SB/ICH)204を含むハブ・アーキテクチャを使用する。NB/MCH202には、処理ユニット206、主メモリ208およびグラフィックス・プロセッサ210が接続されている。グラフィックス・プロセッサ210は、アクセラレーテッド・グラフィックス・ポート(accelerated graphics port)(AGP)を通してNB/MCH202に接続されていてもよい。
【0040】
図示の例では、SB/ICH204にローカル・エリア・ネットワーク(LAN)アダプタ212が接続している。SB/ICH204には、第1のバス238および第2のバス240を通して、オーディオ・アダプタ216、キーボードおよびマウス・アダプタ220、モデム222、リードオンリー・メモリ(ROM)224、ハード・ディスク・ドライブ(HDD)226、CD-ROMドライブ230、ユニバーサル・シリアル・バス(USB)ポートおよび他の通信ポート232、ならびにPCI/PCIeデバイス234が接続している。PCI/PCIeデバイスは、例えばイーサネット・アダプタ、アドイン・カード、およびノートブック・コンピュータ用のPCカードを含むことができる。PCIはカード・バス・コントローラを使用するが、PCIeはカード・バス・コントローラを使用しない。ROM224は例えば、フラッシュ基本入出力システム(BIOS)とすることができる。
【0041】
HDD226およびCD-ROMドライブ230は、第2のバス240を通してSB/ICH204に接続している。HDD226およびCD-ROMドライブ230は例えば、インテグレーテッド・ドライブ・エレクトロニクス(IDE)またはシリアル・アドバンスト・テクノロジ・アタッチメント(SATA)インタフェースを使用することができる。SB/ICH204にはスーパーI/O(SIO)デバイス236が接続されていてもよい。
【0042】
処理ユニット206上ではオペレーティング・システムが動作する。このオペレーティング・システムは、図2のシステム200内のさまざまな構成要素の制御を調整および提供する。クライアントとしては、このオペレーティング・システムが、市販のオペレーティング・システムであってもよい。オペレーティング・システムとともに、Java(TM)プログラミング・システムなどのオブジェクト指向プログラミング・システムが動作してもよく、このオブジェクト指向プログラミング・システムは、システム200上で実行されているJava(TM)プログラムまたはアプリケーションからオペレーティング・システムに呼出しを提供する。
【0043】
サーバとしては、システム200が、例えば、Advanced Interactive Executive(AIX(R))オペレーティング・システムまたはLINUX(R)オペレーティング・システムが動作するIBM(R)eServer(TM)System p(R)コンピュータ・システムであってもよい。システム200は、処理ユニット206内に複数のプロセッサを含むシンメトリック・マルチプロセッサ(symmetric multiprocessor)(SMP)システムであってもよい。あるいは、シングル・プロセッサ・システムを使用することもできる。
【0044】
オペレーティング・システム、プログラミング・システムおよびアプリケーションまたはプログラムに対する命令は、HDD226などのストレージ・デバイス上に置かれており、処理ユニット206によって実行するために主メモリ208にロードすることができる。同様に、一実施形態による1つまたは複数のメッセージ処理プログラムを、ストレージ・デバイスもしくは主メモリ208またはその両方によって記憶されるように適合させることができる。
【0045】
本開示の例示的な実施形態のためのプロセスは、コンピュータ使用可能プログラム・コードを使用して処理ユニット206によって実行することができ、このコンピュータ使用可能プログラム・コードは、例えば主メモリ208、ROM224などのメモリまたは1つもしくは複数の周辺デバイス226および230に置くことができる。
【0046】
図2に示された第1のバス238または第2のバス240などのバス・システムは、1つまたは複数のバスを含むことができる。バス・システムは、ファブリックまたはアーキテクチャに取り付けられた異なる構成要素またはデバイス間のデータ転送を提供する任意のタイプの通信ファブリックまたはアーキテクチャを使用して実施することができる。図2のモデム222またはネットワーク・アダプタ212などの通信ユニットは、データを送受信するために使用される1つまたは複数のデバイスを含むことができる。メモリは、例えば、主メモリ208、ROM224、または図2にNB/MCH202内に見られるものなどのキャッシュとすることができる。
【0047】
図1および2のハードウェアは、実施態様に応じて変更することができ、特許請求の範囲に影響を及ぼすことなく改変することができることを当業者は理解するであろう。図1および2に示されたハードウェアに加えて、または図1および2に示されたハードウェアの代わりに、フラッシュ・メモリ、等価の不揮発性メモリ、または光ディスク・ドライブなどの他の内部ハードウェアまたは周辺デバイスを使用することができる。さらに、例示的な実施形態のプロセスを、本開示の思想および範囲を逸脱することなく、前述のシステム以外のマルチプロセッサ・データ処理システムに適用することができる。
【0048】
さらに、システム200は、クライアント・コンピューティング・デバイス、サーバ・コンピューティング・デバイス、タブレット・コンピュータ、ラップトップ・コンピュータ、電話機または他の通信デバイス、パーソナル・デジタル・アシスタント(PDA)などを含むいくつかの異なるデータ処理システムのうちの任意の形態を取ることができる。説明のためのいくつかの例では、システム200を、例えばオペレーティング・システム・ファイルもしくはユーザ生成データまたはその両方を記憶するための不揮発性メモリを提供するフラッシュ・メモリを有するように構成されたポータブル・コンピューティング・デバイスとすることができる。したがって、システム200は、本質的に、アーキテクチャの制限のない、知られている任意のデータ処理システムまたは後に開発される任意のデータ処理システムとすることができる。
【0049】
次に図3を参照すると、時間メッセージ・ストリームを並行処理するためのシステムの例示的な実施形態の簡略化されたブロック図が示されている。
【0050】
このシステムは、メッセージ・ストリームのメッセージを取得するように構成されたインタフェース310を備え、それぞれのメッセージは関連するタイムスタンプを有する。このシステムはさらに、それぞれのメッセージを、複数の待ち行列322のそれぞれの待ち行列322に格納するように構成された待ち行列構成要素320を備え、それぞれの待ち行列322のメッセージは、それらのメッセージのタイムスタンプに基づいて、最も早いタイムスタンプを有するメッセージ、例えば待ち行列322BのメッセージPB-1がその待ち行列322の先頭に配置されるように順序付けされる(すなわち先入れ先出し(FIFO)待ち行列)。このシステムはさらに、複数の待ち行列322のうちのターゲット待ち行列の先頭からのターゲット・メッセージの取出しを、そのメッセージのタイムスタンプと複数の待ち行列322のうちの他の待ち行列322の各々における先頭メッセージのタイムスタンプとの間のタイミング差に基づいて制御するように構成されたメッセージ取出し構成要素330を備える。メッセージ取出し構成要素330は、複数のコンシューマ332と通信することができ、それぞれのコンシューマ332は、対応する待ち行列322からメッセージ、例えばコンシューマ332AのメッセージPA-1を取り出すことができる。ここで、コンシューマ332は、1つの待ち行列との1:1対応を有することができるが、コンシューマ332は、2つ以上の待ち行列322からメッセージを取り出すことができ、待ち行列322は、2つ以上のコンシューマ332によって取り出されるメッセージを有することができる。
【0051】
いくつかの実施形態では、メッセージ取出し構成要素330がさらに、他の待ち行列322の各々について、ターゲット・メッセージのタイムスタンプとそれぞれの待ち行列322の先頭メッセージとの間のタイミング差を決定するように構成されている。メッセージ取出し構成要素はさらに、決定されたタイミング差の中からタイミング差の最大値を識別し、タイミング差の最大値がしきい値を超えているかどうかに基づいて、ターゲット待ち行列322からのターゲット・メッセージの取出しを許可または拒否するように構成されている。
【0052】
一実施形態では、メッセージ取出し構成要素330がさらに、タイミング差の最大値がしきい値を超えていない場合に、ターゲット待ち行列からのターゲット・メッセージの取出しを許可し、タイミング差の最大値がしきい値を超えている場合に、ターゲット待ち行列からのターゲット・メッセージの取出しを拒否するように構成されている。いくつかの実施形態では、最も早いタイムスタンプを有するメッセージ(または最大差に関連したメッセージ)が取り出され、タイミング差が再計算される。その場合には、2番目に大きな差、すなわち残っているうちの最大差(remaining largest difference)が存在する。これらの差は最大差と同じやり方で決定される。
【0053】
一実施形態では、メッセージ取出し構成要素330がさらに、待ち行列322からのターゲット・メッセージの取出しが拒否された場合にエラー・メッセージを生成するように構成されている。
【0054】
一実施形態では、このシステムがさらに、時間的整列要件を表す入力信号を受け取り、受け取った入力信号に基づいてしきい値を決定するように構成された整列設定構成要素(alignment configuration component)(図示せず)を備える。さまざまな実施形態において、整列設定構成要素は、インタフェース310、待ち行列構成要素320、メッセージ取出し構成要素330もしくは別個の構成要素またはこれらの組合せのうちの1つの構成要素であり、あるいはインタフェース310、待ち行列構成要素320、メッセージ取出し構成要素330もしくは別個の構成要素またはこれらの組合せに組み込まれている、あるいはその両方である。
【0055】
いくつかの実施形態では、このシステムがさらに、それぞれのメッセージについて、そのメッセージに関連した時刻を表すタイムスタンプを生成し、生成されたタイムスタンプをそのメッセージに関連づけるように構成されたタイミング構成要素を備える。例えば、メッセージに対するタイムスタンプは、そのメッセージが生成された時刻、またはそのメッセージが待ち行列にPUTされた時刻を表してもよい。さまざまな実施形態において、タイミング構成要素は、インタフェース310、待ち行列構成要素320、メッセージ取出し構成要素330もしくは別個の構成要素またはこれらの組合せのうちの1つの構成要素であり、あるいはインタフェース310、待ち行列構成要素320、メッセージ取出し構成要素330もしくは別個の構成要素またはこれらの組合せに組み込まれている、あるいはその両方である。
【0056】
いくつかの実施形態では、それぞれのメッセージが、複数のトピックのうちの少なくとも1つのトピックに関係している。待ち行列構成要素320はさらに、複数のトピックのそれぞれのトピックについて、1つまたは複数のトピックに1つまたは複数の待ち行列322を関連づけ、それぞれのメッセージを、そのメッセージが関係するトピックに関連した複数の待ち行列322のうちの少なくとも1つの待ち行列322に格納するように構成されている。
【0057】
次に図4を参照すると、一実施形態による、メッセージ・ストリームを処理するためのコンピュータ実施方法の流れ図が示されている。このような方法は、処理のおおよその時間的整列を維持しつつ処理エンジンをスケーリングすることにより、時間メッセージ・ストリームを並行処理することを可能にすることができる。
【0058】
ステップ410は、メッセージ・ストリームのメッセージを取得することを含み、それぞれのメッセージは関連するタイムスタンプを有する。いくつかの実施形態では、ステップ410が、それぞれのメッセージのタイムスタンプを生成することを含む。
【0059】
一実施形態では、それぞれのメッセージが、複数のトピックのうちの少なくとも1つのトピックに関係している。いくつかの実施形態では、この方法がさらに、複数のトピックのそれぞれのトピックについて、少なくとも1つのトピックをそれぞれの待ち行列に関連づけることを含む。いくつかの実施形態では、この方法がさらに、トピックを複数のパーティションに分割し、それぞれの待ち行列に1つまたは複数のコンシューマを割り当てることを含む。
【0060】
例えば、ユーザは、メッセージング・システム内に、5つの待ち行列(例えばパーティション、ストリームもしくはトピックまたはこれらの組合せ)を含むトピックを生成することができる。これらのトピックに5つのコンシューマをコンシューマ群として割り当て、それぞれの待ち行列に1つのコンシューマを提供することができる。それぞれのメッセージは、ある仕分け因子(例えばサイズ、内容、発信位置、データ型、ラウンド・ロビン、無作為など)に基づいて待ち行列のうちの1つに分配される。それぞれのコンシューマは、該当するそれぞれの待ち行列に対応するメッセージを、これが待ち行列から取り出されると、処理する。この例が図3に示されており、この図では、5つの待ち行列322A、322B、322C、322D、322Eおよび割り当てられた5つのコンシューマ332A、332B、332C、332D、332Eが、待ち行列322AのメッセージPA-1、PA-2、PA-3、待ち行列322BのメッセージPB-1、および待ち行列322CのメッセージPC-1を処理する。図5は、この例に含まれるステップのグラフを示しており、垂直軸は、複数のそれぞれの待ち行列を示しており、水平軸は、メッセージに対応するタイムスタンプの時刻を示している。以下で説明する例は図3および図5に示された情報に関する。
【0061】
ステップ420は、それぞれのメッセージを、複数の待ち行列のうちの少なくとも1つの待ち行列に格納することを含み、それぞれの待ち行列のメッセージは、それらのメッセージのタイムスタンプに基づいて、最も早いタイムスタンプを有するメッセージがその待ち行列の先頭に配置されるように順序付けされる。ここで、それぞれのメッセージは、そのメッセージが関係するトピックに関連した少なくとも1つの待ち行列に格納される。
【0062】
ステップ430は、ターゲット待ち行列の先頭からのターゲット・メッセージの取出しを、そのメッセージのタイムスタンプと複数の待ち行列のうちの他の待ち行列の各々における先頭メッセージのタイムスタンプとの間のタイミング差に基づいて制御することを含む。この例では、複数の待ち行列の各々から公平に連続して、複数の待ち行列からコンシューマへメッセージを取り出すことができる。
【0063】
一実施形態では、取出しを制御することが、他の待ち行列の各々について、ターゲット・メッセージのタイムスタンプと他の待ち行列の各々の先頭メッセージとの間のタイミング差を決定することを含むことができる。取出しを制御することは、次いで、決定されたタイミング差の中からタイミング差の最大値を識別すること、および、次いで、タイミング差の最大値がしきい値を超えているかどうかに基づいて、ターゲット待ち行列からのターゲット・メッセージの取出しを許可することを含むことができる。
【0064】
この例では、ユーザが、100ミリ秒のしきい値を定義することができる。しきい値は時間的整列と呼ばれることもある。しかしながら、しきい値は、100ミリ秒よりも長くすることができ、または100ミリ秒よりも短くすることができる。例えば、5つの待ち行列のうちの第1の待ち行列322Aが、タイムスタンプ20:00:00.000および処理所要時間200ミリ秒を有する比較的に大きな事象、事象PA-1を含むメッセージを取得したとする。事象PA-1に対応するメッセージは、第1の待ち行列に対応するコンシューマ332Aによって取り出される。第1の待ち行列322Aの中の次のメッセージは、タイムスタンプ20:00:00.100を有する別の事象、事象PA-2を含むことができる。連続する次の待ち行列、すなわち第2の待ち行列322Bに対応するコンシューマ332Bが、第2の待ち行列322Bの先頭メッセージから次の事象、例えばタイムスタンプ20:00:00.190を有する事象PB-1の取出しを試みることができる。それぞれの待ち行列の先頭のメッセージに対応するそれぞれの事象のタイムスタンプが決定され得る。
【0065】
一実施形態では、タイミング差の最大値がしきい値を超えていない場合にターゲット待ち行列からのターゲット・メッセージの取出しが許可され、タイミング差の最大値がしきい値を超えている場合にターゲット待ち行列からのターゲット・メッセージの取出しが拒否される。このように、メッセージが取り出されるときには、それぞれの待ち行列の先頭のメッセージのタイムスタンプが比較される。全ての待ち行列の中で最も早いタイムスタンプとターゲット待ち行列の中のターゲット・メッセージに対応するタイムスタンプとの間のタイミング差の値に基づいて、最も早いタイムスタンプに対応するメッセージが取り出される。
【0066】
この例では、事象PB-1に対応するタイムスタンプ(20:00:00.190)と事象PA-1に対応するタイムスタンプ(20:00:00.100)との間のタイミング差が90ミリ秒であり、これはしきい値100ミリ秒を超えていない。タイミング差は、ターゲット・メッセージのタイムスタンプから先頭メッセージのタイムスタンプを差し引くことによって取得される(例えば(ターゲット・メッセージのタイムスタンプ)-(異なる待ち行列の最初のメッセージ)、20:00:00.190-20:00:00.100)。これによって、ターゲット待ち行列、このケースでは第2の待ち行列322Bに対応するコンシューマ332Bが、事象PB-1を含むメッセージを取り出すことが許可される。
【0067】
一実施形態では、ターゲット・メッセージの取出しを許可することがさらに、ターゲット待ち行列からのターゲット・メッセージの取出しが拒否された場合にエラー・メッセージを生成することを含む。このエラー・メッセージは、出力データが同期していないことを示すリターン・コードまたはメッセージを含むことができる。ターゲット待ち行列からのターゲット・メッセージの取出しが拒否された場合には、それぞれの待ち行列の先頭のメッセージに対応するタイムスタンプが、しきい値を超えていない対応するタイミング差を許すまで、プロセスを一時的に休止することができる。
【0068】
取出しを制御することはさらに、時間的整列要件を表す入力信号を受け取り、次いで、受け取った入力信号に基づいてしきい値を決定することを含むことができる。
【0069】
この例では、連続する次の待ち行列、第3の待ち行列322Cからのメッセージが、別の事象、タイムスタンプ20:00:00.250を有する事象PC-1を含むことができる。それぞれの待ち行列の先頭のメッセージに対応するそれぞれの事象のタイムスタンプが決定され得る。この時点では事象PA-2に対応するタイムスタンプが最も早く、事象PA-2に対応するタイムスタンプ(20:00:00.100)と事象PC-1に対応するタイムスタンプ(20:00:00.250)との間の時間差は150ミリ秒であり、これはしきい値100ミリ秒を超えている。したがって、待ち行列322Cからの取出しの要求は拒否され、事象PC-1は取り出されない。この反対を考えると、PA-2がターゲット・メッセージであり、このときの差は-150ミリ秒であり、これはしきい値100ミリ秒よりも小さく、PA-2は取り出すことができる。
【0070】
事象PA-1に対応するメッセージの処理が完了し、第1の待ち行列322Aの中の次の事象、事象PA-2に対応するメッセージが取り出される。第1の待ち行列322Aからのメッセージは、別の事象、例えばタイムスタンプ20:00:00.180を有する事象PA-3を含むことができる。それぞれの待ち行列の先頭のメッセージに対応するそれぞれの事象のタイムスタンプが決定され得る。事象PC-1に対応するタイムスタンプ(20:00:00.250)と事象PA-3に対応するタイムスタンプ(20:00:00.180)との間のタイミング差は70ミリ秒であり、これはしきい値100ミリ秒を超えていない。これによって、ターゲット待ち行列、このケースでは第3の待ち行列322Cに対応するコンシューマ332Cが、事象PC-1を含むメッセージを取り出すことが許可される。
【0071】
いくつかの実施形態では、しきい値が動的に決定される。しきい値は、待ち行列の中のメッセージの数、待ち行列の中のメッセージの相対的処理時間、メッセージのタイムスタンプ間の時間差、もしくは他の任意の同種の因子、またはこれらの組合せに基づくものとすることができる。例えば、しきい値を、それぞれの待ち行列の中の最初のメッセージと第2のメッセージのタイムスタンプ間の差の平均とすることができる。別の例では、しきい値を、任意の待ち行列の中の最も長い処理時間(例えば00:00.100)を有するメッセージに所定の時間を加えたもの(例えばx+00:00.150)とすることができ、したがって、待ち行列の中のメッセージに対する最も長い処理時間が00:00.100である場合には、しきい値は00:00.250になることになる。
【0072】
上記の例を、2つ以上のトピック(したがって対応する待ち行列)をグループ分けするように拡張することができる。この実施形態では、それぞれのトピック間でコンシューマを相互に関連づけるために、それぞれのグループに識別子を与えることができる。
【0073】
さらなる例として、図6に示されているとおり、実施形態はコンピュータ・システム70を含むことができ、コンピュータ・システム70は、ネットワーク化されたシステム7の部分を形成することができる。コンピュータ・システム/サーバ70の構成要素は、限定はされないが、1つまたは複数の処理装置、例えばプロセッサまたは処理ユニット71、システム・メモリ74およびバス90を含む1つまたは複数の処理装置を含むことができ、バス90は、システム・メモリ74を含むさまざまなシステム構成要素を処理ユニット71に結合する。
【0074】
処理ユニット71は、ターゲット・オブジェクト・タイプを規定するように構成されており、ターゲット・オブジェクト・タイプは、ミドルウェア機能の結果を保持するように適合されている。さらに、処理ユニット71は、アプリケーションのための第1のオブジェクトを受け取り、次いで、この第1のオブジェクトを使用してミドルウェア機能のプロセスを実行して、プロセス結果を生成するように構成されている。処理ユニット71は、このプロセス結果に基づいて、ターゲット・オブジェクト・タイプの第2のオブジェクトを生成し、第2のオブジェクトをアプリケーションに提供するように構成されている。
【0075】
バス90は、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、およびプロセッサ・バスまたはローカル・バスを含む、さまざまなバス・アーキテクチャを使用したいくつかのタイプのバス構造体のうちの1つまたは複数の任意のバス構造体を表す。例として、このようなアーキテクチャは、限定はされないが、インダストリ・スタンダード・アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、エンハンストISA(EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA)ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト(PCI)バスを含む。
【0076】
コンピュータ・システム/サーバ70は通常、さまざまなコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム/サーバ70がアクセス可能な利用可能な任意の媒体とすることができ、揮発性媒体と不揮発性媒体の両方、取外し可能媒体と非取外し可能媒体の両方を含む。
【0077】
システム・メモリ74は、ランダム・アクセス・メモリ(RAM)75もしくはキャッシュ・メモリ76またはその両方など、揮発性メモリの形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ70はさらに、他の取外し可能/非取外し可能な揮発性/不揮発性のコンピュータ・システム・ストレージ媒体を含むことができる。単なる例として、ストレージ・システム74は、非取外し可能な不揮発性の磁気媒体(図示せず。通常は「ハード・ドライブ」と呼ばれる)からの読取り用、および非取外し可能な不揮発性の磁気媒体への書込み用に提供することができる。図示されてはいないが、取外し可能な不揮発性の磁気ディスク(例えば「フロッピー・ディスク」)からの読取り用および取外し可能な不揮発性の磁気ディスクへの書込み用の磁気ディスク・ドライブ、ならびにCD-ROM、DVD-ROMまたは他の光学式媒体などの取外し可能な不揮発性の光ディスクからの読取り用および取外し可能な不揮発性の光ディスクへの書込み用の光ディスク・ドライブを提供することもできる。そのような場合には、それぞれを、1つまたは複数のデータ媒体インタフェースによってバス90に接続することができる。後にさらに示し、説明するが、メモリ74は、本開示の実施形態の機能を実行するように構成された一組の(例えば少なくとも1つの)プログラム・モジュールを有する少なくとも1つのプログラム製品を含むことができる。
【0078】
例えば、限定はされないが、一組の(少なくとも1つの)プログラム・モジュール79、ならびにオペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュールおよびプログラム・データを有するプログラム/ユーティリティ78を、メモリ74に記憶することができる。このオペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュールおよびプログラム・データまたはこれらのある組合せはそれぞれ、ネットワーキング環境の実施態様を含むことができる。プログラム・モジュール79は一般に、本明細書に記載された本開示の実施形態の機能もしくは方法またはその両方を実行する。
【0079】
コンピュータ・システム/サーバ70はさらに、キーボード、ポインティング・デバイス、ディスプレイ85など;ユーザがコンピュータ・システム/サーバ70と対話することを可能にする1つもしくは複数のデバイス;またはコンピュータ・システム/サーバ70が1つもしくは複数の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(例えばネットワーク・カード、モデムなど)、あるいはこれらの組合せなどの、1つまたは複数の外部デバイス80と通信することができる。このような通信は、入力/出力(I/O)インタフェース72を介して実行することができる。さらに、コンピュータ・システム/サーバ70は、ネットワーク・アダプタ73を介して、ローカル・エリア・ネットワーク(LAN)、一般的なワイド・エリア・ネットワーク(WAN)もしくは公衆ネットワーク(例えばインターネット)、またはこれらの組合せなどの1つまたは複数のネットワークと通信することができる。図示されているように、ネットワーク・アダプタ73は、バス90を介してコンピュータ・システム/サーバ70の残りの構成要素と通信する。示されてはいないが、他のハードウェア構成要素もしくはソフトウェア構成要素またはその両方を、コンピュータ・システム/サーバ70とともに使用することができることを理解すべきである。このような構成要素の例は、限定はされないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイバル・ストレージ・システムなどを含む。
【0080】
本出願の文脈では、本開示の実施形態が方法を構成している場合、かかる方法は、コンピュータによって実行するためのプロセス、すなわちコンピュータ実施可能方法であることを理解すべきである。したがって、その方法のさまざまなステップは、コンピュータ・プログラムのさまざまな部分、例えば1つまたは複数のアルゴリズムのさまざまな部分を反映する。
【0081】
本開示は、システム、方法もしくはコンピュータ・プログラム製品、またはこれらの組合せであることがある。コンピュータ・プログラム製品は、本開示の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体を含むことがある。
【0082】
このコンピュータ可読ストレージ媒体は、命令実行デバイスが使用するための命令を保持および記憶することができる有形のデバイスとすることができる。このコンピュータ可読ストレージ媒体は例えば、限定はされないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイスまたはこれらの適当な組合せとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リードオンリー・メモリ(ROM)、消去可能なプログラマブル・リードオンリー・メモリ(EPROMまたはフラッシュ・メモリ)、ストレージ・クラス・メモリ(SCM)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リードオンリー・メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、機械的にコード化されたデバイス、例えばパンチカードまたはその上に命令が記録された溝の中の一段高くなった構造体、およびこれらの適当な組合せを含む。本明細書で使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が一過性の信号、例えば電波もしくは他の自由に伝搬する電磁波、ウェーブガイドもしくは他の伝送媒体内を伝搬する電磁波(例えば光ファイバ・ケーブル内を通る光パルス)、または電線を通して伝送される電気信号であると解釈されるべきではない。
【0083】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から対応するそれぞれのコンピューティング/処理デバイスにダウンロードすることができ、またはネットワークを介して、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくは無線ネットワークまたはこれらの組合せを介して、外部コンピュータもしくは外部ストレージ・デバイスにダウンロードすることができる。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータもしくはエッジ・サーバ、またはこれらの組合せを含むことができる。それぞれのコンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インタフェースは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を、対応するそれぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に記憶するために転送する。
【0084】
本開示の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令もしくは状態設定データであってもよく、またはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同種のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれた、ソース・コードもしくはオブジェクト・コードであってもよい。このコンピュータ可読プログラム命令は、全体がユーザのコンピュータ上で実行されてもよく、一部がユーザのコンピュータ上で実行されてもよく、独立型ソフトウェア・パッケージとして実行されてもよく、一部がユーザのコンピュータ上で、一部がリモート・コンピュータ上で実行されてもよく、または全体がリモート・コンピュータもしくはリモート・サーバ上で実行されてもよい。上記の最後のシナリオでは、リモート・コンピュータが、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、またはこの接続が、外部コンピュータに対して(例えばインターネット・サービス・プロバイダを使用してインターネットを介して)実施されてもよい。いくつかの実施形態では、本開示の態様を実施するために、例えばプログラム可能論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA)またはプログラム可能論理アレイ(PLA)を含む電子回路が、このコンピュータ可読プログラム命令の状態情報を利用してその電子回路をパーソナライズすることにより、このコンピュータ可読プログラム命令を実行してもよい。
【0085】
本明細書では、本開示の態様が、本開示の実施形態による方法、装置(システム)およびコンピュータ・プログラム製品の流れ図もしくはブロック図またはその両方の図を参照して説明される。それらの流れ図もしくはブロック図またはその両方の図のそれぞれのブロック、およびそれらの流れ図もしくはブロック図またはその両方の図のブロックの組合せは、コンピュータ可読プログラム命令によって実施することができることが理解される。
【0086】
これらのコンピュータ可読プログラム命令は、機械を形成する汎用コンピュータ、専用コンピュータまたは他のプログラム可能データ処理装置のプロセッサによって実行されるこれらの命令が、これらの流れ図もしくはブロック図またはその両方の図のブロックに指定された機能/動作を実施する手段を生成するような態様で、それらのコンピュータまたは他のプログラム可能データ処理装置のプロセッサに提供することができる。これらのコンピュータ可読プログラム命令はさらに、特定の方式で機能するようにコンピュータ、プログラム可能データ処理装置もしくは他のデバイスまたはこれらの組合せに指示することができるコンピュータ可読ストレージ媒体に、その中に命令が記憶されたコンピュータ可読ストレージ媒体が、これらの流れ図もしくはブロック図またはその両方の図のブロックに指定された機能/動作の態様を実施する命令を含む製品を含むような態様で、記憶することができる。
【0087】
これらのコンピュータ可読プログラム命令はさらに、コンピュータ、他のプログラム可能装置または他のデバイス上で一連の動作ステップを実行させて、コンピュータによって実施されるプロセスを生み出すために、このコンピュータ、他のプログラム可能データ処理装置または他のデバイス上に、このコンピュータ、他のプログラム可能装置または他のデバイス上で実施されるこれらの命令が、これらの流れ図もしくはブロック図またはその両方の図のブロックに指定された機能/動作を実施するような態様で、ロードすることができる。
【0088】
添付図中の流れ図およびブロック図は、本開示のさまざまな実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能および動作を示す。この点に関して、それらの流れ図またはブロック図のそれぞれのブロックは、指定された論理機能を実施する1つまたは複数の実行可能命令を含む、命令のモジュール、セグメントまたは部分を表すことがある。いくつかの代替実施態様では、ブロックに示された機能を、図に示された順序とは異なる順序で実行することができる。例えば、連続して示された2つのブロックが、実際は、実質的に同時に実行されることがあり、または、含まれる機能によってはそれらのブロックが逆の順序で実行されることもある。それらのブロック図もしくは流れ図またはその両方の図のそれぞれのブロック、ならびにそれらのブロック図もしくは流れ図またはその両方の図のブロックの組合せを、指定された機能もしくは動作を実行しまたは専用ハードウェアとコンピュータ命令の組合せを実施するハードウェアベースの専用システムによって実施することができることにも留意すべきである。
【0089】
本開示のさまざまな実施形態の説明は例示のために示したものであり、それらの説明が網羅的であること、または開示された実施形態に限定されることは意図されていない。当業者には、記載された実施形態の範囲および思想を逸脱しない多くの変更および変形が明らかとなろう。本明細書で使用されている用語は、実施形態の原理、実際的用途、もしくは市場に出ている技術の技術的改良を最もうまく説明するように、または本明細書に開示された実施形態を他の当業者が理解することができるように選択した。
【0090】
まとめとして、上で論じたさまざまな実施形態を、番号が付けられた以下の例に再び明示する。
【0091】
例1は以下のとおりである。メッセージ・ストリームを処理するためのコンピュータ実施方法であって、この方法が、メッセージ・ストリームのメッセージを取得することを含み、それぞれのメッセージが関連するタイムスタンプを有し、この方法がさらに、それぞれのメッセージを、複数の待ち行列のうちの少なくとも1つの待ち行列に格納することを含み、それぞれの待ち行列のメッセージが、それらのメッセージのタイムスタンプに基づいて、最も早いタイムスタンプを有するメッセージがその待ち行列の先頭に配置されるように順序付けされ、この方法がさらに、ターゲット待ち行列の先頭からのターゲット・メッセージの取出しを、ターゲット・メッセージのタイムスタンプと複数の待ち行列のうちのターゲット待ち行列を含まない他の待ち行列の各々における先頭メッセージのタイムスタンプとの間のタイミング差に基づいて制御することを含むコンピュータ実施方法。
【0092】
例2は以下のとおりである。取出しを制御することが、他の待ち行列の各々について、ターゲット・メッセージのタイムスタンプとその待ち行列の先頭メッセージとの間のタイミング差を決定すること、決定されたタイミング差の中からタイミング差の最大値を識別すること、およびタイミング差の最大値がしきい値を超えているかどうかに基づいて、ターゲット待ち行列からのターゲット・メッセージの取出しを許可することを含む、例1の方法。
【0093】
例3は以下のとおりである。ターゲット・メッセージの取出しを許可することが、タイミング差の最大値がしきい値よりも小さい場合に、ターゲット待ち行列からのターゲット・メッセージの取出しを許可することを含む、例1または2の方法。
【0094】
例4は以下のとおりである。タイミング差の最大値がしきい値を超えている場合に、ターゲット待ち行列からのメッセージの取出しを拒否すること、およびターゲット待ち行列からのメッセージの取出しが拒否されたことに応答して、エラー・メッセージを生成することをさらに含む、先行するいずれかの例の方法。
【0095】
例5は以下のとおりである。ターゲット待ち行列からのメッセージの取出しが拒否されたことに応答して、エラー・メッセージを生成することをさらに含む、先行するいずれかの例の方法。
【0096】
例6は以下のとおりである。拒否されているターゲット待ち行列からのメッセージの取出しを遅延させることをさらに含む、先行するいずれかの例の方法。
【0097】
例7は以下のとおりである。最大値に関連したメッセージがもはやそのメッセージの関連待ち行列にないと判定すること、決定されたタイミング差の中から、残りのタイミング差の最大値を識別すること、および残りのタイミング差の最大値がしきい値よりも小さい場合に、ターゲット待ち行列からのターゲット・メッセージの取出しを許可することをさらに含む、先行するいずれかの例の方法。
【0098】
例8は以下のとおりである。時間的整列要件を表す入力信号を受け取ること、および受け取った入力信号に基づいてしきい値を決定することをさらに含む、先行するいずれかの例の方法。
【0099】
例9は以下のとおりである。しきい値が、それぞれの待ち行列の中の最初のメッセージと第2のメッセージの平均に等しい、先行するいずれかの例の方法。
【0100】
例10は以下のとおりである。取得したそれぞれのメッセージについて、そのメッセージに関連した時刻を表すタイムスタンプを生成すること、および生成されたタイムスタンプをそのメッセージに関連づけることをさらに含む、先行するいずれかの例の方法。
【0101】
例11は以下のとおりである。それぞれのメッセージが、複数のトピックのうちの少なくとも1つのトピックに関係しており、この方法が、複数のトピックのそれぞれのトピックについて、少なくとも1つのトピックに関連した複数の待ち行列を定義することをさらに含み、それぞれのメッセージを、複数の待ち行列のうちの少なくとも1つの待ち行列に格納することが、それぞれのメッセージを、そのメッセージが関係するトピックに関連した複数の待ち行列のうちの少なくとも1つの待ち行列に格納することを含む、先行するいずれかの例の方法。
【0102】
例12は以下のとおりである。メッセージ・ストリームを処理するためのコンピュータ・プログラム製品であって、このコンピュータ・プログラム製品が、プログラム命令が実装されたコンピュータ可読ストレージ媒体を含み、このプログラム命令が、メッセージ・ストリームのメッセージを取得することを処理ユニットに実行させるように処理ユニットによって実行可能であり、それぞれのメッセージが関連するタイムスタンプを有し、このプログラム命令がさらに、それぞれのメッセージを、複数の待ち行列のうちの少なくとも1つの待ち行列に格納することを処理ユニットに実行させるように処理ユニットによって実行可能であり、それぞれの待ち行列のメッセージが、それらのメッセージのタイムスタンプに基づいて、最も早いタイムスタンプを有するメッセージがその待ち行列の先頭に配置されるように順序付けされ、このプログラム命令がさらに、ターゲット待ち行列の先頭からのターゲット・メッセージの取出しを、ターゲット・メッセージのタイムスタンプと複数の待ち行列のうちの他の待ち行列の各々における先頭メッセージのタイムスタンプとの間のタイミング差に基づいて制御すること処理ユニットに実行させるように処理ユニットによって実行可能である、コンピュータ・プログラム製品。
【0103】
例13は以下のとおりである。プログラム命令がさらに、他の待ち行列の各々について、ターゲット・メッセージのタイムスタンプとそれぞれの待ち行列の先頭メッセージとの間のタイミング差を決定すること、および決定されたタイミング差の中からタイミング差の最大値を識別することを処理ユニットに実行させるように構成されている、例12によるコンピュータ・プログラム製品。
【0104】
例14は以下のとおりである。プログラム命令がさらに、タイミング差の最大値がしきい値よりも小さい場合に、ターゲット待ち行列からのターゲット・メッセージの取出しを許可することを処理ユニットに実行させるように構成されている、例12または13によるコンピュータ・プログラム製品。
【0105】
例15は以下のとおりである。プログラム命令がさらに、タイミング差の最大値がしきい値を超えている場合に、ターゲット待ち行列からのメッセージの取出しを拒否すること、およびターゲット待ち行列からのメッセージの取出しが拒否されたことに応答して、エラー・メッセージを生成することを処理ユニットに実行させるように構成されている、例12から14のいずれかによるコンピュータ・プログラム製品。
【0106】
例16は以下のとおりである。メッセージ・ストリームを処理するためのシステムであって、このシステムが、メッセージ・ストリームのメッセージを取得するように構成されたインタフェースを備え、それぞれのメッセージが関連するタイムスタンプを有し、このシステムがさらに、それぞれのメッセージを、複数の待ち行列のうちの少なくとも1つの待ち行列に格納するように構成された待ち行列構成要素を備え、それぞれの待ち行列のメッセージが、それらのメッセージのタイムスタンプに基づいて、最も早いタイムスタンプを有するメッセージがその待ち行列の先頭に配置されるように順序付けされ、このシステムがさらに、ターゲット待ち行列の先頭からのターゲット・メッセージの取出しを、ターゲット・メッセージのタイムスタンプと複数の待ち行列のうちのターゲット待ち行列ではない他の待ち行列の各々における先頭メッセージのタイムスタンプとの間のタイミング差に基づいて制御するように構成されたメッセージ取出し構成要素を備えるシステム。
【0107】
例17は以下のとおりである。メッセージ取出し構成要素が、他の待ち行列の各々について、ターゲット・メッセージのタイムスタンプとその待ち行列の先頭メッセージとの間のタイミング差を決定し、決定されたタイミング差の中からタイミング差の最大値を識別し、タイミング差の最大値がしきい値を超えているかどうかに基づいて、リクエストされた待ち行列からのターゲット・メッセージの取出しを許可するように構成された、例16によるシステム。
【0108】
例18は以下のとおりである。メッセージ取出し構成要素が、タイミング差の最大値がしきい値を超えていない場合に、リクエストされた待ち行列からのターゲット・メッセージの取出しを許可するように構成された、例16または17によるシステム。
【0109】
例19は以下のとおりである。メッセージ取出し構成要素がさらに、タイミング差の最大値がしきい値を超えている場合に、リクエストされた待ち行列からのターゲット・メッセージの取出しを拒否したことに応答して、エラー・メッセージを生成するように構成された、例16から18のいずれかによるシステム。
【0110】
例20は以下のとおりである。時間的整列要件を表す入力信号を受け取り、受け取った入力信号に基づいてしきい値を決定するように構成された整列設定構成要素をさらに備える、例16から19のいずれかによるシステム。
【0111】
例21は以下のとおりである。取得したそれぞれのメッセージについて、そのメッセージに関連した時刻を表すタイムスタンプを生成し、生成されたタイムスタンプをそれぞれのメッセージに関連づけるように構成されたタイミング構成要素をさらに備える、例16から20のいずれかによるシステム。
【0112】
例22は以下のとおりである。それぞれのメッセージが、複数のトピックのうちの少なくとも1つのトピックに関係しており、待ち行列構成要素がさらに、複数のトピックのそれぞれのトピックについて、そのトピックに関連した複数の待ち行列を定義するように構成されており、待ち行列構成要素がさらに、それぞれのメッセージを、そのメッセージが関係するトピックに関連した複数の待ち行列のそれぞれの待ち行列に格納するように構成されている、例16から21のいずれかによるシステム。
【0113】
例23は以下のとおりである。しきい値をユーザが定義する、例16から22のいずれかによるシステム。
【0114】
例24は以下のとおりである。メッセージ・ストリームを処理するためのコンピュータ実施方法であって、この方法が、メッセージ・ストリームのメッセージを取得することを含み、それぞれのメッセージが関連するタイムスタンプを有し、それぞれのメッセージが、複数のトピックのうちの少なくとも1つのトピックに関係しており、この方法がさらに、少なくとも1つのトピックに関連した複数の待ち行列を定義すること、およびそれぞれのメッセージを、それぞれのメッセージが関係する少なくとも1つのトピックに関連した複数の待ち行列のうちの少なくとも1つの待ち行列に格納すること、それぞれのメッセージを、複数の待ち行列のうちの少なくとも1つの待ち行列に格納することを含み、それぞれの待ち行列のメッセージが、それらのメッセージのタイムスタンプに基づいて、最も早いタイムスタンプを有するメッセージがその待ち行列の先頭に配置されるように順序付けされ、この方法がさらに、メッセージに関連した時刻を表すタイムスタンプを生成すること、生成されたタイムスタンプをメッセージに関連づけること、ターゲット待ち行列の先頭からのターゲット・メッセージの取出しを、ターゲット・メッセージのタイムスタンプと複数の待ち行列のうちのターゲット待ち行列を含まない他の待ち行列の各々の先頭メッセージのタイムスタンプとの間のタイミング差に基づいて制御すること、他の待ち行列の各々について、ターゲット・メッセージのタイムスタンプとその待ち行列の先頭メッセージとの間のタイミング差を決定すること、決定されたタイミング差の中からタイミング差の最大値を識別すること、時間的整列要件を表す入力信号を受け取ること、受け取った入力信号に基づいてしきい値を決定すること、およびタイミング差の最大値がしきい値よりも小さいことに応答して、ターゲット待ち行列からのターゲット・メッセージの取出しを許可することを含むコンピュータ実施方法。
【0115】
例25は以下のとおりである。システムであって、プロセッサと、プロセッサに通信可能に結合されたコンピュータ可読ストレージ媒体であり、プログラム命令を記憶した、コンピュータ可読ストレージ媒体とを備え、このプログラム命令が、プロセッサによって実行されたときに、メッセージ・ストリームのメッセージを取得することをプロセッサに実行させるように構成されており、それぞれのメッセージが関連するタイムスタンプを有し、それぞれのメッセージが、複数のトピックのうちの少なくとも1つのトピックに関係しており、このプログラム命令がさらに、プロセッサによって実行されたときに、少なくとも1つのトピックに関連した複数の待ち行列を定義すること、およびそれぞれのメッセージを、それぞれのメッセージが関係する少なくとも1つのトピックに関連した複数の待ち行列のうちの少なくとも1つの待ち行列に格納すること、それぞれのメッセージを、複数の待ち行列のうちの少なくとも1つの待ち行列に格納することをプロセッサに実行させるように構成されており、それぞれの待ち行列のメッセージが、それらのメッセージのタイムスタンプに基づいて、最も早いタイムスタンプを有するメッセージがその待ち行列の先頭に配置されるように順序付けされ、このプログラム命令がさらに、プロセッサによって実行されたときに、メッセージに関連した時刻を表すタイムスタンプを生成すること、生成されたタイムスタンプをメッセージに関連づけること、ターゲット待ち行列の先頭からのターゲット・メッセージの取出しを、ターゲット・メッセージのタイムスタンプと複数の待ち行列のうちのターゲット待ち行列を含まない他の待ち行列の各々の先頭メッセージのタイムスタンプとの間のタイミング差に基づいて制御すること、他の待ち行列の各々について、ターゲット・メッセージのタイムスタンプとその待ち行列の先頭メッセージとの間のタイミング差を決定すること、決定されたタイミング差の中からタイミング差の最大値を識別すること、時間的整列要件を表す入力信号を受け取ること、受け取った入力信号に基づいてしきい値を決定すること、拒否されているターゲット待ち行列からのメッセージの取出しを遅延させること、最大値に関連したメッセージがもはやそのメッセージの関連待ち行列にないと判定すること、決定されたタイミング差の中から、残りのタイミング差の最大値を識別すること、および残りのタイミング差の最大値がしきい値よりも小さい場合に、ターゲット待ち行列からのターゲット・メッセージの取出しを許可することをプロセッサに実行させるように構成されている、システム。
図1
図2
図3
図4
図5
図6