(57)【特許請求の範囲】
【請求項１】
１又は複数のプロセッサ、システムメモリ、及びメッセージプロデューサからのメッセージをキャプチャするキャプチャプロトコルを構成するメッセージログ要素を有するメッセージログと、
１又は複数のプロセッサ、システムメモリ、及びメッセージコンシューマへメッセージを配信する配信プロトコルを構成するカーソル要素を有するカーソルと、
を備える分散メッセージシステムであって、前記分散メッセージシステムは、前記メッセージログ及び前記カーソルを用いて前記メッセージプロデューサから前記メッセージコンシューマへメッセージ送信するためにエンドツーエンドメッセージアシュアランスを構成する方法を実装し、前記方法は、
前記分散メッセージシステムにおけるメッセージ送信のための所望のエンドツーエンドメッセージアシュアランスを提供する、キャプチャアシュアランスと、転送アシュアランスと、配信アシュアランスとの組み合わせを示すランタイム設定データを受信する動作と、
適切なメッセージログ要素の起動及び解除を行い、前記キャプチャアシュアランスを構成し及びカーソル要素により提供される前記転送アシュアランスの対応する第２の部分とインターオペレイトする前記転送アシュアランスの第１の部分を構成するために、前記ランタイム設定データから前記メッセージログ要素の構成の設定を構築する動作と、
適切なカーソル要素の起動及び解除を行い、前記配信アシュアランスを構成し及び前記メッセージログ要素により提供される前記転送アシュアランスの前記第１の部分とインターオペレイトする前記転送アシュアランスの前記対応する第２の部分を構成するために前記ランタイム設定データからカーソル要素の構成の設定を構築する動作と、
前記メッセージログに前記メッセージログ要素の構成を送信して、前記キャプチャアシュアランス及び前記転送アシュアランスの前記第１の部分を構成するように命令する動作と、
前記カーソルに前記カーソル要素の構成を送信して、前記配信アシュアランス及び前記転送アシュアランスの第２の部分を構成するように命令する動作と
を含む方法であることを特徴とする分散メッセージシステム。
【請求項２】
前記メッセージログ要素は、拡張可能な一連のキャプチャプロトコルを構成して、前記メッセージを前記メッセージプロデューサからキャプチャすることが可能であり、前記拡張可能な一連のキャプチャプロトコルは、一連のキャプチャアシュアランス内から種々の異なるキャプチャアシュアランスのうちいずれかを提供するように構成され、前記一連のキャプチャアシュアランスは、デュアラブルストアの使用により変化し且つトランザクションの使用により変化し、
前記カーソル要素は、拡張可能な一連の配信プロトコルのうちいずれかを構成して、前記メッセージを前記メッセージコンシューマに配信することが可能であり、前記拡張可能な一連の配信プロトコルは、一連の配信アシュアランス内から種々の異なる配信アシュアランスのうちいずれかを提供するように構成され、前記一連の配信アシュアランスは、デュアラブルストアの使用によって変化し且つトランザクションの使用によって変化し、
前記メッセージログ及び前記カーソルの各々は、互いにインターオペレイトして、拡張可能な一連の転送プロトコルのうちいずれかを構成して、メッセージを前記メッセージログから前記カーソルへと転送する要素をさらに含み、前記拡張可能な一連の転送プロトコルは、一連の転送アシュアランス内から種々の異なる転送アシュアランスのうちいずれかを提供するように構成され、前記一連の転送アシュアランスは、タイムウィンドウの使用によって異なり、承認された配信の使用によって異なることを特徴とする請求項１に記載の分散メッセージシステム。
【請求項３】
拡張可能な一連のキャプチャプロトコルを実装する前記メッセージログ要素は、
前記一連のキャプチャプロトコルのうちから選択されたキャプチャプロトコルを構成する際に幇助するよう設定可能に起動され且つ解除されるトランザクションバッファであって、トランザクションの動作を前記選択されたキャプチャプロトコルに与えるように起動され、非トランザクションの動作を前記選択されたキャプチャプロトコルに与えるように解除される、トランザクションバッファと、
前記拡張可能な一連のキャプチャプロトコルのうちから選択されたキャプチャプロトコルを実装する際に、幇助するよう設定可能に起動され且つ解除されるデュアラブルストアであって、デュアラブルストレージを選択されたキャプチャプロトコルに与えるように起動され、揮発性ストレージを選択されたキャプチャプロトコルに与えるように解除される、デュアラブルストアと
を含むことを特徴とする請求項２に記載の分散メッセージシステム。
【請求項４】
前記トランザクションバッファ及びデュアラブルストアのうちの１つが起動され且つ前記トランザクションバッファ及びデュアラブルストアのうちの１つが解除されることを特徴とする請求項３に記載の分散メッセージシステム。
【請求項５】
拡張可能な一連の転送プロトコルを実装する前記カーソル要素は、
前記拡張可能な一連の転送プロトコルのうちから選択された転送プロトコルを構成する際に、幇助するよう設定可能に起動され且つ解除されるトランザクション要素であって、トランザクションの動作を前記選択された転送プロトコルに与えるように起動され、非トランザクションの動作を前記選択された転送プロトコルに与えるように解除される、トランザクション要素と、
前記拡張可能な一連の転送プロトコルのうちから選択された転送プロトコルを実装する際に、幇助するよう設定可能に起動され且つ解除される、デュアラブルステイト要素であって、デュアラブルカーソルステイトを前記選択された転送プロトコルに与えるように起動され、揮発性カーソルステイトを前記選択された転送プロトコルに与えるように解除される、デュアラブルステイト要素と
を含むことを特徴とする請求項２に記載の分散メッセージシステム。
【請求項６】
前記トランザクション要素及びデュアラブルステイト要素のうちの１つが起動され且つ前記トランザクション要素及びデュアラブルステイト要素のうちの１つが解除されることを特徴とする請求項５に記載の分散メッセージシステム。
【請求項７】
拡張可能な一連の転送プロトコルを実装するように互いにインターオペレイトする前記メッセージログ及び前記カーソルは、
前記一連の拡張可能な転送プロトコルのうちから選択された転送プロトコルを実装する際に、幇助するよう設定可能に起動可能であり且つ解除可能であるメッセージ承認要素であって、メッセージ承認動作を前記選択された転送プロトコルに与えるように起動され、メッセージ承認動作を前記選択された転送プロトコルに対して防止するように解除される、メッセージ承認要素と、
前記一連の拡張可能な転送プロトコルのうちから選択された転送プロトコルを実装する際に、幇助するよう設定可能に起動可能であり且つ解除可能であるタイムウィンドウ要素であって、メッセージのウィンドウの維持を前記選択された転送プロトコルに提供するように起動され、メッセージのウィンドウの維持を前記選択された転送プロトコルに対して防止するように解除される、タイムウィンドウ要素と
を含むことを特徴とする請求項２に記載の分散メッセージシステム。
【請求項８】
前記メッセージ承認要素及びタイムウィンドウ要素のうちの１つが起動され且つ前記メッセージ承認要素及びタイムウィンドウ要素のうちの１つが解除されることを特徴とする請求項７に記載の分散メッセージシステム。
【請求項９】
前記メッセージログ要素及び前記カーソル要素は、設定で変えられるように起動され且つ解除されて、ベストエフォートメッセージ配信、最大１回メッセージ配信、最小１回メッセージ配信、及び１回限定メッセージ配信のうち一つを提供することを特徴とする請求項２に記載の分散メッセージシステム。
【請求項１０】
前記メッセージログ要素及び前記カーソル要素は、設定で変えられるように起動され且つ解除されて、デュアラブルメッセージ配信又は揮発性メッセージ配信のうち一つを提供することを特徴とする請求項２に記載の分散メッセージシステム。
【請求項１１】
前記メッセージログ要素及び前記カーソル要素は、設定で変えられるように起動され且つ解除されて、デュアラブル１回限定メッセージ配信を提供することを特徴とする請求項２に記載の分散メッセージシステム。
【請求項１２】
前記メッセージログ要素は、前記メッセージプロデューサからの前記メッセージをキャプチャするデュアラブルトランザクションベースのキャプチャプロトコルを実装し、
前記カーソル要素は、前記メッセージを前記メッセージコンシューマに配信するデュアラブルトランザクションベースの配信プロトコルを実装するように構成され、
前記メッセージログ及び前記カーソルの各々は、拡張可能な一連の転送プロトコルを実装するように互いにインターオペレイトして、メッセージを前記メッセージログから前記カーソルに転送する要素をも含み、前記インターオペレイトする要素は、メッセージ承認動作及びメッセージのウィンドウの保持を提供する転送プロトコルを実装するように構成されていることを特徴とする請求項１に記載の分散メッセージシステム。
【請求項１３】
前記デュアラブルトランザクションベースのキャプチャプロトコルを実装する前記メッセージログ要素は、
前記一連の拡張可能なキャプチャプロトコルのうちから選択されたキャプチャプロトコルを実装する際に幇助するよう設定可能に起動され且つ解除されるトランザクションバッファであって、トランザクションの動作を前記デュアラブルトランザクションベースのキャプチャプロトコルに与えるように起動され、前記拡張可能な一連のキャプチャプロトコルのうちから前記選択されたキャプチャプロトコルを実装する際に、幇助するよう設定可能に起動可能であり且つ解除可能である、トランザクションバッファと、
デュアラブルストレージを前記デュアラブルトランザクションベースのキャプチャプロトコルに与えるように起動されるデュアラブルストアと
を含むことを特徴とする請求項１２に記載の分散メッセージシステム。
【請求項１４】
前記デュアラブルトランザクションベースのキャプチャプロトコルを実装する前記メッセージログ要素は、
前記一連の拡張可能な配信プロトコルのうちから選択された配信プロトコルを実装する際に、幇助するよう設定可能に起動可能であり且つ解除可能であるトランザクション要素であって、トランザクションの動作をデュアラブルトランザクションベースの配信プロトコルに与えるように起動される、トランザクション要素と、
前記拡張可能な一連の転送プロトコルのうちから選択された転送プロトコルを実装する際に、幇助するよう設定可能に起動可能であり且つ解除可能である、デュアラブルステイト要素であって、デュアラブルカーソルステイトを前記デュアラブルトランザクションベースの配信プロトコルに与えるように起動される、デュアラブルステイト要素と
を含むことを特徴とする請求項１２に記載の分散メッセージシステム。
【請求項１５】
メッセージ承認動作及びメッセージのウィンドウの保持を提供する転送プロトコルを実装するインターオペレイトする要素は、
前記一連の拡張可能な転送プロトコルのうちから選択された転送プロトコルを実装する際に、幇助するよう設定可能に起動可能であり且つ解除可能であるメッセージ承認要素であって、メッセージ承認動作を前記転送プロトコルに与えるように起動される、メッセージ承認要素と、
前記一連の拡張可能な転送プロトコルのうちから選択された転送プロトコルを実装する際に、幇助するよう設定可能に起動可能であり且つ解除可能であるタイムウィンドウ要素であって、メッセージのウィンドウの維持を前記転送プロトコルに提供するように起動される、タイムウィンドウ要素と
を含むことを特徴とする請求項１２に記載の分散メッセージシステム。
【請求項１６】
メッセージログ及びカーソルを含む分散メッセージシステムにおいて、メッセージプロバイダからメッセージコンシューマへのメッセージを送信するためにエンドツーエンドアシュアランスを構成する方法であって、
前記分散メッセージシステムにおけるメッセージ送信のための所望のエンドツーエンドメッセージアシュアランスを提供する、キャプチャアシュアランスと、転送アシュアランスと、配信アシュアランスとの組合せを示すランタイム設定データを受信する動作と、
前記ランタイム設定データからのメッセージログ要素の構成の設定を構築する動作であって、適切なメッセージログ要素の起動及び解除を行い、前記キャプチャアシュアランスを構成し及びカーソル要素により提供される転送アシュアランスの対応する第２の部分とインターオペレイトする前記転送アシュアランスの第１の部分を構成する、動作と、
前記ランタイム設定データからのカーソル要素の構成の設定を構築する動作であって、適切なカーソル要素構成の起動及び解除を行い、前記配信アシュアランスを構成し及び、前記メッセージログ要素により提供される前記転送アシュアランスの前記第１の部分とインターオペレイトする前記転送アシュアランスの前記対応する第２の部分を構成する、動作と、
前記メッセージログ及びカーソルにおいて前記キャプチャアシュアランス、前記転送アシュアランス、及び前記配信アシュアランスを構成して、前記所望のエンドツーエンドメッセージアシュアランスを前記分散メッセージシステムに対して提供するように前記分散メッセージシステムに命令する動作であって、
前記メッセージログに前記メッセージログ要素の構成を送信して、前記キャプチャアシュアランス及び転送アシュアランスの前記第１の部分を構成するように命令する動作と、
前記カーソルに前記カーソル要素の構成を送信して、前記配信アシュアランス及び前記転送アシュアランスの前記第２の部分を構成するように命令する動作とを含む、動作と
を含むことを特徴とする方法。
【請求項１７】
キャプチャアシュアランス、転送アシュアランス、及び配信アシュアランスの組合せを示すランタイム設定データを受信する前記動作は、デュアラブル１回限定メッセージ配信を提供し得るキャプチャアシュアランス、転送アシュアランス、及び配信アシュアランスの組合せを示すランタイム設定データを受信する動作を含むことを特徴とする請求項１６に記載の方法。
【請求項１８】
前記メッセージログ及びカーソルにおいて前記キャプチャアシュアランス、前記転送アシュアランス、及び前記配信アシュアランスを構成して、前記所望のエンドツーエンドメッセージアシュアランスを前記分散メッセージシステムに対して実装するように、前記分散メッセージシステムに命令する動作は、
前記メッセージログ及びカーソルにおいて前記キャプチャアシュアランス、前記転送アシュアランス、及び前記配信アシュアランスを構成して、前記所望のエンドツーエンドメッセージアシュアランスをメッセージキューイングシステムに対して実装するように前記分散メッセージシステムに命令する動作を含むことを特徴とする請求項１６に記載の方法。
【請求項１９】
前記メッセージログ及びカーソルにおいて前記キャプチャアシュアランス、前記転送アシュアランス、及び前記配信アシュアランスを構成して、前記所望のエンドツーエンドメッセージアシュアランスを前記分散メッセージシステムに対して実装するように、前記分散メッセージシステムに命令をする動作は、
前記メッセージログ及びカーソルにおいて前記キャプチャアシュアランス、前記転送アシュアランス、及び前記配信アシュアランスを構成して、前記所望のエンドツーエンドメッセージアシュアランスをパブリッシュ／サブスクライブメッセージシステムに対して実装するように前記分散メッセージシステムに命令する動作を含むことを特徴とする請求項１６に記載の方法。
【請求項２０】
前記メッセージログ及びカーソルにおいて前記キャプチャアシュアランス、前記転送アシュアランス、及び前記配信アシュアランスを構成して、前記所望のエンドツーエンドメッセージアシュアランスを前記分散メッセージシステムに対して実装するように前記分散メッセージシステムに命令する動作は、
前記メッセージログ及びカーソルにおいて前記キャプチャアシュアランス、前記転送アシュアランス、及び前記配信アシュアランスを構成して、ベストエフォートメッセージメッセージ配信、最大１回メッセージ配信、最小１回メッセージ配信、及び１回限定メッセージ配信のうち一つと、デュアラブルメッセージ配信及び揮発性メッセージ配信のうち一つを実装するように前記分散メッセージシステムに命令する動作を含むことを特徴とする請求項１６に記載の方法。
【請求項２１】
前記キャプチャアシュアランス及び前記転送アシュアランスの前記第１の部分を構成するよう前記メッセージログ要素設定において命令された通りに前記メッセージログ要素を起動し且つ解除する前記メッセージログの動作と、
前記配信アシュアランス及び前記転送アシュアランスの前記第２の部分を構成する前記カーソル要素設定において命令された通りに前記カーソル要素を起動し且つ解除する前記カーソルの動作と、をさらに含む請求項１６に記載の方法。
【請求項２２】
命令が格納された１又は複数のコンピュータ可読記憶媒体であって、前記命令は、少なくとも１つのコンピュータシステムにより実行されたときに、
分散メッセージシステムにおけるメッセージ送信のための所望のエンドツーエンドメッセージアシュアランスを提供する、キャプチャアシュアランス、転送アシュアランス及び配信アシュアランスの組み合わせを示すランタイム設定データを受信する動作と、
適切なメッセージログ要素の起動及び解除を行い、前記キャプチャアシュアランスを構成し及びカーソル要素により提供される前記転送アシュアランスの対応する第２の部分とインターオペレイトする前記転送アシュアランスの第１の部分を構成するために、前記ランタイム設定データから前記メッセージログ要素の構成の設定を構築する動作と、
適切なカーソル要素の起動及び解除を行い、前記配信アシュアランスを構成し及び前記メッセージログ要素により提供される前記転送アシュアランスの前記第１の部分とインターオペレイトする前記転送アシュアランスの前記対応する第２の部分を構成するために前記ランタイム設定データからカーソル要素の構成の設定を構築する動作と、
前記メッセージログに前記メッセージログ要素の構成を送信して、前記キャプチャアシュアランス及び前記転送アシュアランスの第１の部分を構成するように命令する動作と、
前記カーソルに前記カーソル要素の構成を送信して、前記配信アシュアランス及び前記転送アシュアランスの第２の部分を構成するように命令する動作と
を含む方法を実装する命令であることを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピュータシステム及び関連技術は社会の多くの態様に影響を及ぼしている。実際、コンピュータシステムの情報処理能力は我々が生活し仕事をする方法を変えている。現在、コンピュータシステムは、コンピュータシステムの到来前に手動的に実行された多くのタスク（例えば、文書処理、スケジューリング、課金処理等）を普通に実行している。最近においては、コンピュータシステムは互いに接続され且つ他の電子装置と接続されて有線及び無線のコンピュータネットワークを形成し、その有線及び無線のコンピュータネットワーク上で、コンピュータシステム及び他の電子装置は電子データを転送することができる。従って、多くのコンピューティングタスクの性能が、多くの異なるコンピュータシステム及び／又は多くの異なるコンピュータ要素にわたり分散されている。
【０００２】
分散メッセージシステムは、キューイングを実行し且つメッセージパターンをパブリッシュし且つサブスクライブし（「ｐｕｂ／ｓｕｂ」）得る。キューは本質的には１対１のコンシューマメッセージの交換である。メッセージプロデューサはメッセージをキューに挿入し、メッセージコンシューマはキューからメッセージを取り出す。他方では、ｐｕｂ／ｓｕｂシステムは、１対多数のメッセージ交換である。メッセージプロデューサがメッセージをパブリッシュし、複数のメッセージコンシューマが、パブリッシュされたメッセージにサブスクライブし且つ受信する。
【０００３】
キューイング及びｐｕｂ／ｓｕｂパターンを実装するものを含む分散メッセージシステムは、メッセージストアによって通常戻される。これら分散メッセージシステムにおいて、トピックからメッセージにサブスクライブし又はキューから消費する個別のコンシューマの状態は、メッセージストアを用いて順序付けされる。コンシューマ（例えば、ユーザコードアプリケーション）は、分散メッセージシステムを通常使用して、メッセージがメッセージログからコンシューマへと、一度だけ配信されることを確認する。コンシューマは、メッセージを検索するのにトランザクションを使用する。これは、アプリケーションの状態は、本来カーソル状態に結合されているからである。残念ながら、トランザクションの使用は、キュー又はトピックからメッセージを受信する多数のコンシューマに対してスケールしない。
【０００４】
また、典型的な分散メッセージシステムには、他の多くの制限がある。例えば、分散メッセージシステムは、多くの場合、限定数のネットワークトポロジ又は単一のネットワークトポロジに強く結合されている。したがって、他のネットワークトポロジに使用する分散メッセージシステムを変更する能力が、もしあるならば、限定されている。例えば、いくつかの分配メッセージシステムは、コンシューマがファイアウォールを介してキュー若しくはトピックと分離されているトポロジー上で使用され得ない。
【０００５】
さらに、分散メッセージシステムは、自身が提供するメッセージアシュアランスにおいて通常制限されている。例えば、ベストエフォートメッセージ配信を提供する分散メッセージシステムは、メッセージが今までに全くドロップされていないことを確認するように一般には設計されていない。高アシュアランスを提供する分散メッセージシステムさえも、低いアシュアランスを提供するように通常変更され得ない。例えば、１回限定アシュアランスを提供する分散メッセージシステムは、最大１回、採用１回、若しくはベストエフォート配信を提供するように容易には通常変更され得ない。
【０００６】
また、同様の制限が分散メッセージシステム内のメッセージの永続性に関連づけられている。すなわち、分散メッセージシステムは、自身が提供するメッセージストアのタイプにおいて通常制限される。さらに、アシュアランスに関連付けられた制限と同様に、メッセージのストレージに関して高い信頼性を提供する分散メッセージシステムさえも、信頼性のより低いメッセージストレージを提供するように変更され得ない。例えば、デュラブルメッセージストレージを提供する分散メッセージシステムは、揮発性の若しくは非トランザクションのメッセージストレージを提供するように容易には通常変更され得ない。
【０００７】
分配メッセージシステムのネットワークトポロジに起因して、これらアシュアランス及びメッセージログに制限を課すことができるし、又は、これらアシュアランス及びメッセージログは、分配メッセージシステムのソフトウェア内のハードコード化された命令から生じ得る。例えば、デュラブルキューを設計する開発者にとって、信頼性の低いメッセージストレージのオプションを含ませ又は考慮する理由は全くないであろう（そして、開発者の雇い主の見解から、それはリソースの浪費であり得る）。同様に、ベストエフォート配信を用いたｐｕｂ／ｓｕｂメッセージシステムの開発者は、より信頼性の高いメッセージ配信が必ずしも必要ではないときに、より信頼性の高いメッセージ配信のためのオプションを付加する重要なリソースを浪費するであろう。
【０００８】
しかしながら、ほとんどのコンピュータ化されたシステムのように、分散メッセージシステムの要求は、経時変化し得る。例えば、分配メッセージシステムは、より多くのユーザを獲得し得る。ユーザのタイプは（例えば、フリーウエアから収益モデルまで移行して）変化し得るし、政府の規制は変更し得るし、コストを削減する戦略的企業決定等なされ得る。変更された要求に関して、メッセージ配信アシュアランスとメッセージストレージの信頼性に対する対応する変化が保証され得る。
【０００９】
例えば、フリーウエアから収益モデルまで移行するとき、顧客は、高メッセージ配信アシュアランスを（例えば、ベストエフォートから１回限定まで）要求し得る。あるいは、費用を節減するために、ＩＴ部門は、メッセージ配信アシュアランスを低減させることが、コスト的により効率的であることを決定し得る（例えば、最小１回からベストエフォートまで）。別の典型的な理由としては、分配メッセージシステム上で駆動するビジネスアプリケーションが変更されたか又は置換されていることがあげられ、その結果、分散メッセージシステムのその要求に変化が生じる。同様に、アシュアランスを高レベルの低コスト効率において利用すると、基本的なネットワークの故障率が変化してしまっているかもしれない。残念ながら、分配メッセージシステムにおいて既存のメッセージ配信アシュアランス及びメッセージ記ストレージの信頼性を変更する（増大させ又は低減させる）効率的な方法は、通常全くない。
【００１０】
１つの選択は、所望の配信アシュアランスとストレージの信頼性機構を含むようにコードを再構築することがある。しかしながら、これは、時間がかかって、高価である場合があり、開発者にリソースが集中してしまう。別の選択は、所望の配信アシュアランス及びストレージ信頼性を含む新規分配メッセージシステムを購入することである。しかしながら、これもコスト高であり得るし、既存の要素とメッセージとの統合中に、互換性が困難となり得る。
【発明の概要】
【００１１】
本発明は、分散メッセージシステム内のアシュアランスを構成する方法、システム、及びコンピュータプログラムプロダクトにまで及ぶ。コンポーネント化メッセージシステムは、種々の異なるキャプチャプロトコル、転送プロトコル、及び転送プロトコルの全ての設定が容易にし、所望のメッセージアシュアランスを提供するように互いに情報のやり取りを行う。従って、企業は、メッセージシステムをより効率的に設定して（且つ設定を変更して）、企業の（変更される可能性のある動的な）企業論理と整合させることができる。
【００１２】
いくつかの実施形態においては、コンポーネント化メッセージシステムはメッセージログとカーソルを含む。一般に、メッセージログは、メッセージを記憶するように構成されている。また、メッセージログは、拡張可能な一連のキャプチャプロトコルのうちいずれかを構成して、メッセージをメッセージプロデューサからキャプチャするメッセージログ要素を含む。これにより、プロデューサは、異なるアシュアランスを用いて且つ異なるプロトコル上においてメッセージを分散メッセージシステムに伝えることが可能となる。例えば、すべてのリクエスト‐リスポンスプロトコルが、最小１回（ＡＬＯ：Ａｔ−Ｌｅａｓｔ−Ｏｎｃｅ）アシュアランスを達成するのに使用され得る。他方では、メッセージが消失したか又はクラッシュが生じる場合、ワンウェイプロトコルは、フィードバックが全くないので、最大１回（ＡＭＯ：Ａｔ−Ｍｏｓｔ−Ｏｎｃｅ）を実行し得るに過ぎない。拡張可能な一連のキャプチャプロトコルは、一連のメッセージキャプチャアシュアランス内から種々の異なるメッセージキャプチャアシュアランスのうちいずれかを提供し得る。異なるメッセージキャプチャアシュアランスは、異なる組み合わせのメッセージログ要素を使用することによって容易にせしめられる。かかる使用は、デュアラブルストア及びトランザクションの１つ以上を利用することを含む。
【００１３】
一般に、カーソルは、メッセージログにおけるメッセージを介して、コンシューマの進行を追跡するように構成されている。また、カーソルはカーソル要素を含む。カーソル要素は、拡張可能な一連の配信プロトコルのうちいずれか及び／又はメッセージ変換パターン（ＭＥＰｓ）を構成して、メッセージをメッセージコンシューマに配信する。ＭＥＰｓは、誰が最初に誰にデータを送信するのかを通常認識し、かつ、そのデータは何を含んでいるのかを通常認識する（例えば、ワンウェイ対リクエスト‐リプライ）。配信プロトコルは、データがワイヤ（例えば、ＸＭＬ、バイトパケット等）上にどのように現れるかを示す。拡張可能な一連の配信プロトコルは、一連のメッセージ配信アシュアランス内から種々の異なるメッセージ配信アシュアランスのうちいずれかを提供し得る。異なるメッセージ配信アシュアランスは、異なる組み合わせのカーソル要素を使用することによって容易にせしめられる。かかる使用は、デュアラブルストア及びトランザクションの１つ以上を利用することを含む。
【００１４】
また、メッセージログ及びカーソルの各々は、互いにインターオペレイトして、拡張可能な一連の転送プロトコルのうちいずれかを構成して、メッセージをメッセージログから分離カーソルに転送する更なる要素を含む。拡張可能な一連の転送プロトコルは、一連のメッセージ転送アシュアランス内から種々の異なるメッセージ転送アシュアランスのうちいずれかを提供し得る。異なるメッセージ転送アシュアランスは、異なる組み合わせのメッセージログ及びカーソル要素を使用することによって容易にせしめられる。かかる使用は、１つ以上のタイムウィンドウを使用すること及び認証された配信を変更することを含む。
【００１５】
従って、キャプチャアシュアランス、転送アシュアランス、及び配信アシュアランスの様々な組み合わせが結合されて、例えば、ベストエフォート、最大１回、最小１回、及び１回限定等及びデュラブル又は揮発性の異なるエンドツーエンドアシュアランスを提供し得る。
【００１６】
発明のさらなる特徴及び利点は、詳細な説明で説明され、それに続いて、詳細な説明から部分的に明らかとなり、又はこの発明の実施によって理解されるであろう。本発明の特徴及び利点は、添付された請求の範囲において特に指摘された手段及び組合せによって認識され且つ得られるであろう。本発明のこれら特徴及び他の特徴は、以下の説明と添付した特許請求の範囲から、より完全に明らかになるだろうし、又は、以下に詳細に説明するように、本発明の実施によって理解され得る。
【図面の簡単な説明】
【００１７】
本発明の上述の利点及び他の利点及び特徴が理解され得る方法について説明するために、簡単に説明された本発明のより特定の説明が、添付図面に図示されている特定の実施形態を参照することによって提供されるだろう。これらの図面は本発明の典型的実施形態のみを示すものであり、本発明の範囲を限定するものとして考慮されるべきものでないことを理解すれば、本発明は、添付図面を使用してさらなる特異性及び詳細と共に、記述され且つ説明されるだろう。
【００１８】
【図１Ａ】分散メッセージシステム内のアシュアランスを構成することを容易にするコンピュータアーキテクチャ１００の実施例を示す図である。
【００１９】
【図１Ｂ】デュラブル１回限定エンドツーエンドメッセージ転送アシュアランスを分散メッセージシステムに提供するように構成された例示的コンピュータアーキテクチャを示す図である。
【図２】分散メッセージシステムに対して設定可能となるように構成され得るアシュアランスの種々のマトリクスを示す図である。
【図３】分配メッセージシステム内のメッセージアシュアランスを設定する例示的方法のフロー図である。
【発明を実施するための形態】
【００２０】
本発明は、分散メッセージシステム内のアシュアランスを設定する方法、システム、及びコンピュータプログラムプロダクトにまで及ぶ。コンポーネント化メッセージシステムは、種々の異なるキャプチャプロトコル、転送プロトコル、及び転送プロトコルの全てを設定することを容易にせしめ、所望のメッセージアシュアランスを提供するように互いに情報のやり取りを行う。従って、企業は、メッセージシステムをより効率的に設定し（且つ設定を変更して）、企業の（変更される可能性のある動的な）企業論理と整合せしめる。
【００２１】
いくつかの実施形態においては、コンポーネント化メッセージシステムはメッセージログとカーソルを含む。一般に、メッセージログは、メッセージを記憶するように設定されている。また、メッセージログは、メッセージログ要素を含む。メッセージログ要素は、拡張可能な一連のキャプチャプロトコルのうちいずれかを構成して、メッセージをメッセージプロデューサからキャプチャする。拡張可能な一連のキャプチャプロトコルは、一連のメッセージキャプチャアシュアランス内から種々の異なるメッセージキャプチャアシュアランスのうちいずれかを提供し得る。異なるメッセージキャプチャアシュアランスは、異なる組み合わせのメッセージログ要素を使用することによって容易にせしめられる。かかる使用は、デュアラブルストア及びトランザクションの１つ以上を利用することを含む。
【００２２】
一般に、カーソルは、メッセージログにおけるメッセージを介して、コンシューマの進行を追跡するように設定されている。また、カーソルは、拡張可能な一連の配信プロトコルのうちいずれかを構成して、メッセージをメッセージコンシューマに配信するカーソル要素を含む。拡張可能な一連の配信プロトコルは、一連のメッセージ配信アシュアランス内から種々の異なるメッセージ配信アシュアランスのうちいずれかを提供し得る。異なるメッセージ配信アシュアランスは、異なる組み合わせのカーソル要素を使用することによって容易にせしめられる。かかる使用は、デュアラブルストア及びトランザクションの１つ以上を利用することを含む。
【００２３】
また、メッセージログ及びカーソルの各々は、互いにインターオペレイトして、拡張可能な一連の転送プロトコルのうちいずれかを構成して、メッセージを前記メッセージログから前記分離カーソルに転送する更なる要素を含む。拡張可能な一連の転送プロトコルは、一連のメッセージ転送アシュアランス内から種々の異なるメッセージ転送アシュアランスのうちいずれかを提供し得る。異なるメッセージ転送アシュアランスは、異なる組み合わせのメッセージログ及びカーソル要素を使用することによって容易にせしめられる。かかる使用は、１つ以上のタイムウィンドウを使用すること及び認証された配信の使用を変更することを含む。
【００２４】
従って、キャプチャアシュアランス、転送アシュアランス、及び配信アシュアランスの様々な組み合わせが結合されて、例えば、ベストエフォート、最大１回、最小１回、及び１回限定等の異なるエンドツーエンドアシュアランスを提供し得る。
【００２５】
本発明の実施形態は、以下でさらに詳細に説明するように、コンピュータハードウェアを含む専用若しくは汎用のコンピュータを、含み得るし、又は利用し得る。また、本発明の範囲内の実施形態は、コンピュータ実行可能命令及び／又はデータ構造を転送し若しくは記憶する物理的コンピュータ読取可能媒体及び他のコンピュータ読取可能媒体を含む。かかるコンピュータ読取可能媒体は、汎用若しくは専用コンピュータシステムによってアクセスされ得る利用可能な媒体であり得る。コンピュータ実行可能命令を記憶するコンピュータ読取可能媒体は、物理的な記憶媒体である。コンピュータ実行可能命令を転送するコンピュータ読取可能媒体は、伝送媒体である。したがって、限定ではなく、例として、本発明の実施形態は、明瞭に全く異なる２種類のコンピュータ読取可能媒体を少なくとも含み得る。かかる２種類のコンピュータ読取可能媒体は、物理的記憶媒体及び伝送媒体である。
【００２６】
物理的記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、他の光ディスク記憶装置、磁気ディスク記憶装置、他の磁気記憶装置、又は、コンピュータ実行可能命令又はデータ構造の形態で所望のプログラムコード手段を記憶するのに使用され且つ汎用若しくは専用コンピュータによってアクセスされ得るいかなる他の媒体を含む。
【００２７】
「ネットワーク」とは、コンピュータシステム及び／又はモジュール及び／又は他の電子装置の間の電子データの転送を可能にする１つ以上のデータリンクとして定義される。  （配線接続、ワイヤレス、又は配線接続若しくはワイヤレスの組み合わせかのうちいずれかによって）ネットワーク又は別の通信接続上において情報がコンピュータに転送され又は提供されるとき、コンピュータは接続を伝送路であると適切にみなす。伝送媒体はネットワーク及び／又はデータリンクを含み得る。そのネットワーク及び／又はデータリンクは、コンピュータ実行可能命令又はデータ構造の形態で所望のプログラムコード手段を伝送するのに使用されかつ汎用若しくは専用コンピュータによってアクセスされ得る。上記組み合わせも、コンピュータ可読媒体の範囲内に含まれるべきである。
【００２８】
さらに、様々なコンピュータシステム要素に到達する際に、コンピュータ実行可能命令又はデータ構造の形態のプログラムコード手段は、伝送媒体から物理的記憶媒体まで自動的に転送され得る（又はその逆も同様である）。例えば、ネットワーク若しくはデータリンク上で受信されたコンピュータ実行可能命令又はデータ構造は、ネットワークインターフェースモジュール内のＲＡＭにおいてバッファリングされ、そして、コンピュータシステムのＲＡＭ及び／又はコンピュータシステムにおける少数の揮発性物理的記憶媒体に最終的に転送され得る。したがって、物理的記憶媒体は、伝送媒体をも利用する（又は主に伝送媒体を利用する）コンピュータシステム要素に含まれ得ることが理解されるべきである。
【００２９】
コンピュータ実行可能命令は、汎用コンピュータ、専用コンピュータ、又は専用処理デバイスに特定の機能又は一群の機能を実行せしめる命令及びデータを例えば含む。コンピュータ実行可能命令は、例えば、バイナリ、アセンブリ言語等の中間的フォーマット命令、又はソースコードであってもよい。本発明が構造の機能及び／又は方法論の動作に対して特定の言語によって説明されてきたが、添付した特許請求の範囲において定義された本発明は、上述した特徴又は動作に必ずしも限定されないことが理解されるできである。むしろ、上述した特徴又は動作は特許請求の範囲に係る発明を実装する例示的形態として説明されている。
【００３０】
当業者であれば、本発明は多くのタイプのコンピュータシステム構成を有するネットワークコンピュータ環境において実施され得ることを十分理解するだろう。その多くのタイプのコンピュータシステム構成は、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、携帯端末デバイス、マルチプロセッサシステム、マイクロプロセッサベースの家庭用電化製品若しくはプログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、携帯電話、ＰＤＡ、ポケットベル、ルータ、スイッチ、等を含む。また、本発明は分散コンピュータ環境においても実施され得る、分散コンピュータ環境において、  （配線接続のデータリンク、無線データリンク、又は、配線接続のデータリンク及び無線データリンクの組み合わせのうちいずれかによって、）リンクされているローカル及びリモートコンピュータシステムの双方がタスクを実行する。分散システム環境においては、プログラムモジュールはローカル記憶デバイス及びリモートメモリ記憶デバイスの双方に設けられ得る。
【００３１】
図１Ａ、分散メッセージシステム内のアシュアランスを設定することを容易にするコンピュータアーキテクチャ１００の実施例を示している。図示されているように、コンピュータアーキテクチャ１００は、メッセージプロデューサ１０５、デュラブルリソースマネージャ１０６、メッセージログ１０２、カーソル１０３、デュラブルリソースマネージャ１０８、メッセージコンシューマ（ｓ）１０７、及びアシュアランス設定マネージャ１０４を含む。表されたコンピュータシステムの各々は、例えば、ローカルエリアネットワーク（「ＬＡＮ」）、ワイドエリアネットワーク（「ＷＡＮ」）、及びインターネット等のネットワーク上で互いに接続され得る（又はネットワークの一部であり得る）。従って、図示された要素の各々と、すべての他の接続された要素とは、メッセージ関連データを作成することができ且つ（例えば、インターネットプロトコル（「ＩＰ」）データグラムとＩＰデータグラムを利用する他の高レイヤプロトコル、Transmission Control Protocol（「ＴＣＰ」）、Hypertext Transfer Protocol（「ＨＴＴＰ」）、Simple Mail Transfer Protocol（「ＳＭＴＰ」）等の）ネットワーク上でメッセージ関連データを交換することができる。
【００３２】
一般に、メッセージプロデューサ１０５はメッセージ（例えば、メッセージ１６４）をメッセージログ１０２に送信する。メッセージはデュラブルリソース１０６からのリソースに基づいている。メッセージログ１０２は、（なり得るメッセージコンシューマに関する認識を本質的になくとも）メッセージを記憶するように、例えば、ｐｕｂ／ｓｕｂにおいてキュー若しくはパブリッシャとして機能する等所望のメッセージ動作を実行する。適切であるときに、メッセージ（例えば、メッセージ１６４）は、ネットワーク上のメッセージログ１０２からカーソル１０３へ送信される。そして、カーソル１０３は、例えば、待機メッセージを受信し又はｐｕｂ／ｓｕｂ環境においてサブスクライバとして機能する等の所望のメッセージング動作を実行する、そして、カーソル１０３はメッセージ（例えば、メッセージ１６４）をメッセージコンシューマ１０７に送信する。そのメッセージコンシューマ１０７は、デュラブルリソースマネージャ１０８にメッセージを記憶し、又はメッセージ内容を用いて他の動作を実行し得る。カーソル１０３は、メッセージシーケンスにおいて、メッセージコンシューマ又はメッセージコンシューマのグループの進行を記憶することができる。
【００３３】
メッセージログ１０２及びカーソル１０３は各々、起動可能であり且つ解除可能である要素を含む。かかる要素は、所望のメッセージアシュアランス若しくはそれらの一部を構成するように、種々の異なる組合せにおいて起動され且つ解除され得る。例えば、メッセージログ要素１５２は、トランザクションバッファ１２１、読取りキャッシュ１２３、デュアラブルストア１２２、タイムウィンドウマネージャ１２４、及び承認要素１２６を含む。一般に、メッセージログ要素１５２は、拡張可能な一連のキャプチャプロトコルのうちいずれかを構成するように起動され且つ解除され得る。各キャプチャプロトコルは、異なるキャプチャアシュアランスを提供するように設定され得る。例えば、キャプチャプロトコルはデュアラブルストア１２２の使用によって異なり、トランザクションコーディネータ１１１を含むトランザクションへの参加によって異なり、異なるキャプチャアシュアランスを提供する。
【００３４】
トランザクションバッファ１２１は、起動されると、処理中のトランザクションに対するメッセージの追跡を維持する。トランザクションバッファ１２１は、揮発性リソースマネージャとしてトランザクションに参加し得る。任意で、準備中にデュラブルリソースマネージャとして参加する（‘‘ＥＤＰＲ’’）。メッセージプロデューサがコミットを開始するときに、トランザクションバッファは、準備通知を受信する。そして、トランザクションバッファ１２１は、（起動されると）トランザクションにおいてデュアラブルストア１２２に参加し、メッセージを保存し得る。トランザクションバッファ１２１がコミットされたことを受信すると、トランザクションバッファ１２１は読取りキャッシュ１２３にメッセージを移動させる。したがって、メッセージは、デュアラブルストアから読み返す必要を要することなく、短期間ベースで利用可能であり得る。
【００３５】
同様に、カーソル要素１５３はトランザクション要素１３１、承認要素１３２、及びデュアラブルストア要素１３３を含む。一般に、カーソル要素１５３は、拡張可能な一連の配信プロトコルのうちいずれかを構成するように起動され且つ解除され得る。各配信プロトコルは、異なる配信アシュアランスを提供するように設定され得る。例えば、配信プロトコルは、トランザクション要素１３１及びデュアラブルステイト要素１３３の使用によって異なり、異なる配信アシュアランスを提供し得る。起動されると、トランザクション要素１３１及びデュアラブルステイト要素１３３は、トランザクションバッファ１２１及びデュアラブルストア１２２と同様に、それぞれ機能して、メッセージを（複数の）メッセージコンシューマ１０７に配信し得る。
【００３６】
さらに、種々のメッセージログ要素１５２及びカーソル要素１５３は、拡張可能な一連の転送プロトコルのうちいずれかを構成するように起動され且つ解除され得る。各転送プロトコルは、異なる転送アシュアランスを提供するように、設定され得る。例えば、転送プロトコルは、承認要素１２６、１３２及びタイムウィンドウマネージャ１２４の使用によって異なり、異なる転送アシュアランスを提供し得る。
【００３７】
例えば、タイムウィンドウマネージャ１２４は、起動されると、デュアラブルストア１２２がメッセージの所定ウィンドウを（例えば、１日）維持する。承認要素１２６と１３２はインターオペレイトして、カーソル１０３からメッセージログ１０２にメッセージの承認を提供する。例えば、メッセージ又はメッセージの範囲がカーソル１０３において受信されていると、承認要素１３３は、承認要素１２６に対するメッセージ又はメッセージの範囲の受信を承認し得る。承認を受信する際に、適切なメッセージがメッセージログ１０２から破棄され得る。起動されると、このインターオペレイトによって、デュアラブルストア１２２は、承認されるまで、メッセージを保持する。したがって、サブスクリプションがいったん作成されるとコンシューマがすべてのメッセージを見失いそうにないというアシュアランスが存在する。
【００３８】
一般に、アシュアランス設定マネージャ１０４は、コマンドをメッセージログ１０２及びカーソル１０３に送信して、メッセージログ要素１５２及びカーソル要素１５３の適切の要素を起動し且つ解除する。適切なメッセージログ要素１５２及びカーソル要素１５３の起動及び解除は、所望のキャプチャ、転送、及び配信プロトコルの構成を生じせしめる。そして、所望のキャプチャ、転送、及び配信プロトコルはインターオペレイトして、所望のエンドツーエンドメッセージアシュアランスを提供する。
【００３９】
いくつかの実施形態においては、アシュアランス設定マネージャ１０４は、（例えば、システムの若しくは他の低レベルの）ランタイム設定データ１０９を受信する。ランタイム設定データ１０９は、所望のエンドツーエンドメッセージアシュアランスをコンピュータアーキテクチャにおいてメッセージの転送に提供し得るキャプチャアシュアランス、転送アシュアランス、及び配信アシュアランスの組合せを示す。
【００４０】
ランタイム設定データ１０９から、アシュアランス設定マネージャ１０４は、メッセージログ要素設定を構築し得る。メッセージログ要素設定は、適切なメッセージログ要素を起動し且つ解除して、キャプチャアシュアランスと転送アシュアランスの第１の部分とを構成するためのものである。例えば、メッセージログ要素設定１６２は、トランザクションバッファ１２１、デュアラブルストア１２２、タイムウィンドウマネージャ１２５、及び承認要素１２６を起動し且つ解除して、キャプチャアシュアランス及びカーソル要素１５３とインターオペレイトし得る転送アシュアランスの第１の部分を構成するためのものである。
【００４１】
ランタイム設定データ１０９から、アシュアランス設定マネージャ１０４は、カーソル要素設定を構築し得る。カーソル要素設定は、適切なカーソル要素を起動し且つ解除して、配信アシュアランスと転送アシュアランスの第２の部分を構成するためのものである。例えば、カーソル要素設定１６３は、トランザクション要素１３１、デュアラブルステイト要素１３３、及び承認要素１３２を起動し且つ解除して、前記配信アシュアランス及びメッセージログ要素１５２とインターオペレイトし得る前記転送アシュアランスの前記第２の部分を構成するためのものである。
【００４２】
アシュアランス設定マネージャ１０４は、前記メッセージログ及びカーソルにおいて前記キャプチャアシュアランス、前記転送アシュアランス、及び前記配信アシュアランスを構成し、所望のエンドツーエンドメッセージアシュアランスを実装するようにコンピュータアーキテクチャ１００の要素に対して命令する。アシュアランス設定マネージャ１０４は、メッセージログ要素構成１６２をメッセージログ１０２に送信して、キャプチャアシュアランスと転送アシュアランスの第１部分を構成するようにメッセージログ１０２に命令し得る。同様に、アシュアランス設定マネージャ１０４は、カーソル要素設定１６３をカーソル１０３に送信して、前記配信アシュアランスと前記転送アシュアランスの前記第２の部分を構成するようにカーソル１０３に命令する。
【００４３】
先に説明したように、メッセージログ要素及びカーソル要素は、所望のエンドツーエンドメッセージアシュアランスを提供するように、起動され且つ解除される。いくつかの実施形態においては、各要素は、個別に起動可能であり、解除可能である。例えば、各要素は起動制御と解除制御とを含み得る。例えば、メッセージログ１０２において、トランザクションバッファ１２１は起動制御１２１Ａと解除制御１２１Ｄとを含み、デュアラブルストア１２２は起動制御１２２Ａと解除制御１２２Ｄとを含み、タイムウィンドウマネージャは起動制御１２４Ａと解除制御１２４Ｄとを含み、そして、承認要素１２６は起動制御１２６Ａと解除制御１２６Ｄとを含む。同様に、カーソル１０３において、トランザクション要素１３１は起動制御１３１Ａと解除制御１３１Ｄとを含み、デュアラブルステイト要素１３３は起動制御１３３Ａと解除制御１３３Ｄとを含み、そして、承認要素１３２は起動制御１３２Ａと解除制御１３２Ｄとを含む。個別に起動可能であり且つ解除可能な要素は高度の細分性を提供する。この細分性は、広範囲な種々の異なる一連のメッセージキャプチャアシュアランス、メッセージ転送アシュアランス、及びメッセージ配信アシュアランスの設定を容易にせしめる。
【００４４】
そういうものとして、メッセージログ要素設定１６２は、メッセージログ要素１０２を個別に起動し解除する命令を含み得る。同様に、カーソル要素設定１６３は、カーソル要素１０３を個別に起動し解除する命令を含み得る。組合せにおいて、メッセージログ要素設定１６２及びカーソル要素設定１６３は、所望のエンドツーエンドメッセージアシュアランスを提供するようにメッセージログ１０２及びカーソル１０３に命令する。
【００４５】
図２は、分散メッセージシステムに対して設定可能となるように構成され得るアシュアランスの種々のマトリクス２００を示している。マトリクス２００を、図１Ａのコンピュータアーキテクチャ１００の要素を参照して説明する。
【００４６】
キャプチャアシュアランスマトリクス２０１は、種々の異なるキャプチャアシュアランスのプロパティの実施例を表している。メッセージストア１０２はメッセージプロデューサ１０５からのメッセージをキャプチャするのに使用し得る。キャプチャアシュアランスマトリクス２０１内において、各キャプチャアシュアランスはキャプチャアシュアランスが利用し若しくは利用しないアシュアランスのプロパティを示す。各キャプチャアシュアランスは、異なる組み合わせのメッセージログ要素１５２を起動し且つ解除することを介して実装され得る。
【００４７】
例えば、キャプチャアシュアランス２１１は、デュアラブルストアもトランザクションも利用していない。したがって、メッセージを送信することは、トランザクションについて考慮していないし、トランザクションのコミット／アボート状態であるにも関わらず、コンシューマはメッセージを見ることができる。さらに、クラッシュ又は停電が生ずると、メッセージが消失される。コンピュータアーキテクチャ１００内において、キャプチャアシュアランス２１１は、デュアラブルストア１２２を解除し且つトランザクションバッファ１２１を解除することによって、実装され得る。
【００４８】
キャプチャアシュアランス２２１は、デュアラブルストアを利用していないものの、トランザクションを利用している。したがって、コンシューマは、（例えば、トランザクションコーディネータ１１１によって調整された）コミットされたトランザクションに対するメッセージを見る。しかしながら、クラッシュ又は停電が生ずると、メッセージが消失される。コンピュータアーキテクチャ１００内において、キャプチャアシュアランス２２１は、デュアラブルストア１２２を解除し且つトランザクションバッファ１２１を起動させることによって、実装され得る。
【００４９】
キャプチャアシュアランス２３１は、デュアラブルストアを利用しているものの、トランザクションは利用していない。したがって、メッセージを送信することは、トランザクションについて考慮していないし、トランザクションのコミット／アボート状態であるにも関わらず、コンシューマはメッセージを見ることができる。しかしながら、クラッシュ又は停電が生ずると、メッセージが消失しないように、メッセージは永久的に（例えば、ディスクに）記憶される。コンピュータアーキテクチャ１００内において、キャプチャアシュアランス２３１は、デュアラブルストア１２２を起動し且つトランザクションバッファ１２１を解除することによって、実装され得る。
【００５０】
キャプチャアシュアランス２４１は、デュアラブルストア及びトランザクションを利用する。したがって、コンシューマは、コミットされたトランザクションに対するメッセージを見るし、クラッシュ又は停電の場合においてメッセージは消失されない。コンピュータアーキテクチャ１００内において、キャプチャアシュアランス２４１は、デュアラブルストア１２２を起動し且つトランザクションバッファ１２１を起動することによって、実装され得る。
【００５１】
転送シュアランスマトリクス２０２は、メッセージストア１０２からカーソル１０３へとメッセージを転送するのに使用され得る種々の異なる転送アシュアランスのプロパティの実施例を表している。転送アシュアランスマトリクス２０２内において、各転送アシュアランスは転送アシュアランスが利用し若しくは利用しないアシュアランスのプロパティを示す。各転送アシュアランスは、異なる組み合わせのメッセージログ要素１５２及びカーソル要素１５３を起動し且つ解除することを介して実装され得る。
【００５２】
例えば、転送アシュアランス２１２は、承認された配信又はタイムウィンドウを利用しない。転送アシュアランス２１２は本質的にはベストエフォート配信を表している。コンピュータアーキテクチャ１００内において、転送アシュアランス２１２は、タイムウィンドウマネージャ１２４を解除し且つ承認要素１２６と１３２を解除することによって実装され得る。
【００５３】
転送アシュアランス２２２は、承認された配信を利用するものの、タイムウィンドウを利用しない。転送アシュアランス２２２は、承認されるまでメッセージを（おそらく永久に）保持する。転送アシュアランス２２２は、サブスクリプションがいったん作成されるとコンシューマがメッセージを見失いそうにないというアシュアランスを提供する。しかしながら、タイムウィンドウは全く利用されないので、サブスクリプションは、古いメッセージを取得することができない。コンピュータアーキテクチャ１００内において、転送アシュアランス２２２は、タイムウィンドウマネージャ１２４を解除し且つ承認要素１２６と１３２を起動することによって実装され得る。
【００５４】
転送アシュアランス２３２は、承認された配信を利用しないものの、タイムウィンドウを利用する。転送アシュアランス２３２は、メッセージの所定ウィンドウを（例えば、１日）保持するよう保証する。したがって、既存の加入者は、オンライン‐ウィンドウに後れをとるまで、メッセージを見逃しそうにはない。新規加入者には、所定の範囲の過去のメッセージを受信する実質的な見込みがある。コンピュータアーキテクチャ１００内において、転送アシュアランス２３２は、タイムウィンドウマネージャ１２４を起動し且つ承認要素１２６及び１３２を解除することによって実装され得る。
【００５５】
転送アシュアランス２４２は、承認された配信を利用し、タイムウィンドウを利用している。転送アシュアランス２４２は本質的には転送アシュアランス２２２と転送アシュアランス２３２の論理ＡＮＤである。したがって、既存の加入者はメッセージを見逃しそうにはなく、新規加入者には、所定の範囲の過去のメッセージを受信する実質的な見込みがある。コンピュータアーキテクチャ１００内において、転送アシュアランス２４２は、タイムウィンドウマネージャ１２４を起動し且つ承認要素１２６及び１３２を起動することによって実装され得る。
【００５６】
保存方針に依存して、割当量に達しているときに、メッセージログ１０２は異なる動作をすることができる。例えば、転送アシュアランス２１２を利用するとき、割当量に達しているときに、メッセージログ１０２は単にメッセージをドロップし得る。メッセージがドロップされると、メッセージログ１０２はメッセージプロデューサ１０５にエラーメッセージを送信しない。そういうものとして、メッセージプロデューサ１０５は、遅延が生じるばあい、ほとんど動作しない。
【００５７】
転送アシュアランス２２２、２３２、又は２４２を利用するとき、メッセージログ１０２は、プロデューサに対する送信の応答を遅延させて、コンシューマがメッセージをドレーニングする更なる時間を与えることができる。したがって、メッセージログ１０２は、タイムアウトとメッセージ再試行を避けるためにある程度補償し得る。しかしながら、メッセージログ１０２は、メッセージプロデューサがエラーを受信して、場合によってはリトライすることを生じせしめるタイムアウトに最終的に達し得る。
【００５８】
配信アシュアランスマトリクス２０３は、メッセージをカーソル１０３から（複数の）メッセージコンシューマ１０７へと転送するのに使用され得る種々の異なる配信アシュアランスのプロパティの実施例を表している。配信アシュアランスマトリックス２０３内において、各転送アシュアランスは転送アシュアランスが利用し若しくは利用しないアシュアランスプロパティを示している。各転送シュアランスは、異なる組み合わせのカーソル要素１５３を起動し且つ解除することを介して実装され得る。
【００５９】
例えば、配信アシュアランス２１３は、デュアラブルステイトもトランザクションをも利用していない。配信アシュアランス２１３は、パブリッシュ／サブスクライブ機能を本質的には表している。コンピュータアーキテクチャ１００内において、配信アシュアランス２１３は、デュアラブルステイト要素１３３及びトランザクション要素１３１を解除することによって、実装され得る。
【００６０】
配信アシュアランス２２３は、デュアラブルステイトを利用しているものの、トランザクションは利用していない。したがって、コンシューマは、ごく小さな変化を実施する機構として揮発性トランザクションを使用している。カーソル１０３は、（例えば、トランザクションコーディネータ１１２によって調整された）トランザクションに参加し、１回限定配信をコミットされた状態に提供する。コンピュータアーキテクチャ１００内において、配信アシュアランス２２３は、デュアラブルステイト要素１３３を解除し且つトランザクション要素１３１を起動することによって、実装され得る。
【００６１】
配信アシュアランス２３３は、デュアラブルステイトを利用しているものの、トランザクションは利用していない。したがって、カーソル１０３は永続的であるものの、（複数の）メッセージコンシューマ１０７はトランザクションを使用しない。提供されたアシュアランスのプロパティはデュアラブルステイト要素１３３と（複数の）メッセージコンシューマ１０７との間で実装された用途パターン（プロトコル）に依存し得る。例えば、第１の用途パターンは、メッセージをロック（して、他のコンシューマがメッセージにアクセスするのを防止）するロッキングプロトコルと、配信が完了した旨をカーソルに知らせる承認プロトコルとを使用することを含む。第１の用途パターンにおいて、コンシューマ（１０７）は、メッセージを受信すると直ちに且つそれを処理する前に、承認プロトコルを利用する。次に、メッセージ承認動作の後に、第１の用途パターンは、メッセージに基づいた作業を行うことを含む。第１の用途パターンを使用する（複数の）メッセージコンシューマ１０７は、最大１回メッセージ配信を提供される。
【００６２】
第２の用途パターンは、メッセージをロックするロッキングプロトコルと、配信が完了した旨をカーソルに知らせる承認プロトコルとを使用することを含む。第２の用途パターンにおいて、コンシューマ（１０７）は、メッセージに基づいた動作をした後に、自身がメッセージを受信したことをカーソルに知らせる承認プロトコルを使用することを含む。第２の用途パターンを使用する（複数の）メッセージコンシューマ１０７は、最小１回メッセージ配信を提供される。
【００６３】
コンピュータアーキテクチャ１００内において、配信アシュアランス２３３は、デュアラブルステイト要素１３３を起動し且つトランザクション要素１３１を解除することによって、実装され得る。（先に説明した第１及び第２の用途パターンを含む）異なる用途パターンは、配信アシュアランス２３３に異なるプロパティを提供し得る。かかる異なるプロパティとは、例えば、最大１回メッセージ配信及び最小１回メッセージ配信等である。とにかく、配信アシュアランス２３３は、デュラブルメッセージステートを提供し、クラッシュ又は停電からの回復が起こり得る。
【００６４】
配信アシュアランス２４３は、デュアラブルステイト及びトランザクションを利用している。従って、配信アシュアランス２４３は、（複数の）メッセージコンシューマ１０７にデュアラブル１回限定配信を提供する。コンピュータアーキテクチャ１００内において、配信アシュアランス２４３は、デュアラブルステイト要素１３３を起動し且つトランザクション要素１３１を起動することによって、実装され得る。
【００６５】
先に説明したように、種々のアシュアランスが、（例えば、低レベルの）ランタイム設定データによって表され得る。可能であるものの、ランタイム設定データはエンドユーザの意志を必ずしも表していない。多くのエンドユーザが異なるアシュアランスに関して十分な理解を欠いているので、高レベルモデルは、非効率（例えば、無駄なリソース）及びアシュアランスの不適当な組み合わせからの保護を提供し得る。例えば、高レベルモデルはデュラブルトランザクションキャプチャを提供するキャプチャアシュアランスと、ベストエフォートである転送アシュアランスの組合せを防止することができる。高レベルモデルは、アシュアランスの適切な組合せを選択して、エンドツーエンドアシュアランスを提供するランタイム設定データを利用し得る。
【００６６】
図３は、分配メッセージシステム内のメッセージアシュアランスを設定する例示的方法３００のフローチャートを示している。マトリクス３００を、図１Ａのコンピュータアーキテクチャ１００に示した要素及びデータを参照して説明する。
【００６７】
方法３００は、ランタイム設定データを受信する動作（動作３０１）を含む。そのランタイム設定データは、分散メッセージシステムにおけるメッセージの転送に対する所望のエンドツーエンドメッセージアシュアランスを提供し得るキャプチャアシュアランス、転送アシュアランス、及び配信アシュアランスの組合せを示す。例えば、アシュアランス設定マネージャ１０４はランタイム設定データ１０９を受信し得る。ランタイム設定データ１０９は、コンピュータアーキテクチャ１００におけるメッセージの転送に対して所望のエンドツーエンドメッセージアシュアランスを提供し得るキャプチャアシュアランス、転送アシュアランス、及び配信アシュアランスを示し得る。
【００６８】
方法３００はランタイム設定データからメッセージログ要素設定を構築する動作を含む（動作３０２）。メッセージログ要素設定は、適切なメッセージログ要素を起動し且つ解除して、キャプチャアシュアランスを構成し且つ転送アシュアランスの第１の部分を構成して、カーソル要素によって提供された転送アシュアランスの対応する第２の部分とインターオペレイトする。例えば、アシュアランス設定マネージャ１０４は、メッセージログ要素設定１６２を構築し得る。メッセージログ要素設定１６２は、適切なメッセージログ要素１５２を起動し且つ解除して、キャプチャアシュアランスを構成する命令を含み得る。メッセージログ要素設定１６２は、適切なメッセージログ要素１５２を起動し且つ解除して、転送アシュアランスの第１の部分を構成して、カーソル要素１０３によって提供された転送アシュアランスの対応する第２の部分とインターオペレイトする命令を含み得る。
【００６９】
方法３００は、ランタイム設定データからカーソル要素設定を構築する動作（動作３０３）を含む。カーソル要素設定は、適切なカーソル要素を起動し且つ解除して、配信アシュアランスを構成し且つ転送アシュアランスの対応する第２の部分を構成して、メッセージログ要素によって提供された転送アシュアランスの第１の部分とインターオペレイトする。例えば、アシュアランス設定マネージャ１０４はカーソル要素設定１６３を構築し得る。カーソル要素設定１６３は、適切なカーソル要素１５３を起動し且つ解除して、配信アシュアランスを構成せしめる命令を含み得る。カーソル要素設定１６３は、適切なカーソル要素１５３を起動し且つ解除して、転送アシュアランスの第２の部分を構成して、メッセージログ要素１０２によって提供された転送アシュアランスの第１の部分とインターオペレイトせしめる命令をも含み得る。
【００７０】
方法３００は、前記メッセージログ及びカーソルにおいて前記キャプチャアシュアランス、前記転送アシュアランス、及び前記配信アシュアランスを構成して、前記所望のエンドツーエンドメッセージアシュアランスを前記分散メッセージシステムに対して提供するように、分散メッセージシステムに命令する動作（動作３０４）を含む。例えば、アシュアランス設定マネージャは、前記メッセージログ及びカーソルにおいて前記キャプチャアシュアランス、前記転送アシュアランス、及び前記配信アシュアランスを構成して、前記所望のエンドツーエンドメッセージアシュアランスをコンピュータアーキテクチャ１００に対して提供するようにコンピュータアーキテクチャ１００に命令し得る。
【００７１】
動作３０４は、メッセージログ要素設定をメッセージログに送信して、キャプチャアシュアランスと転送アシュアランスの前記第１の部分とを構成するようにメッセージログに命令する動作（動作３０５）を含み得る。例えば、アシュアランス設定マネージャ１０４は、メッセージログ要素設定１６２をメッセージログ１０２に送信して、コンピュータアーキテクチャ１００に対して前記キャプチャアシュアランスと転送アシュアランスの前記第１の部分とを構成するようにメッセージログ１０２に命令をする。動作３０４は、カーソル要素設定をカーソルに送信して、前記配信アシュアランスと前記転送アシュアランスの前記第２の部分とを構成するようにカーソルに命令する動作（動作３０６）を含み得る。例えば、アシュアランス設定マネージャ１０４は、カーソル要素設定１６３をカーソル１０３に送信して、コンピュータアーキテクチャ１００に対して前記配信アシュアランスと前記転送アシュアランスの前記第２の部分とを構成するようにカーソル１０３に命令し得る。
【００７２】
メッセージログ１０２とカーソル１０３は、メッセージログ要素設定１６２とカーソル要素設定１６３に関する命令をそれぞれ実装し得る。命令から、メッセージログ１０２及びカーソル１０３は、適切なメッセージログ要素１５２とカーソル要素１５３とをそれぞれ起動し且つ解除して、キャプチャアシュアランス、転送アシュアランス、及び配信アシュアランスを構成せしめ得る。それとともに、キャプチャアシュアランス、転送アシュアランス、及び配信アシュアランスは、所望のエンドツーエンドメッセージアシュアランスをコンピュータアーキテクチャ１００に対して提供する。
【００７３】
図１Ｂ参照すると、図１Ｂは、デュラブル１回限定エンドツーエンドメッセージ転送アシュアランスを提供するように構成されたコンピュータアーキテクチャ１００を示している。図ＩＢに示されたアシュアランスは、コンピュータアーキテクチャ１００内で方法３００を適用することに起因し得る。図示されているように、メッセージログ１０２はキャプチャアシュアランス２４１を構成して、メッセージプロデューサ１０５からのデュラブルトランザクションベースのメッセージキャプチャを提供する。メッセージログ１０２とカーソル１０３は、転送アシュアランス２４２を構成するようにインターオペレイトして、タイムウィンドウの保持及びメッセージログ１０２とカーソル１０３と間のメッセージ承認転送を提供する。カーソル１０３は配信アシュアランス２４３を構成して、（複数の）メッセージコンシューマ１０７にデュアラブルトランザクションベースのメッセージ配信を提供する。キャプチャアシュアランス２４１、転送アシュアランス２４２、及び配信アシュアランス２４３の構成は、ともに、デュラブル１回限定エンドツーエンドアシュアランス１７４を提供する。
【００７４】
そういうものとして、メッセージプロデューサ１０５からのメッセージ（例えば、メッセージ１６４）が、システムクラッシュ及び／又は停電の場合でさえメッセージコンシューマ１０７において一度だけ受信されるように本質的に保証される。
【００７５】
従って、本発明の実施形態は、起動可能であり且つ解除可能である定義された一連のメッセージ要素を使用して、種々の異なるメッセージアシュアランスの設定を容易にせしめる。よって、本発明の実施形態は、キューをシミュレートし且つ種々の異なるメッセージアシュアランスのうちいずれかを有するメッセージシステムをパブリッシュ／サブスクライブするように実装され得る。定義された一連の要素が使用されるので、メッセージシステム内においてアシュアランスを設定し且つアシュアランスの設定を変更することは、非常に効率的である。
【００７６】
このように、本発明の実施形態によって、事業主は、コストに対して、種々のメッセージアシュアランスに対する需要のバランスをとることが可能となり、かかるメッセージアシュアランスを提供する。例えば、コンシューマが全てのメッセージ（例えば、ストリーミングメディア）を受信することを、ビジネスルールが必要としないときには、ベストエフォート配信又は最大１回配信を使用することによって、リソースが節約され得る。さらに、企業のビジネスルールが変化するとき、メッセージシステムは、新規ビジネスルールに従うように容易に移行され得る。例えば、リソースを節約するために、メッセージシステムは、いくつかの他のタイプの配信アシュアランスからベストエフォートに移行され得る。他方では、ビジネスルールが、収入モデルに移行する場合、コンシューマ（例えば、有料入場者）が少なくとも一度だけメッセージを得ることを保障するように、アシュアランスがこれに応じて移行され得る。
【００７７】
本発明は、本発明の趣旨若しくは本質的な特性から逸脱することなく、他の特定の形態において具現化され得る。上述した実施形態は、すべての点において単なる実例として考慮されるべきであり、限定するものではないと考慮すべきである。したがって、本発明の範囲は、先に説明した説明というよりはむしろ、添付した特許請求の範囲によって示されている。特許請求の範囲の均等な意味及び範囲に含まれるすべての変更が、特許請求の範囲の範囲内に包含されるべきである。
【図１Ａ】
0005473930.tif 000002
【図１Ｂ】
0005473930.tif 000003
【図２】
0005473930.tif 000004
【図３】
0005473930.tif 000005