(57)【要約】【課題】  高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのための方法、装置、およびプログラムを提供することにある。【解決手段】  この方法は、ストリーム管理サーバにより、アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのアクティブ・メッセージ・ストリームの確立を仲介するステップであって、アクティブ・メッセージ・ストリームがアクティブ・アプリケーション・メッセージを伝達することができるステップと、そのサーバにより、バックアップ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのバックアップ・メッセージ・ストリームの確立を仲介するステップであって、バックアップ・メッセージ・ストリームがアクティブ・メッセージの重複を表すバックアップ・アプリケーション・メッセージを伝達することができるステップと、サブスクライビング・クライアント・デバイスのメッセージング・ミドルウェアでアクティブ・メッセージを受信するステップと、フェイルオーバに応答して、メッセージング・ミドルウェアでバックアップ・メッセージを受信するステップと、アクティブ・ストリーム・ソースＩＤと、アクティブ・ストリーム・ソース・シーケンス番号と、バックアップ・ストリーム・ソースＩＤと、バックアップ・ストリーム・ソース・シーケンス番号とに依存して、メッセージング・ミドルウェアにより、バックアップ・メッセージを管理するステップとを含む。【選択図】  図２
2009542140.tif 000002
【特許請求の範囲】
【請求項１】
高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのための方法であって、
ストリーム管理サーバにより、アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのアクティブ・メッセージ・ストリームの確立を仲介するステップであって、前記アクティブ・メッセージ・ストリームがアクティブ・アプリケーション・メッセージを伝達することができ、各アクティブ・アプリケーション・メッセージがアクティブ・ソース・ストリームＩＤと、アクティブ・ソース・ストリーム・シーケンス番号と、アクティブ・メッセージ・シーケンス番号とによって特徴付けられるステップと、
前記ストリーム管理サーバにより、バックアップ・フィード・アダプタから前記サブスクライビング・クライアント・デバイスへのバックアップ・メッセージ・ストリームの確立を仲介するステップであって、前記バックアップ・メッセージ・ストリームが前記アクティブ・アプリケーション・メッセージの重複を表すバックアップ・アプリケーション・メッセージを伝達することができ、各バックアップ・アプリケーション・メッセージがバックアップ・ソース・ストリームＩＤと、バックアップ・ソース・ストリーム・シーケンス番号と、バックアップ・メッセージ・シーケンス番号とによって特徴付けられるステップと、
前記サブスクライビング・クライアント・デバイスのメッセージング・ミドルウェアで前記アクティブ・フィード・アダプタから前記アクティブ・アプリケーション・メッセージを受信するステップと、
前記アクティブ・フィード・アダプタから前記バックアップ・フィード・アダプタへのフェイルオーバに応答して、前記サブスクライビング・クライアント・デバイスの前記メッセージング・ミドルウェアで前記バックアップ・フィード・アダプタから前記バックアップ・アプリケーション・メッセージを受信するステップと、
前記アクティブ・ストリーム・ソースＩＤと、前記アクティブ・ストリーム・ソース・シーケンス番号と、前記バックアップ・ストリーム・ソースＩＤと、前記バックアップ・ストリーム・ソース・シーケンス番号とに依存して、前記サブスクライビング・クライアント・デバイスの前記メッセージング・ミドルウェアにより、前記バックアップ・アプリケーション・メッセージを管理するステップと、
を含む、方法。
【請求項２】
前記バックアップ・アプリケーション・メッセージのうちの少なくともいくつかが、前記サブスクライビング・クライアント・デバイスの前記メッセージング・ミドルウェアで前に受信されたアクティブ・アプリケーション・メッセージの重複を表す、請求項１に記載の方法。
【請求項３】
前記高速短待ち時間データ通信環境が高速短待ち時間データ通信ネットワークを含み、前記ネットワークが、前記アクティブ・フィード・アダプタと、前記バックアップ・フィード・アダプタと、前記ストリーム管理サーバと、少なくとも１つのサブスクライビング・クライアント・デバイスとをさらに含み、ルータをまったく含まない、請求項１または２に記載の方法。
【請求項４】
各フィード・アダプタが、第１のフォーマットを有するフィード・アダプタ・ソース・ストリーム上のメッセージを第２のフォーマットを有するフィード・アダプタ出力ストリーム上のメッセージに変換し、前記フィード・アダプタ出力ストリーム上の前記メッセージをサブスクライビング・クライアント・デバイスに送信する機能を有するデバイスを含む、請求項１、２，または３に記載の方法。
【請求項５】
前記アクティブ・フィード・アダプタで複数のフィード・アダプタ・ソース・ストリーム上のアクティブ・ソース・ストリーム・メッセージを受信するステップであって、各フィード・アダプタ・ソース・ストリームがアクティブ・ソース・ストリームＩＤによって前記アクティブ・フィード・アダプタ内で識別され、各アクティブ・ソース・ストリーム・メッセージが、前記アクティブ・ソース・ストリーム・メッセージが受信された前記フィード・アダプタ・ソース・ストリーム用のアクティブ・ソース・ストリーム・シーケンス番号によって特徴付けられるステップと、
前記アクティブ・フィード・アダプタにより、各アクティブ・ソース・ストリーム・メッセージをアクティブ・アプリケーション・メッセージに変換するステップであって、各アクティブ・ソース・ストリーム・メッセージの内容に前記アクティブ・フィード・アダプタ内で前記アクティブ・ソース・ストリーム・メッセージが受信された前記フィード・アダプタ・ソース・ストリーム用の前記アクティブ・ソース・ストリームＩＤとアクティブ・メッセージ・シーケンス番号とを追加することを含むステップと、
をさらに含む、請求項１、２、３、または４に記載の方法。
【請求項６】
前記バックアップ・フィード・アダプタで複数のフィード・アダプタ・ソース・ストリーム上のバックアップ・ソース・ストリーム・メッセージを受信するステップであって、各フィード・アダプタ・ソース・ストリームがバックアップ・ソース・ストリームＩＤによって前記バックアップ・フィード・アダプタ内で識別され、各バックアップ・ソース・ストリーム・メッセージが、前記バックアップ・ソース・ストリーム・メッセージが受信された前記フィード・アダプタ・ソース・ストリーム用のバックアップ・ソース・ストリーム・シーケンス番号によって特徴付けられるステップと、
前記バックアップ・フィード・アダプタにより、各バックアップ・ソース・ストリーム・メッセージをバックアップ・アプリケーション・メッセージに変換するステップであって、各バックアップ・ソース・ストリーム・メッセージの内容に前記バックアップ・フィード・アダプタ内で前記バックアップ・ソース・ストリーム・メッセージが受信された前記フィード・アダプタ・ソース・ストリーム用の前記バックアップ・ソース・ストリームＩＤとバックアップ・メッセージ・シーケンス番号とを追加することを含むステップと、
をさらに含む、請求項１ないし５のいずれかに記載の方法。
【請求項７】
前記アクティブ・フィード・アダプタでフィード・アダプタ・ソース・ストリーム上の管理ソース・ストリーム・メッセージを受信するステップと、
前記アクティブ・フィード・アダプタにより、前記管理ソース・ストリーム・メッセージを管理アプリケーション・メッセージに変換するステップであって、前記アクティブ・フィード・アダプタが前記サブスクライビング・クライアント・デバイスに前記管理アプリケーション・メッセージを送信するときに送信シーケンス内のポイントを指定するアクティブ・メッセージ・シーケンス番号を識別することを含むステップと、
前記アクティブ・フィード・アダプタにより、前記管理アプリケーション・メッセージと前記識別されたアクティブ・メッセージ・シーケンス番号とを前記バックアップ・フィード・アダプタに送信するステップと、
前記アクティブ・フィード・アダプタにより、前記アクティブ・メッセージ・シーケンス番号によって識別された前記送信シーケンス内の前記ポイントで前記アクティブ・メッセージ・ストリーム上の前記管理アプリケーション・メッセージを前記サブスクライビング・クライアント・デバイスに送信するステップと、
をさらに含む、請求項１ないし６のいずれかに記載の方法。
【請求項８】
管理アプリケーション・メッセージと、前記アクティブ・フィード・アダプタが前記サブスクライビング・クライアント・デバイスに前記管理アプリケーション・メッセージを送信するときに送信シーケンス内のポイントを指定するアクティブ・メッセージ・シーケンス番号とを前記アクティブ・フィード・アダプタから前記バックアップ・フィード・アダプタで受信するステップと、
前記バックアップ・フィード・アダプタにより、前記管理アプリケーション・メッセージを受信する前に前記バックアップ・フィード・アダプタ内で処理された最新バックアップ・アプリケーション・メッセージのバックアップ・メッセージ・シーケンス番号を識別するステップと、
前記バックアップ・フィード・アダプタにより、前記受信したアクティブ・メッセージ・シーケンス番号と、前記クライアント・デバイスに送信された前記最新メッセージの前記バックアップ・シーケンス番号と、所定の同期シーケンス番号しきい値とに依存して、前記バックアップ・フィード・アダプタが前記バックアップ・メッセージ・ストリーム上の前記サブスクライビング・クライアント・デバイスへの前記管理アプリケーション・メッセージの送信を同期させることができるかどうかを判断するステップと、
をさらに含む、請求項１ないし７のいずれかに記載の方法。
【請求項９】
前記バックアップ・フィード・アダプタが前記バックアップ・メッセージ・ストリーム上の前記サブスクライビング・クライアント・デバイスへの前記管理アプリケーション・メッセージの送信を同期させることができ、
前記バックアップ・フィード・アダプタにより、前記アクティブ・メッセージ・シーケンス番号の値と一致する値を有する前記管理アプリケーション・メッセージの内容にバックアップ・メッセージ・シーケンス番号を追加するステップと、
前記バックアップ・フィード・アダプタにより、他のバックアップ・アプリケーション・メッセージに続いて前記管理アプリケーション・メッセージを前記サブスクライビング・クライアント・デバイスに送信するステップと、
をさらに含む、請求項８に記載の方法。
【請求項１０】
前記バックアップ・フィード・アダプタが前記バックアップ・メッセージ・ストリーム上の前記サブスクライビング・クライアント・デバイスへの前記管理アプリケーション・メッセージの送信を同期させることができず、
前記バックアップ・フィード・アダプタにより、前記バックアップ・フィード・アダプタが前記サブスクライビング・クライアント・デバイスに前記バックアップ・アプリケーション・メッセージを送信する伝送速度を減速するステップと、
前記バックアップ・フィード・アダプタにより、前記サブスクライビング・クライアント・デバイスへの前記管理アプリケーション・メッセージの送信を同期させるために他のメッセージ・シーケンス番号について前記アクティブ・フィード・アダプタと折衝するステップと、
をさらに含む、請求項８に記載の方法。
【請求項１１】
高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのための装置であって、１つ以上のコンピュータ・プロセッサと、前記１つ以上のコンピュータ・プロセッサに動作可能に結合された１つ以上のコンピュータ・メモリとを含み、
ストリーム管理サーバにより、アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのアクティブ・メッセージ・ストリームの確立を仲介するステップであって、前記アクティブ・メッセージ・ストリームがアクティブ・アプリケーション・メッセージを伝達することができ、各アクティブ・アプリケーション・メッセージがアクティブ・ソース・ストリームＩＤと、アクティブ・ソース・ストリーム・シーケンス番号と、アクティブ・メッセージ・シーケンス番号とによって特徴付けられるステップと、
前記ストリーム管理サーバにより、バックアップ・フィード・アダプタから前記サブスクライビング・クライアント・デバイスへのバックアップ・メッセージ・ストリームの確立を仲介するステップであって、前記バックアップ・メッセージ・ストリームが前記アクティブ・アプリケーション・メッセージの重複を表すバックアップ・アプリケーション・メッセージを伝達することができ、各バックアップ・アプリケーション・メッセージがバックアップ・ソース・ストリームＩＤと、バックアップ・ソース・ストリーム・シーケンス番号と、バックアップ・メッセージ・シーケンス番号とによって特徴付けられるステップと、
前記サブスクライビング・クライアント・デバイスのメッセージング・ミドルウェアで前記アクティブ・フィード・アダプタから前記アクティブ・アプリケーション・メッセージを受信するステップと、
前記アクティブ・フィード・アダプタから前記バックアップ・フィード・アダプタへのフェイルオーバに応答して、前記サブスクライビング・クライアント・デバイスの前記メッセージング・ミドルウェアで前記バックアップ・フィード・アダプタから前記バックアップ・アプリケーション・メッセージを受信するステップと、
前記アクティブ・ストリーム・ソースＩＤと、前記アクティブ・ストリーム・ソース・シーケンス番号と、前記バックアップ・ストリーム・ソースＩＤと、前記バックアップ・ストリーム・ソース・シーケンス番号とに依存して、前記サブスクライビング・クライアント・デバイスの前記メッセージング・ミドルウェアにより、前記バックアップ・アプリケーション・メッセージを管理するステップと、
を実行できるコンピュータ・プログラム命令が前記コンピュータ・メモリ内に配置されている、装置。
【請求項１２】
前記バックアップ・アプリケーション・メッセージのうちの少なくともいくつかが、前記サブスクライビング・クライアント・デバイスの前記メッセージング・ミドルウェアで前に受信されたアクティブ・アプリケーション・メッセージの重複を表す、請求項１１に記載の装置。
【請求項１３】
前記高速短待ち時間データ通信環境が高速短待ち時間データ通信ネットワークを含み、前記ネットワークが、前記アクティブ・フィード・アダプタと、前記バックアップ・フィード・アダプタと、前記ストリーム管理サーバと、少なくとも１つのサブスクライビング・クライアント・デバイスとをさらに含み、ルータをまったく含まない、請求項１１または１２に記載の装置。
【請求項１４】
各フィード・アダプタが、第１のフォーマットを有するフィード・アダプタ・ソース・ストリーム上のメッセージを第２のフォーマットを有するフィード・アダプタ出力ストリーム上のメッセージに変換し、前記フィード・アダプタ出力ストリーム上の前記メッセージをサブスクライビング・クライアント・デバイスに送信する機能を有するデバイスを含む、請求項１１、１２，または１３に記載の装置。
【請求項１５】
前記アクティブ・フィード・アダプタで複数のフィード・アダプタ・ソース・ストリーム上のアクティブ・ソース・ストリーム・メッセージを受信するステップであって、各フィード・アダプタ・ソース・ストリームがアクティブ・ソース・ストリームＩＤによって前記アクティブ・フィード・アダプタ内で識別され、各アクティブ・ソース・ストリーム・メッセージが、前記アクティブ・ソース・ストリーム・メッセージが受信された前記フィード・アダプタ・ソース・ストリーム用のアクティブ・ソース・ストリーム・シーケンス番号によって特徴付けられるステップと、
前記アクティブ・フィード・アダプタにより、各アクティブ・ソース・ストリーム・メッセージをアクティブ・アプリケーション・メッセージに変換するステップであって、各アクティブ・ソース・ストリーム・メッセージの内容に前記アクティブ・フィード・アダプタ内で前記アクティブ・ソース・ストリーム・メッセージが受信された前記フィード・アダプタ・ソース・ストリーム用の前記アクティブ・ソース・ストリームＩＤとアクティブ・メッセージ・シーケンス番号とを追加することを含むステップと、
を実行できるコンピュータ・プログラム命令をさらに含む、請求項１１ないし１４のいずれかに記載の装置。
【請求項１６】
前記バックアップ・フィード・アダプタで複数のフィード・アダプタ・ソース・ストリーム上のバックアップ・ソース・ストリーム・メッセージを受信するステップであって、各フィード・アダプタ・ソース・ストリームがバックアップ・ソース・ストリームＩＤによって前記バックアップ・フィード・アダプタ内で識別され、各バックアップ・ソース・ストリーム・メッセージが、前記バックアップ・ソース・ストリーム・メッセージが受信された前記フィード・アダプタ・ソース・ストリーム用のバックアップ・ソース・ストリーム・シーケンス番号によって特徴付けられるステップと、
前記バックアップ・フィード・アダプタにより、各バックアップ・ソース・ストリーム・メッセージをバックアップ・アプリケーション・メッセージに変換するステップであって、各バックアップ・ソース・ストリーム・メッセージの内容に前記バックアップ・フィード・アダプタ内で前記バックアップ・ソース・ストリーム・メッセージが受信された前記フィード・アダプタ・ソース・ストリーム用の前記バックアップ・ソース・ストリームＩＤとバックアップ・メッセージ・シーケンス番号とを追加することを含むステップと、
を実行できるコンピュータ・プログラム命令をさらに含む、請求項１１ないし１５のいずれかに記載の装置。
【請求項１７】
前記アクティブ・フィード・アダプタでフィード・アダプタ・ソース・ストリーム上の管理ソース・ストリーム・メッセージを受信するステップと、
前記アクティブ・フィード・アダプタにより、前記管理ソース・ストリーム・メッセージを管理アプリケーション・メッセージに変換するステップであって、前記アクティブ・フィード・アダプタが前記サブスクライビング・クライアント・デバイスに前記管理アプリケーション・メッセージを送信するときに送信シーケンス内のポイントを指定するアクティブ・メッセージ・シーケンス番号を識別することを含むステップと、
前記アクティブ・フィード・アダプタにより、前記管理アプリケーション・メッセージと前記識別されたアクティブ・メッセージ・シーケンス番号とを前記バックアップ・フィード・アダプタに送信するステップと、
前記アクティブ・フィード・アダプタにより、前記アクティブ・メッセージ・シーケンス番号によって識別された前記送信シーケンス内の前記ポイントで前記アクティブ・メッセージ・ストリーム上の前記管理アプリケーション・メッセージを前記サブスクライビング・クライアント・デバイスに送信するステップと、
を実行できるコンピュータ・プログラム命令をさらに含む、請求項１１ないし１６のいずれかに記載の装置。
【請求項１８】
管理アプリケーション・メッセージと、前記アクティブ・フィード・アダプタが前記サブスクライビング・クライアント・デバイスに前記管理アプリケーション・メッセージを送信するときに送信シーケンス内のポイントを指定するアクティブ・メッセージ・シーケンス番号とを前記アクティブ・フィード・アダプタから前記バックアップ・フィード・アダプタで受信するステップと、
前記バックアップ・フィード・アダプタにより、前記管理アプリケーション・メッセージを受信する前に前記バックアップ・フィード・アダプタ内で処理された最新バックアップ・アプリケーション・メッセージのバックアップ・メッセージ・シーケンス番号を識別するステップと、
前記バックアップ・フィード・アダプタにより、前記受信したアクティブ・メッセージ・シーケンス番号と、前記クライアント・デバイスに送信された前記最新メッセージの前記バックアップ・シーケンス番号と、所定の同期シーケンス番号しきい値とに依存して、前記バックアップ・フィード・アダプタが前記バックアップ・メッセージ・ストリーム上の前記サブスクライビング・クライアント・デバイスへの前記管理アプリケーション・メッセージの送信を同期させることができるかどうかを判断するステップと、
を実行できるコンピュータ・プログラム命令をさらに含む、請求項１１ないし１７のいずれかに記載の装置。
【請求項１９】
前記バックアップ・フィード・アダプタが前記バックアップ・メッセージ・ストリーム上の前記サブスクライビング・クライアント・デバイスへの前記管理アプリケーション・メッセージの送信を同期させることができ、
前記バックアップ・フィード・アダプタにより、前記アクティブ・メッセージ・シーケンス番号の値と一致する値を有する前記管理アプリケーション・メッセージの内容にバックアップ・メッセージ・シーケンス番号を追加するステップと、
前記バックアップ・フィード・アダプタにより、他のバックアップ・アプリケーション・メッセージに続いて前記管理アプリケーション・メッセージを前記サブスクライビング・クライアント・デバイスに送信するステップと、
を実行できるコンピュータ・プログラム命令をさらに含む、請求項１８に記載の装置。
【請求項２０】
前記バックアップ・フィード・アダプタが前記バックアップ・メッセージ・ストリーム上の前記サブスクライビング・クライアント・デバイスへの前記管理アプリケーション・メッセージの送信を同期させることができず、
前記バックアップ・フィード・アダプタにより、前記バックアップ・フィード・アダプタが前記サブスクライビング・クライアント・デバイスに前記バックアップ・アプリケーション・メッセージを送信する伝送速度を減速するステップと、
前記バックアップ・フィード・アダプタにより、前記サブスクライビング・クライアント・デバイスへの前記管理アプリケーション・メッセージの送信を同期させるために他のメッセージ・シーケンス番号について前記アクティブ・フィード・アダプタと折衝するステップと、
を実行できるコンピュータ・プログラム命令をさらに含む、請求項１８に記載の装置。
【請求項２１】
高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのためのコンピュータ・プログラムであって、信号伝送媒体上に配置され、
ストリーム管理サーバにより、アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのアクティブ・メッセージ・ストリームの確立を仲介するステップであって、前記アクティブ・メッセージ・ストリームがアクティブ・アプリケーション・メッセージを伝達することができ、各アクティブ・アプリケーション・メッセージがアクティブ・ソース・ストリームＩＤと、アクティブ・ソース・ストリーム・シーケンス番号と、アクティブ・メッセージ・シーケンス番号とによって特徴付けられるステップと、
前記ストリーム管理サーバにより、バックアップ・フィード・アダプタから前記サブスクライビング・クライアント・デバイスへのバックアップ・メッセージ・ストリームの確立を仲介するステップであって、前記バックアップ・メッセージ・ストリームが前記アクティブ・アプリケーション・メッセージの重複を表すバックアップ・アプリケーション・メッセージを伝達することができ、各バックアップ・アプリケーション・メッセージがバックアップ・ソース・ストリームＩＤと、バックアップ・ソース・ストリーム・シーケンス番号と、バックアップ・メッセージ・シーケンス番号とによって特徴付けられるステップと、
前記サブスクライビング・クライアント・デバイスのメッセージング・ミドルウェアで前記アクティブ・フィード・アダプタから前記アクティブ・アプリケーション・メッセージを受信するステップと、
前記アクティブ・フィード・アダプタから前記バックアップ・フィード・アダプタへのフェイルオーバに応答して、前記サブスクライビング・クライアント・デバイスの前記メッセージング・ミドルウェアで前記バックアップ・フィード・アダプタから前記バックアップ・アプリケーション・メッセージを受信するステップと、
前記アクティブ・ストリーム・ソースＩＤと、前記アクティブ・ストリーム・ソース・シーケンス番号と、前記バックアップ・ストリーム・ソースＩＤと、前記バックアップ・ストリーム・ソース・シーケンス番号とに依存して、前記サブスクライビング・クライアント・デバイスの前記メッセージング・ミドルウェアにより、前記バックアップ・アプリケーション・メッセージを管理するステップと、
を実行できるコンピュータ・プログラム命令を含む、コンピュータ・プログラム。
【請求項２２】
前記信号伝送媒体が記録可能媒体を含む、請求項２１に記載のコンピュータ・プログラム。
【請求項２３】
前記信号伝送媒体が伝送媒体を含む、請求項２１に記載のコンピュータ・プログラム。
【請求項２４】
前記バックアップ・アプリケーション・メッセージのうちの少なくともいくつかが、前記サブスクライビング・クライアント・デバイスの前記メッセージング・ミドルウェアで前に受信されたアクティブ・アプリケーション・メッセージの重複を表す、請求項２１ないし２３のいずれかに記載のコンピュータ・プログラム。
【請求項２５】
前記高速短待ち時間データ通信環境が高速短待ち時間データ通信ネットワークを含み、前記ネットワークが、前記アクティブ・フィード・アダプタと、前記バックアップ・フィード・アダプタと、前記ストリーム管理サーバと、少なくとも１つのサブスクライビング・クライアント・デバイスとをさらに含み、ルータをまったく含まない、請求項２１ないし２４のいずれかに記載のコンピュータ・プログラム。
【請求項２６】
各フィード・アダプタが、第１のフォーマットを有するフィード・アダプタ・ソース・ストリーム上のメッセージを第２のフォーマットを有するフィード・アダプタ出力ストリーム上のメッセージに変換し、前記フィード・アダプタ出力ストリーム上の前記メッセージをサブスクライビング・クライアント・デバイスに送信する機能を有するデバイスを含む、請求項２１ないし２５のいずれかに記載のコンピュータ・プログラム。
【請求項２７】
前記アクティブ・フィード・アダプタで複数のフィード・アダプタ・ソース・ストリーム上のアクティブ・ソース・ストリーム・メッセージを受信するステップであって、各フィード・アダプタ・ソース・ストリームがアクティブ・ソース・ストリームＩＤによって前記アクティブ・フィード・アダプタ内で識別され、各アクティブ・ソース・ストリーム・メッセージが、前記アクティブ・ソース・ストリーム・メッセージが受信された前記フィード・アダプタ・ソース・ストリーム用のアクティブ・ソース・ストリーム・シーケンス番号によって特徴付けられるステップと、
前記アクティブ・フィード・アダプタにより、各アクティブ・ソース・ストリーム・メッセージをアクティブ・アプリケーション・メッセージに変換するステップであって、各アクティブ・ソース・ストリーム・メッセージの内容に前記アクティブ・フィード・アダプタ内で前記アクティブ・ソース・ストリーム・メッセージが受信された前記フィード・アダプタ・ソース・ストリーム用の前記アクティブ・ソース・ストリームＩＤとアクティブ・メッセージ・シーケンス番号とを追加することを含むステップと、
を実行できるコンピュータ・プログラム命令をさらに含む、請求項２１ないし２６のいずれかに記載のコンピュータ・プログラム。
【請求項２８】
前記バックアップ・フィード・アダプタで複数のフィード・アダプタ・ソース・ストリーム上のバックアップ・ソース・ストリーム・メッセージを受信するステップであって、各フィード・アダプタ・ソース・ストリームがバックアップ・ソース・ストリームＩＤによって前記バックアップ・フィード・アダプタ内で識別され、各バックアップ・ソース・ストリーム・メッセージが、前記バックアップ・ソース・ストリーム・メッセージが受信された前記フィード・アダプタ・ソース・ストリーム用のバックアップ・ソース・ストリーム・シーケンス番号によって特徴付けられるステップと、
前記バックアップ・フィード・アダプタにより、各バックアップ・ソース・ストリーム・メッセージをバックアップ・アプリケーション・メッセージに変換するステップであって、各バックアップ・ソース・ストリーム・メッセージの内容に前記バックアップ・フィード・アダプタ内で前記バックアップ・ソース・ストリーム・メッセージが受信された前記フィード・アダプタ・ソース・ストリーム用の前記バックアップ・ソース・ストリームＩＤとバックアップ・メッセージ・シーケンス番号とを追加することを含むステップと、
を実行できるコンピュータ・プログラム命令をさらに含む、請求項２１ないし２７のいずれかに記載のコンピュータ・プログラム。
【請求項２９】
前記アクティブ・フィード・アダプタでフィード・アダプタ・ソース・ストリーム上の管理ソース・ストリーム・メッセージを受信するステップと、
前記アクティブ・フィード・アダプタにより、前記管理ソース・ストリーム・メッセージを管理アプリケーション・メッセージに変換するステップであって、前記アクティブ・フィード・アダプタが前記サブスクライビング・クライアント・デバイスに前記管理アプリケーション・メッセージを送信するときに送信シーケンス内のポイントを指定するアクティブ・メッセージ・シーケンス番号を識別することを含むステップと、
前記アクティブ・フィード・アダプタにより、前記管理アプリケーション・メッセージと前記識別されたアクティブ・メッセージ・シーケンス番号とを前記バックアップ・フィード・アダプタに送信するステップと、
前記アクティブ・フィード・アダプタにより、前記アクティブ・メッセージ・シーケンス番号によって識別された前記送信シーケンス内の前記ポイントで前記アクティブ・メッセージ・ストリーム上の前記管理アプリケーション・メッセージを前記サブスクライビング・クライアント・デバイスに送信するステップと、
を実行できるコンピュータ・プログラム命令をさらに含む、請求項２１ないし２８のいずれかに記載のコンピュータ・プログラム。
【請求項３０】
管理アプリケーション・メッセージと、前記アクティブ・フィード・アダプタが前記サブスクライビング・クライアント・デバイスに前記管理アプリケーション・メッセージを送信するときに送信シーケンス内のポイントを指定するアクティブ・メッセージ・シーケンス番号とを前記アクティブ・フィード・アダプタから前記バックアップ・フィード・アダプタで受信するステップと、
前記バックアップ・フィード・アダプタにより、前記管理アプリケーション・メッセージを受信する前に前記バックアップ・フィード・アダプタ内で処理された最新バックアップ・アプリケーション・メッセージのバックアップ・メッセージ・シーケンス番号を識別するステップと、
前記バックアップ・フィード・アダプタにより、前記受信したアクティブ・メッセージ・シーケンス番号と、前記クライアント・デバイスに送信された前記最新メッセージの前記バックアップ・シーケンス番号と、所定の同期シーケンス番号しきい値とに依存して、前記バックアップ・フィード・アダプタが前記バックアップ・メッセージ・ストリーム上の前記サブスクライビング・クライアント・デバイスへの前記管理アプリケーション・メッセージの送信を同期させることができるかどうかを判断するステップと、
を実行できるコンピュータ・プログラム命令をさらに含む、請求項２１ないし２９のいずれかに記載のコンピュータ・プログラム。
【請求項３１】
前記バックアップ・フィード・アダプタが前記バックアップ・メッセージ・ストリーム上の前記サブスクライビング・クライアント・デバイスへの前記管理アプリケーション・メッセージの送信を同期させることができ、
前記バックアップ・フィード・アダプタにより、前記アクティブ・メッセージ・シーケンス番号の値と一致する値を有する前記管理アプリケーション・メッセージの内容にバックアップ・メッセージ・シーケンス番号を追加するステップと、
前記バックアップ・フィード・アダプタにより、他のバックアップ・アプリケーション・メッセージに続いて前記管理アプリケーション・メッセージを前記サブスクライビング・クライアント・デバイスに送信するステップと、
を実行できるコンピュータ・プログラム命令をさらに含む、請求項３０に記載のコンピュータ・プログラム。
【請求項３２】
前記バックアップ・フィード・アダプタが前記バックアップ・メッセージ・ストリーム上の前記サブスクライビング・クライアント・デバイスへの前記管理アプリケーション・メッセージの送信を同期させることができず、
前記バックアップ・フィード・アダプタにより、前記バックアップ・フィード・アダプタが前記サブスクライビング・クライアント・デバイスに前記バックアップ・アプリケーション・メッセージを送信する伝送速度を減速するステップと、
前記バックアップ・フィード・アダプタにより、前記サブスクライビング・クライアント・デバイスへの前記管理アプリケーション・メッセージの送信を同期させるために他のメッセージ・シーケンス番号について前記アクティブ・フィード・アダプタと折衝するステップと、
を実行できるコンピュータ・プログラム命令をさらに含む、請求項３０に記載のコンピュータ・プログラム。
【請求項３３】
コンピュータ上で実行されるときに、請求項１ないし１０のいずれかに記載の方法を実行するように適合されたプログラム・コード手段を含む、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の分野はデータ処理であり、より具体的には、高速短待ち時間データ通信環境（high speed, low latency data communications environment）において冗長メッセージ・ストリームを使用する高信頼性メッセージングのための方法、装置、およびプログラム（product）である。
【背景技術】
【０００２】
メッセージング環境は、一般に、アプリケーション・メッセージを使用してメッセージ送信装置とメッセージ受信装置との間のデータ通信を行うために使用可能である。アプリケーション・メッセージは、１つ以上のデータ・フィールドを含む、ある量のデータであり、メッセージ送信装置にインストールされたメッセージ・プロデューサ（message producer）からメッセージ受信装置にインストールされたメッセージ・コンシューマ（message consumer）に渡される。アプリケーション・メッセージは、たとえば、それぞれトランスポート層およびネットワーク層で認識される形式のメッセージであるトランスポート・メッセージまたはネットワーク・メッセージとともに構築された、データ通信プロトコル・スタックのアプリケーション層で動作するアプリケーション・ソフトウェアによって認識される、ある形式のメッセージである。アプリケーション・メッセージは、たとえば、数値またはテキスト情報、イメージ、暗号化情報、およびコンピュータ・プログラム命令を表すことができる。
【０００３】
メッセージング環境は、ポイントツーポイント・メッセージング（point-to-point messaging）、パブリッシュ／サブスクライブ・メッセージング（publish and subscribe messaging）またはその両方をサポートすることができる。ポイントツーポイント・メッセージング環境では、メッセージ・プロデューサは、単一のメッセージ・コンシューマにアプリケーション・メッセージをアドレス指定することができる。パブリッシュ／サブスクライブ・メッセージング環境では、メッセージ・プロデューサは、特定のチャネルまたはトピックにアプリケーション・メッセージをパブリッシュすることができ、そのチャネルまたはトピックにサブスクライブしているすべてのメッセージ・コンシューマがそのメッセージを受信する。メッセージ・プロデューサおよびメッセージ・コンシューマはパブリッシュ／サブスクライブ環境内でチャネルまたはトピックを介して間接的に相互に通信するので、メッセージ送信はメッセージ受信から分離される。その結果、プロデューサとコンシューマはいずれも相互に関する状態を維持する必要がなく、対話している参加者間の依存関係は低減または解消される。したがって、パブリッシュ／サブスクライブ環境では、メッセージ・パブリッシャとメッセージ・サブスクライバが非同期的に動作することができる。
【０００４】
メッセージング環境についてさらに説明するために、図１は、メッセージ送信装置（１００）と、メッセージ受信装置（１０４）と、メッセージ管理サーバ(１０２)とを含む、データ通信用の典型的なメッセージング環境を例示するブロック図を示している。メッセージ送信装置（１００）は、メッセージ受信装置に配信するためにメッセージ管理サーバ（１０２）にアプリケーション・メッセージを送信するために構成された１組のコンピュータ・プログラム命令であるメッセージ・プロデューサ（１１０）がそこにインストールされたコンピュータ・デバイスである。図１の例では、メッセージ・プロデューサ（１１０）は、メッセージ・ストリーム（１０６）上でメッセージ管理サーバ（１０２）にアプリケーション・メッセージを送信する。メッセージ送信装置（１００）は、メッセージ送信装置自体のデータまたは他の何らかのソースから受信したデータからアプリケーション・メッセージを生成することにより、送信メッセージを作成することができる。メッセージ受信装置（１０４）は、メッセージ管理サーバ（１０２）からアプリケーション・メッセージを受信するために構成された１組のコンピュータ・プログラム命令であるメッセージ・コンシューマ（１１２）がそこにインストールされたコンピュータ・デバイスである。図１の例では、メッセージ・コンシューマ（１１２）は、メッセージ・ストリーム（１０８）上でメッセージ管理サーバ（１０２）からアプリケーション・メッセージを受信する。図１の例では、メッセージ・ストリーム（１０６）およびメッセージ・ストリーム（１０８）は、たとえば、ユーザ・データグラム・プロトコル（「ＵＤＰ」）およびインターネット・プロトコル（「ＩＰ」）を使用して実装されたデータ通信チャネルである。
【０００５】
ポイントツーポイント・メッセージング環境またはパブリッシュ／サブスクライブ・メッセージング環境のいずれかでは、メッセージ送信装置からメッセージ受信装置に送信されたアプリケーション・メッセージは、典型的には、メッセージ管理サーバ（１０２）を通過する。メッセージ管理サーバ（１０２）は、メッセージ・プロデューサ（１１０）からメッセージ・コンシューマ（１１２）に送信されたメッセージを管理するために構成されたコンピュータ・プログラム命令であるメッセージ管理モジュール（１１４）がそこにインストールされたコンピュータ・デバイスである。メッセージ管理モジュールの例としては、ＩＢＭ（Ｒ）のＷｅｂＳｐｈｅｒｅ（Ｒ）  ＭＱ、サン・マイクロシステムズのＯｐｅｎ  Ｍｅｓｓａｇｅ  Ｑｕｅｕｅ、およびＯｐｅｎＪＭＳグループのＯｐｅｎＪＭＳを含むことができる。（ＩＢＭおよびＷｅｂＳｐｈｅｒｅは、米国、その他の国、またはその両方におけるインターナショナル・ビジネス・マシーンズ社の登録商標であり、その他の社名、製品名、またはサービス名は、その他のものの商標またはサービス・マークである可能性がある。）ポイントツーポイント・メッセージング環境では、メッセージ管理モジュール（１１４）は、様々なメッセージ・プロバイダからコンシューマ（１１２）にアドレス指定されたアプリケーション・メッセージをメッセージ管理モジュール（１１４）が受信したときに、メッセージ・コンシューマ（１１２）用のメッセージ・キューイングを提供する。パブリッシュ／サブスクライブ・メッセージング環境では、メッセージ管理モジュール（１１４）は、それに対してメッセージ・プロデューサがパブリッシュし、メッセージ・コンシューマがサブスクライブする様々なチャネルまたはトピックを管理する。いずれのメッセージ環境でも、メッセージ管理モジュール（１１４）は、メッセージ・プロデューサ（１１０）からメッセージ・コンシューマ（１１２）に到着したメッセージのみが、メッセージ・コンシューマ（１１２）が受信する認可を受けているメッセージであり、メッセージ・プロデューサ（１１０）が送信する認可を受けているメッセージであることを保証するためにセキュリティ・サービスも提供することができる。その上、メッセージ管理モジュール（１１４）は、メッセージ・プロデューサ（１１０）上で障害が発生した場合にバックアップ・メッセージ・プロデューサからのバックアップ・メッセージをメッセージ・コンシューマに提供することを調整することもできる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
たとえば、図１に関連して上述したものなどの現行のメッセージング環境には特定の欠点がある。メッセージ受信装置に配信するためにメッセージ送信装置からメッセージ管理サーバに送信されたアプリケーション・メッセージは、メッセージ管理サーバがそのメッセージを処理できるまでメッセージ管理サーバ内で遅延させられる。メッセージ管理サーバ内で行われるメッセージ処理は、メッセージング環境の全体的なメッセージング待ち時間を増加させ、データ通信環境内でデータを送信するための全体的な速度を減少させる。メッセージング待ち時間は、メッセージ・プロデューサがアプリケーション・メッセージを送信したときに始まり、メッセージ・コンシューマがアプリケーション・メッセージを受信したときに終わる期間である。
【０００７】
多くのデータ通信環境では、メッセージング待ち時間のわずかな増加でも費用のかかるものである。たとえば、金融市場データ環境について検討する。金融市場データ環境は、金融市場ならびに金融市場の参加者に関する情報を伝達するために使用されるデータ処理環境である。金融市場データ環境では、アプリケーション・メッセージは、一般に「ティック（tick）」と呼ばれ、たとえば、金融相場または金融ニュースなどの金融市場データを表す。金融相場は、任意の所与の金融証券に関する買い呼び値（bid price）と売り指し値（ask price）とを含む。「買い呼び値（bid）」とは、ある証券について買い手が快く支払う最高価格を指す。「売り指し値（ask）」とは、ある証券について売り手が快く受け入れる最低価格を指す。金融市場データ環境では、メッセージ・プロデューサは、リアルタイムの金融市場条件に基づいて金融証券の購入または売却に関する相場を提供することができ、メッセージ・コンシューマは、金融相場に基づいて金融証券を購入し売却することができる。メッセージ・コンシューマがメッセージ・プロデューサによって提供された相場価格（quoted price）に基づいて金融証券を購入または売却する場合、メッセージ・コンシューマが金融証券に関する相場における買い呼び値または売り指し値を入手する能力は、金融市場データ環境におけるメッセージング待ち時間によって大きく左右される。メッセージング待ち時間が長くなるほど、メッセージ・コンシューマから出される買い注文または売り注文が金融相場の表示価格またはその付近で行われる可能性が低くなる。実際に、非常に乱高下する証券は、数秒という期間で価格が劇的に変動する可能性がある。
【０００８】
メッセージング待ち時間を短縮するための現行の解決策は、メッセージング環境からメッセージ管理サーバを除去することである。このような現行の解決策では、メッセージ送信装置がアプリケーション・メッセージをメッセージ受信装置に直接送信する。このような現行の解決策の欠点は、メッセージ管理サーバを除去すると、メッセージ管理サーバによって提供される管理機能がメッセージング環境から除去されることである。したがって、現行の解決策は、メッセージ管理サーバの管理機能が必要なメッセージング環境において、事実上、何も解決策をもたらさない。もう一度、上記の金融市場データ環境の例を検討する。このような模範的な金融市場データ環境において、メッセージ受信装置が、特定の金融証券に関する金融相場を受信する認可のみを受けているか、または少なくとも１５分前の金融相場を受信する認可のみを受けていることを検討する。このような金融市場データ環境からメッセージ管理サーバを除去すると、金融市場データ環境内のメッセージ送信装置からメッセージ受信装置が受信したメッセージを管理する能力が除去される。
【０００９】
たとえば、図１に関連して上述したものなどの現行のメッセージング環境の追加の欠点は、メッセージ管理サーバがアクティブ・メッセージ送信装置とバックアップ・メッセージ送信装置の両方からアプリケーション・メッセージを受信し、各メッセージ送信装置が複数のサブソースから受信したデータからアプリケーション・メッセージを生成する状況にかかわるものである。各メッセージ送信装置がアプリケーション・メッセージを生成するので、各メッセージにはメッセージ・シーケンス番号が割り当てられる。各メッセージ送信装置が複数のサブソースから受信したデータを同じ順序で処理するという保証はまったく存在しないので、メッセージ送信装置は異なるデータを含む複数のメッセージに同じメッセージ・シーケンス番号を割り当てる場合が多い。アクティブ・メッセージ送信装置が障害を起こすと、メッセージ管理サーバは、バックアップ・メッセージ送信装置から生成されたアプリケーション・メッセージを受信し、データ回復を実行して脱落データまたは重複データを識別しなければならない。各メッセージ送信装置は異なるデータを含む複数のメッセージに同じメッセージ・シーケンス番号を割り当てる可能性があるので、現行のメッセージング環境のメッセージ管理サーバは、バックアップ・メッセージ送信装置から受信した重複アプリケーション・メッセージの除去などのデータ回復を実行するためにメッセージ・シーケンス番号を当てにすることはできない。むしろ、メッセージ管理サーバは、各メッセージの内容全体を調べて、メッセージ管理サーバがフェイルオーバ中に重複アプリケーション・メッセージを受信したかどうかを判断しなければならない。しかし、アプリケーション・メッセージの内容全体を調べると、アクティブ・メッセージ送信装置からバックアップ・メッセージ送信装置へのフェイルオーバ中のメッセージング待ち時間が大幅に増加する。
【課題を解決するための手段】
【００１０】
高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのための方法、装置、およびプログラムであって、ストリーム管理サーバにより、アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのアクティブ・メッセージ・ストリームの確立を仲介するステップであって、アクティブ・メッセージ・ストリームがアクティブ・アプリケーション・メッセージを伝達することができ、各アクティブ・アプリケーション・メッセージがアクティブ・ソース・ストリームＩＤと、アクティブ・ソース・ストリーム・シーケンス番号と、アクティブ・メッセージ・シーケンス番号とによって特徴付けられるステップと、ストリーム管理サーバにより、バックアップ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのバックアップ・メッセージ・ストリームの確立を仲介するステップであって、バックアップ・メッセージ・ストリームがアクティブ・アプリケーション・メッセージの重複を表すバックアップ・アプリケーション・メッセージを伝達することができ、各バックアップ・アプリケーション・メッセージがバックアップ・ソース・ストリームＩＤと、バックアップ・ソース・ストリーム・シーケンス番号と、バックアップ・メッセージ・シーケンス番号とによって特徴付けられるステップと、サブスクライビング・クライアント・デバイスのメッセージング・ミドルウェアでアクティブ・フィード・アダプタからアクティブ・アプリケーション・メッセージを受信するステップと、アクティブ・フィード・アダプタからバックアップ・フィード・アダプタへのフェイルオーバに応答して、サブスクライビング・クライアント・デバイスのメッセージング・ミドルウェアでバックアップ・フィード・アダプタからバックアップ・アプリケーション・メッセージを受信するステップと、アクティブ・ストリーム・ソースＩＤと、アクティブ・ストリーム・ソース・シーケンス番号と、バックアップ・ストリーム・ソースＩＤと、バックアップ・ストリーム・ソース・シーケンス番号とに依存して、サブスクライビング・クライアント・デバイスのメッセージング・ミドルウェアにより、バックアップ・アプリケーション・メッセージを管理するステップとを含む、方法、装置、およびプログラムが開示される。
【００１１】
好ましくは、データ回復を実行するためにアプリケーション・メッセージの内容についてメッセージ管理モジュールによる正確かつ一貫したデータ識別をより効率的に保証するためのメカニズムが提供される。
【００１２】
次に、一例としてのみ、添付図面に関連して、本発明の模範的な諸実施形態について説明する。
【００１３】
（一般に、同様の参照番号は本発明の模範的な諸実施形態の同様の部分を表す。）
【発明を実施するための最良の形態】
【００１４】
図２以降の添付図面に関連して、本発明の諸実施形態により高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのための模範的な方法、装置、およびプログラムについて説明する。図２は、本発明の諸実施形態により高速短待ち時間データ通信環境（２０１）において冗長メッセージ・ストリームを使用する高信頼性メッセージングのための模範的なコンピュータ・データ処理システムを例示するネットワークおよびブロック図を示している。図２のシステムは、一般に、本発明の諸実施形態により高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのために以下のように動作する。すなわち、ストリーム管理サーバ（２１２）は、アクティブ・フィード・アダプタ（２０８）からサブスクライビング・クライアント・デバイス（２１０）へのアクティブ・メッセージ・ストリーム（２８０）の確立を仲介する。アクティブ・メッセージ・ストリーム（２８０）はアクティブ・アプリケーション・メッセージを伝達することができ、各アクティブ・アプリケーション・メッセージはアクティブ・ソース・ストリームＩＤと、アクティブ・ソース・ストリーム・シーケンス番号と、アクティブ・メッセージ・シーケンス番号とによって特徴付けられる。ストリーム管理サーバは、バックアップ・フィード・アダプタ（２０６）からサブスクライビング・クライアント・デバイス（２１０）へのバックアップ・メッセージ・ストリーム（２８２）の確立を仲介する。バックアップ・メッセージ・ストリーム（２８２）はアクティブ・アプリケーション・メッセージの重複を表すバックアップ・アプリケーション・メッセージを伝達することができ、各バックアップ・アプリケーション・メッセージはバックアップ・ソース・ストリームＩＤと、バックアップ・ソース・ストリーム・シーケンス番号と、バックアップ・メッセージ・シーケンス番号とによって特徴付けられる。サブスクライビング・クライアント・デバイス（２１０）のメッセージング・ミドルウェア（２５２）はアクティブ・フィード・アダプタ（２０８）からアクティブ・アプリケーション・メッセージを受信する。サブスクライビング・クライアント・デバイスのメッセージング・ミドルウェア（２５２）は、アクティブ・フィード・アダプタ（２０８）からバックアップ・フィード・アダプタ（２０６）へのフェイルオーバに応答して、バックアップ・フィード・アダプタ（２０６）からバックアップ・アプリケーション・メッセージを受信する。サブスクライビング・クライアント・デバイス（２１０）のメッセージング・ミドルウェア（２５２）は、アクティブ・ストリーム・ソースＩＤと、アクティブ・ストリーム・ソース・シーケンス番号と、バックアップ・ストリーム・ソースＩＤと、バックアップ・ストリーム・ソース・シーケンス番号とに依存して、バックアップ・アプリケーション・メッセージを管理する。
【００１５】
図２に例示されている高速短待ち時間データ通信環境（２０１）は、高速短待ち時間データ通信ネットワーク（２００）を含む。このネットワーク（２００）は、アクティブ・フィード・アダプタ（２０８）と、バックアップ・フィード・アダプタ（２０６）と、ストリーム管理サーバ（２１２）と、サブスクライビング・クライアント・デバイス（２１０）、ならびにデータ通信のためにこのようなデバイス（２０６、２０８、２１２、２１０）をまとめて接続するためのインフラストラクチャを含む。ストリーム管理サーバ（２１２）によって管理されるメッセージ・ストリーム上でネットワーク（２００）に接続されたデバイス間で送信されるアプリケーション・メッセージはストリーム管理サーバ（２１２）を迂回するので、図２のネットワーク（２００）は「高速短待ち時間」と呼ばれる。たとえば、アクティブ・フィード・アダプタ（２０８）からサブスクライビング・クライアント・デバイス（２１０）へのアクティブ・メッセージ・ストリーム（２８０）上のアプリケーション・メッセージは、ストリーム管理サーバ（２１２）を迂回する。同様に、バックアップ・フィード・アダプタ（２０６）からサブスクライビング・クライアント・デバイス（２１０）へのバックアップ・メッセージ・ストリーム（２８２）上のアプリケーション・メッセージは、ストリーム管理サーバ（２１２）を迂回する。このようなメッセージはストリーム管理サーバ（２１２）内での処理のために遅延させられることはないが、ストリーム管理サーバ（２１２）は、高速短待ち時間データ通信ネットワーク（２００）に接続されたデバイス間のストリーム（２８０、２８２）の管理を保持する。
【００１６】
ネットワーク（２００）の「高速短待ち時間」性にさらに寄与するが、ネットワーク（２００）は、その主たる機能がネットワークを越えてデータ・パケットをその宛先に向かって転送することであるコンピュータ・ネットワーキング・デバイスであるルータを含まないことに気付くであろう。むしろ、各デバイス（２０６、２０８、２１２、２１０）は、ネットワーク（２００）に接続された他のデバイスとの直接接続によるデータ通信のためにそれ自体のルーティング機能を提供する。ネットワーク（２００）はデータ・パケットのルーティング専用のコンピュータ・ネットワーキング・デバイスを含まないので、図２のネットワーク（２００）は「最小ルーティング・ネットワーク（minimally routed network）」と呼ぶこともできる。図２に例示されている模範的なネットワーク（２００）はルータを含まないが、このような最小ルーティング・ネットワークは説明専用のものである。実際に、本発明の諸実施形態により高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングで有用な何らかの高速短待ち時間ネットワークは、ルータを含むことができる。
【００１７】
前述の通り、図２に描かれている高速短待ち時間データ通信環境（２０１）は２つのメッセージ・ストリーム（２８０、２８２）を含む。メッセージ・ストリームは、送信装置の通信エンドポイントと少なくとも１つの受信装置の通信エンドポイントとの間のデータ通信チャネルである。通信エンドポイントは、送信装置または受信装置用のネットワーク・アドレスおよびポートから構成される。メッセージ・ストリームは、マルチキャスト・データ通信チャネルとして実装することができる。マルチキャスト・データ通信チャネルでは、メッセージの宛先アドレスと受信装置の通信エンドポイントとの間に１対多の関係が存在する。すなわち、各宛先アドレスは、ストリームの各メッセージが複製される複数の受信装置用の１組の通信エンドポイントを識別する。マルチキャスト・データ通信チャネルは、たとえば、ユーザ・データグラム・プロトコル（「ＵＤＰ」）およびインターネット・プロトコル（「ＩＰ」）を使用して実装することができる。マルチキャスト・データ通信チャネルに加えて、メッセージ・ストリームはユニキャスト・データ通信チャネルとして実装することができる。ユニキャスト・データ通信チャネルでは、メッセージの宛先アドレスと受信装置の通信エンドポイントとの間に１対１の関係が存在する。すなわち、各宛先アドレスは、単一受信装置の単一通信エンドポイントを明確に識別する。ユニキャスト・データ通信チャネルは、たとえば、伝送制御プロトコル（「ＴＣＰ」）およびＩＰを使用して実装することができる。
【００１８】
図２の模範的なシステムは、ワイヤライン接続（２６２）により高速短待ち時間データ通信ネットワーク（２００）に接続されたストリーム管理サーバ（２１２）を含む。図２のストリーム管理サーバ（２１２）は、ストリーム管理モジュール（２２８）と、フィード・アダプタ・ライブラリ（２０２）と、認証モジュール（２３０）と、許可モジュール（２３４）と、許可ポリシー（２３５）がそこにインストールされたコンピュータ・デバイスである。ストリーム管理モジュール（２２８）は、本発明の諸実施形態により高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのために構成された１組のコンピュータ・プログラム命令である。ストリーム管理モジュール（２２８）は、一般に、アクティブ・フィード・アダプタ（２０８）からサブスクライビング・クライアント・デバイス（２１０）へのアクティブ・メッセージ・ストリーム（２８０）の確立を仲介し、バックアップ・フィード・アダプタ（２０６）からサブスクライビング・クライアント・デバイス（２１０）へのバックアップ・メッセージ・ストリーム（２８２）の確立を仲介することにより、本発明の諸実施形態により高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのために動作する。加えて、ストリーム管理モジュール（２２８）は、サブスクライビング・クライアント・デバイス（２１０）を認証し、メッセージ・ストリーム（２８０、２８２）上のフィード・アダプタ（２０６、２０８）からアプリケーション・メッセージを受信する権限をサブスクライビング・クライアント・デバイス（２１０）に授与することなどのセキュリティ・サービスを提供することにより、メッセージ・ストリームを管理することができる。
【００１９】
ストリーム管理モジュール（２２８）とフィード・アダプタ（２０６、２０８）との間の通信は、フィード・アダプタ・ライブラリ（２０２）を使用して実装することができる。フィード・アダプタ・ライブラリ（２０２）は、フィード・アダプタ・ライブラリＡＰＩ（２０４）によりストリーム管理モジュール（２２８）にとって使用可能な動的リンク・ライブラリ（dynamically linked library）または静的リンク・ライブラリ（staticallylinked library）に含まれる１組の機能である。フィード・アダプタ・ライブラリ（２０２）により、ストリーム管理サーバ（２１２）のストリーム管理モジュール（２２８）はフィード・アダプタ（２０６、２０８）を管理することができ、サブスクライビング・クライアント・デバイスからのメッセージ・ストリームに関する要求をフィード・アダプタ（２０６、２０８）に提供することを含む。ストリーム管理モジュール（２２８）によって使用されるフィード・アダプタ・ライブラリ（２０２）の機能は、ＣＯＲＢＡオブジェクトのメンバ・メソッドを呼び出し、Ｊａｖａ（Ｒ）リモート・メソッド呼び出し（「ＲＭＩ：Remote Method Invocation」）ＡＰＩを使用してリモート・オブジェクトのメンバ・メソッドを呼び出し、Ｗｅｂサービスまたは当業者であれば思い浮かぶ任意のその他の通信実装例を使用することにより、ネットワーク（２００）によりアクティブ・フィード・アダプタ（２０８）と通信することができる。（ＪａｖａおよびすべてのＪａｖａベースの商標およびロゴは、米国、その他の国、またはその両方におけるサン・マイクロシステムズ社の商標である。）
【００２０】
「ＣＯＲＢＡ」は、オブジェクト・マネジメント・グループ（「ＯＭＧ：ObjectManagement Group」）によって作成された相互運用エンタープライズ・アプリケーションに関するコンピュータ業界規格である共通オブジェクト・リクエスト・ブローカ・アーキテクチャ（Common Object Request Broker Architecture）を指す。ＣＯＲＢＡは、１９９１年にＯＭＧによって最初に公表されたリモート・プロシージャ呼び出しに関する規格である。ＣＯＲＢＡは従来のＲＰＣに存在しない特徴をサポートするが、リモート・プロシージャ・コールを行うためのある種のオブジェクト指向方法と見なすことができる。ＣＯＲＢＡは、オブジェクトのインターフェースを記述するために、宣言型言語であるインターフェース定義言語（「ＩＤＬ：Interface Definition Language」）を使用する。ＩＤＬによるインターフェース記述をコンパイルして、クライアント側の「スタブ（stub）」とサーバ側の「スケルトン（skeleton）」を生成する。この生成コードを使用すると、Ｃ＋＋またはＪａｖａなどのオブジェクト指向プログラミング言語で実施されるリモート・メソッド呼び出しは、ローカル・オブジェクトにおけるローカル・メンバ・メソッドの呼び出しのように見える、
【００２１】
Ｊａｖａ（Ｒ）リモート・メソッド呼び出しＡＰＩは、サン・マイクロシステムズ（Ｒ）によって公表されたリモート・プロシージャ・コールを実行するためのＪａｖａアプリケーション・プログラミング・インターフェースである。Ｊａｖａ（Ｒ）ＲＭＩ  ＡＰＩは、典型的には個別コンピュータ上で実行される個別Ｊａｖａ（Ｒ）仮想マシン内に存在するＪａｖａオブジェクト間でリモート・プロシージャ・コールを実行するためのオブジェクト指向方法である。Ｊａｖａ（Ｒ）ＲＭＩ  ＡＰＩは、リモート・プロシージャ・オブジェクト・インターフェースを使用して、サーバ上に常駐するリモート・オブジェクトを記述する。リモート・プロシージャ・オブジェクト・インターフェースはＲＭＩレジストリで公表され、そこでＪａｖａクライアントはリモートＪａｖａオブジェクトのリモート・インターフェースへの参照を入手することができる。コンパイル済みのクライアント側の「スタブ」とサーバ側の「スケルトン」を使用して、ネットワーク接続動作を提供するので、Ｊａｖａ  ＲＭＩにより、Ｊａｖａクライアントは任意の他のローカルＪａｖａオブジェクトのようにリモートＪａｖａオブジェクトにアクセスすることができる。
【００２２】
フィード・アダプタ（２０６、２０８）の管理に加えて、図２のストリーム管理モジュール（２２８）は、たとえば、サブスクライビング・クライアント・デバイス（２１０）を認証し、メッセージ・ストリーム（２８０、２８２）上のフィード・アダプタ（２０６、２０８）からアプリケーション・メッセージを受信する権限をサブスクライビング・クライアント・デバイス（２１０）に授与することなどのセキュリティ・サービスを提供することにより、メッセージ・ストリームを管理する。図２の認証モジュール（２３０）は、公開された認証アプリケーション・プログラミング・インターフェース（「ＡＰＩ」）（２３２）によりストリーム管理モジュール（２２８）に認証セキュリティ・サービスを提供することができる１組のコンピュータ・プログラム命令である。認証とは、あるエンティティのＩＤを検証するプロセスである。図２の模範的なシステムでは、認証モジュール（２３０）は、サブスクライビング・クライアント・デバイス（２１０）のＩＤを検証する。認証モジュール（２３０）は、たとえば、共有秘密鍵インフラストラクチャまたは公開鍵インフラストラクチャなどの様々なセキュリティ・インフラストラクチャを使用して認証セキュリティ・サービスを提供することができる。
【００２３】
図２の許可モジュール（２３４）は、公開された許可ＡＰＩ（２３６）によりストリーム管理モジュール（２２８）に許可セキュリティ・サービスを提供することができる１組のコンピュータ・プログラム命令である。許可とは、リソースを使用する権限が授与されたリソース・コンシューマのみによってそのリソースを使用できるようにするプロセスである。図２の例では、許可モジュール（２３４）は、サブスクライビング・クライアント・デバイス（２１０）がメッセージ・ストリーム（２８０、２８２）上で受信する認可を受けているアプリケーション・メッセージを識別する。図２の許可モジュール（２３４）は、許可ポリシー（２３５）を使用して許可セキュリティ・サービスを提供する。許可ポリシー（２３５）は、メッセージ・ストリーム上でアプリケーション・メッセージを送信または受信するための認証済みエンティティの特権を管理する１組のルールである。たとえば、金融市場データ環境では、認証済みエンティティは、他の証券ではなく何らかの金融証券に関する金融相場を含むアプリケーション・メッセージを受信する認可を受けている可能性がある。許可ポリシー（２３５）は、個別エンティティまたはグループ内の１つのエンティティのメンバシップを基礎として特権を授与することができる。
【００２４】
図２の模範的なシステムでは、アクティブ・フィード・アダプタ（２０８）は、ワイヤライン接続（２６０）により高速短待ち時間データ通信ネットワーク（２００）に接続されている。アクティブ・フィード・アダプタ（２０８）は、第１のフォーマットを有するアクティブ・フィード・アダプタ・ソース・ストリーム（２１４）上のアプリケーション・メッセージを第２のフォーマットを有するアクティブ・フィード・アダプタ出力ストリーム（２１６）上のアプリケーション・メッセージに変換し、アクティブ・フィード・アダプタ出力ストリーム（２１６）上のアプリケーション・メッセージをサブスクライビング・クライアント・デバイスに送信する機能を有するコンピュータ・デバイスである。図２のアクティブ・フィード・アダプタ・ソース・ストリーム（２１４）は、フィード・ソースからアクティブ・フィード・アダプタ（２０８）へのメッセージ・ストリームである。図２のアクティブ・フィード・アダプタ出力ストリーム（２１６）は、ストリーム管理サーバ（２１２）によって管理され、アクティブ・フィード・アダプタ（２０８）からサブスクライビング・クライアント・デバイス（２１０）へのメッセージ・ストリームである。アクティブ・フィード・アダプタはアクティブ・フィード・アダプタ・ソース・ストリーム（２１４）上で第１のフォーマットを有するアプリケーション・メッセージを受信し、アクティブ・フィード・アダプタ出力ストリーム（２１６）上で第２のフォーマットを有するアプリケーション・メッセージを送信するが、フィード・アダプタ出力ストリーム上でサブスクライビング・クライアント・デバイスに送信されたアプリケーション・メッセージからこのようなメッセージを区別するために、フィード・アダプタ・ソース・ストリーム上で受信したアプリケーション・メッセージがこの明細書では「ソース・ストリーム・メッセージ（source steam message）」と呼ばれることに気付くであろう。
【００２５】
図２の例では、アクティブ・フィード・アダプタ（２０８）は、フィード・ソース（２１３）からアクティブ・フィード・アダプタ・ソース・ストリーム（２１４）上のアクティブ・ソース・ストリーム・メッセージを受信する。フィード・ソース（２１３）は、ソース・ストリーム・メッセージにデータを集約し、１つ以上のフィード・アダプタ・ソース・ストリーム上でそのメッセージをフィード・アダプタに送信することができるコンピュータ・デバイスである。たとえば、金融市場データ環境では、フィード・ソース（２１３）は、オプション価格報告権限（「ＯＰＲＡ：Options Price Reporting Authority」）によって制御されたフィード・ソースとして実装することができる。ＯＰＲＡとは、米国内の証券オプションの取引によって生成された金融市場情報に関する証券情報プロセッサである。ＯＰＲＡが普及させる中核情報は、最新売却報告および相場である。金融市場データ環境におけるフィード・ソースの他の例としては、コンソリデーテッド・テープ・アソシエーション（「ＣＴＡ：Consolidated Tape Association」）またはナスダック・ストック・マーケット社によって制御されたフィード・ソースを含むことができる。ＣＴＡは、ニューヨーク証券取引所およびアメリカ証券取引所の上場証券におけるリアルタイムの取引および相場情報の普及を監督する。ナスダック・ストック・マーケット社は、米国内の電子スクリーンベースの株式市場であるＮＡＳＤＡＱマーケット・センターSMを運営する。金融市場データ環境では、フィード・アダプタ・ソース・ストリームは「金融市場データ・フィード（financial market data feed）」と呼ばれる。
【００２６】
図２は２つのアクティブ・フィード・アダプタ・ソース・ストリーム（２１４）を例示していることに気付くであろう。図２の各フィード・アダプタ・ソース・ストリーム（２１４）は、アクティブ・ソース・ストリームＩＤによってアクティブ・フィード・アダプタ内で識別される。単一ソース・ストリーム上でメッセージを送信するために必要な帯域幅は使用不能であるので、図２のフィード・ソース（２１３）は、２つ以上のフィード・アダプタ・ソース・ストリームを使用してソース・ストリーム・メッセージをアクティブ・フィード・アダプタ（２０８）に送信することができる。たとえば、金融市場データ環境では、フィード・ソースは、その証券コード（ticker symbol）が「Ａ」〜「Ｍ」の文字で始まる金融証券に関するティックを一方のメッセージ・ストリーム上で送信し、「Ｎ」〜「Ｚ」の文字で始まる金融証券に関するティックをもう一方のメッセージ・ストリーム上で送信することができる。
【００２７】
図２のアクティブ・フィード・アダプタ（２０８）は、変換モジュール（２２０）と、コンバータ・テーブル（２２２）と、コンバータ機能（２２４）と、メッセージ（２８４）と、メッセージ・モデル（２４４）と、メッセージング・ミドルウェア（２７６）と、トランスポート・エンジン（２７８）がそこにインストールされている。変換モジュール（２２０）は、アクティブ・フィード・アダプタ出力ストリーム（２１６）上のサブスクライビング・デバイスに送信するために、第１のフォーマットを有するアクティブ・フィード・アダプタ・ソース・ストリーム（２１４）上で受信したソース・ストリーム・メッセージを、第２のフォーマットを有するアプリケーション・メッセージに変換するための１組のコンピュータ・プログラム命令である。
【００２８】
さらに、変換モジュール（２２０）は、本発明の諸実施形態により高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのための１組のコンピュータ・プログラム命令である。変換モジュール（２２０）は、一般に、複数のフィード・アダプタ・ソース・ストリーム上でアクティブ・ソース・ストリーム・メッセージを受信し、各アクティブ・ソース・ストリーム・メッセージがそのアクティブ・ソース・ストリーム・メッセージが受信されたフィード・アダプタ・ソース・ストリーム用のアクティブ・ソース・ストリーム・シーケンス番号によって特徴付けられ、各アクティブ・ソース・ストリーム・メッセージをアクティブ・アプリケーション・メッセージに変換し、各アクティブ・ソース・ストリーム・メッセージの内容にアクティブ・フィード・アダプタ内でそのアクティブ・ソース・ストリーム・メッセージが受信されたフィード・アダプタ・ソース・ストリーム用のアクティブ・ソース・ストリームＩＤの値とアクティブ・メッセージ・シーケンス番号とを追加することを含み、フィード・アダプタ・ソース・ストリーム上の管理ソース・ストリーム・メッセージを受信し、管理ソース・ストリーム・メッセージを管理アプリケーション・メッセージに変換することにより、本発明の諸実施形態により高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのために動作する。
【００２９】
変換モジュール（２２０）は、コンバータ・テーブル（２２２）により第１のフォーマットから第２のフォーマットにアプリケーション・メッセージを変換する。図２のコンバータ・テーブル（２２２）は、あるフォーマットから他のフォーマットにアプリケーション・メッセージを変換することができるコンバータ機能（２２４）を指定するテーブルである。複数のコンバータ・テーブルを使用して、変換モジュール（２２０）は、様々な入力フォーマットから様々な出力フォーマットにメッセージを変換することができる。図２の例では、コンバータ・テーブル（２２２）は、アクティブ・フィード・アダプタ出力ストリーム（２１６）上でサブスクライビング・クライアント・デバイスに送信するために、第１のフォーマットを有するアクティブ・フィード・アダプタ・ソース・ストリーム（２１４）から受信したアクティブ・ソース・ストリーム・メッセージを、第２のフォーマットを有するアプリケーション・メッセージに変換することができるコンバータ機能（２２４）を指定する。すなわち、コンバータ・テーブル（２２２）は、各アクティブ・ソース・ストリーム・メッセージの内容にアクティブ・フィード・アダプタ内でそのアクティブ・ソース・ストリーム・メッセージが受信されたフィード・アダプタ・ソース・ストリーム用のアクティブ・ソース・ストリームＩＤの値とアクティブ・メッセージ・シーケンス番号とを追加することを含み、アクティブ・ソース・ストリーム・メッセージをアクティブ・アプリケーション・メッセージに変換することができるコンバータ機能（２２４）を指定する。加えて、コンバータ・テーブル（２２２）は、管理ソース・ストリーム・メッセージを管理アプリケーション・メッセージに変換することができるコンバータ機能（２２４）を指定する。管理ソース・ストリーム・メッセージは、管理情報を含む、フィード・ソースから受信したアプリケーション・メッセージである。図２のコンバータ・テーブル（２２２）は、たとえば、拡張可能マークアップ言語（「ＸＭＬ：eXtensible Markup Language」）文書などの構造化文書を使用して実装することができる。
【００３０】
図２のコンバータ機能（２２４）は、あるフォーマットから他のフォーマットにアプリケーション・メッセージ内のデータ・フィールドを変換するか、またはある値から他の値にデータ・フィールドの値を変換することができる機能である。たとえば、コンバータ機能（２２４）は、１６ビットの整数を３２ビットの整数に変換するか、ストリング・フィールドに保管された数値を６４ビットの倍精度浮動小数点値に変換するか、特定のデータ・フィールドの値を１だけ増加するか、あるいは当業者であれば思い浮かぶ任意のその他の変換を行うことができる。図２の変換モジュール（２２０）は、コンバータ機能（２２４）によって公開された１組のコンバータ機能ＡＰＩ（２２６）によりコンバータ機能（２２４）にアクセスする。
【００３１】
図２の例では、変換モジュール（２２０）は、コンバータ機能（２２４）を使用して、アクティブ・ソース・ストリーム・メッセージをアクティブ・アプリケーション・メッセージ（２８４）に変換する。図２のアプリケーション・メッセージ（２８４）は、サブスクライビング・クライアント・デバイス（２１０）に送信するためのアクティブ・アプリケーション・メッセージを表す。メッセージ（２８４）のフォーマットはメッセージ・モデル（２４４）に指定される。メッセージ・モデル（２４４）は、メッセージ（２８４）の構造およびフォーマットを定義するメタデータである。メッセージ・モデル（２４４）は、アプリケーション・メッセージ（２８４）に付加し、アプリケーション・メッセージ（２８４）とともにサブスクライビング・クライアント・デバイス（２１０）に送信することができる。しかし、たいていの場合、サブスクライビング・クライアント・デバイス（２１０）およびフィード・アダプタ（２０６、２０８）は、ストリーム管理サーバ（２１２）がメッセージ・ストリーム（２８０）を仲介するときに、メッセージ・モデル（２４４）またはそのＩＤをストリーム管理サーバ（２１２）から受信することができる。メッセージ・モデルは、たとえば、ＸＭＬ文書、Ｊａｖａオブジェクト、Ｃ＋＋オブジェクト、または当業者であれば思い浮かぶ任意のその他の実装例などの構造化文書を使用して実装することができる。
【００３２】
図２の変換モジュール（２２０）がソース・ストリーム・メッセージについてデータ処理を実行する前に、変換モジュール（２２０）はフィード・ソース（２１３）からソース・ストリーム・メッセージを受信する。図２の変換モジュール（２２０）は、アクティブ・フィード・アダプタ（２０８）の受信側トランスポート・エンジン（図示せず）によりソース・ストリーム・メッセージを受信することができる。受信側トランスポート・エンジンは、ネットワーク・スタックのトランスポート層で動作するソフトウェア・モジュールであり、ＴＣＰ／ＩＰプロトコル、ＵＤＰ／ＩＰプロトコル、または当業者であれば思い浮かぶ任意のその他のデータ通信プロトコルにより実装することができる。受信側トランスポート・エンジンは、受信したソース・ストリーム・メッセージを変換モジュール（２２０）またはメッセージ・ミドルウェア（２７６）に直接提供することができ、次にソース・ストリーム・メッセージはそこから変換モジュールに提供される。
【００３３】
図２のメッセージング・ミドルウェア（２７６）は、アクティブ・フィード・アダプタ（２０８）と、バックアップ・フィード・アダプタ（２０６）と、サブスクライビング・クライアント・デバイス（２１０）との間で高可用性サービスを提供し、アクティブ・フィード・アダプタ（２０８）とバックアップ・フィード・アダプタ（２０６）との間で同期サービスを提供するソフトウェア・コンポーネントである。図２のメッセージング・ミドルウェア（２７６）は、たとえば、ＲＭＩオブジェクトのメンバ・メソッド、ＣＯＲＢＡオブジェクトのメンバ・メソッド、Ｗｅｂサービス、または当業者であれば思い浮かぶ任意のその他の通信実装例を使用して、アクティブ・フィード・アダプタ（２０８）とバックアップ・フィード・アダプタ（２０６）との間でデータ通信チャネルにより同期サービスを提供する。図２の変換モジュール（２２０）がフィード・ソース（２１３）からアプリケーション・メッセージを受信し、そのアプリケーション・メッセージについてデータ処理を実行した後、メッセージング・ミドルウェア（２７６）は、変換モジュール（２２０）からアプリケーション・メッセージを受信し、アクティブ・フィード・アダプタ出力ストリーム（２１６）上でサブスクライビング・クライアント・デバイスに送信するために受信したアプリケーション・メッセージをトランスポート・エンジン（２７８）に提供する。変換モジュール（２２０）は、メッセージング・ミドルウェア（２７６）によって公開されたメッセージング・ミドルウェアＡＰＩ（２６６）によりメッセージング・ミドルウェア（２７６）と対話する。
【００３４】
加えて、図２のメッセージング・ミドルウェア（２７６）は、本発明の諸実施形態により高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのために構成された１組のコンピュータ・プログラム命令を含む。図２のメッセージング・ミドルウェア（２７６）は、一般に、アクティブ・フィード・アダプタがサブスクライビング・クライアント・デバイスに管理アプリケーション・メッセージを送信するときに送信シーケンス内のポイントを指定するアクティブ・メッセージ・シーケンス番号用の値を識別し、管理アプリケーション・メッセージと、識別されたアクティブ・メッセージ・シーケンス番号用の値とをバックアップ・フィード・アダプタに送信し、アクティブ・メッセージ・シーケンス番号によって識別された送信シーケンス内のポイントでアクティブ・メッセージ・ストリーム上の管理アプリケーション・メッセージをサブスクライビング・クライアント・デバイスに送信することにより、本発明の諸実施形態により高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのために動作する。
【００３５】
図２のトランスポート・エンジン（２７８）は、国際標準化機構によって公布されたＯＳＩプロトコル・スタックのトランスポート層およびネットワーク層で動作するソフトウェア・コンポーネントである。トランスポート・エンジン（２７８）は、ネットワーク接続デバイス間でデータ通信サービスを提供する。トランスポート・エンジンは、ＵＤＰ／ＩＰプロトコル、ＴＣＰ／ＩＰプロトコル、または当業者であれば思い浮かぶ任意のその他のデータ通信プロトコルにより実装することができる。トランスポート・エンジン（２７８）は、メッセージング・ミドルウェア（２７６）によって提供されたアプリケーション・メッセージをパケットにカプセル化し、そのパケットをアクティブ・メッセージ・ストリーム（２８０）によりサブスクライビング・クライアント・デバイス（２１０）に送信することができる１組のコンピュータ・プログラム命令を含む。メッセージング・ミドルウェア（２７６）は、トランスポート・エンジン（２７８）によって公開されたトランスポートＡＰＩ（２６８）によりトランスポート・エンジン（２７８）を操作する。
【００３６】
図２の模範的なシステムでは、バックアップ・フィード・アダプタ（２０６）は、ワイヤライン接続（２７０）により高速短待ち時間データ通信ネットワーク（２００）に接続されている。バックアップ・フィード・アダプタ（２０６）は、第１のフォーマットを有するバックアップ・フィード・アダプタ・ソース・ストリーム（２１８）上のバックアップ・メッセージを第２のフォーマットを有するバックアップ・フィード・アダプタ出力ストリーム（２１７）上のバックアップ・メッセージに変換し、バックアップ・フィード・アダプタ出力ストリーム（２１７）上のバックアップ・メッセージをサブスクライビング・クライアント・デバイスに送信する機能を有するコンピュータ・デバイスである。バックアップ・フィード・アダプタ・ソース・ストリーム（２１８）は、フィード・ソース（２１３）からバックアップ・フィード・アダプタ（２０６）へのメッセージ・ストリームである。バックアップ・フィード・アダプタ出力ストリーム（２１７）は、ストリーム管理サーバ（２１２）によって管理され、バックアップ・フィード・アダプタ（２０６）からサブスクライビング・クライアント・デバイス（２１０）へのメッセージ・ストリームである。
【００３７】
図２のバックアップ・フィード・アダプタ（２０６）は、変換モジュール（２２１）と、コンバータ・テーブル（２２３）と、コンバータ機能ＡＰＩ（２９０）を公開するコンバータ機能（２２５）と、バックアップ・フィード・アダプタ（２０６）からサブスクライビング・クライアント・デバイス（２１０）に送信するためのバックアップ・アプリケーション・メッセージ（２８８）と、メッセージ・モデル（２４４）と、メッセージング・ミドルウェアＡＰＩ（２６７）を公開するメッセージング・ミドルウェア（２７７）と、トランスポート・エンジンＡＰＩ（２６９）を公開するトランスポート・エンジン（２７９）がそこにインストールされている。バックアップ・フィード・アダプタ（２０６）にインストールされたコンポーネントは、アクティブ・フィード・アダプタ（２０８）にインストールされたコンポーネントと同様に動作する。
【００３８】
加えて、図２のバックアップ・フィード・アダプタ（２０６）のメッセージング・ミドルウェア（２７７）は、本発明の諸実施形態により高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのための１組のコンピュータ・プログラム命令を含む。図２のメッセージング・ミドルウェア（２７７）は、一般に、管理アプリケーション・メッセージと、アクティブ・フィード・アダプタがサブスクライビング・クライアント・デバイスに管理アプリケーション・メッセージを送信するときに送信シーケンス内のポイントを指定するアクティブ・メッセージ・シーケンス番号用の値とをアクティブ・フィード・アダプタから受信し、管理アプリケーション・メッセージを受信する前にバックアップ・フィード・アダプタ内で処理された最新バックアップ・アプリケーション・メッセージのバックアップ・メッセージ・シーケンス番号用の値を識別し、受信したアクティブ・メッセージ・シーケンス番号用の値と、クライアント・デバイスに送信された最新メッセージのバックアップ・シーケンス番号用の値と、所定の同期シーケンス番号しきい値とに依存して、バックアップ・フィード・アダプタがバックアップ・メッセージ・ストリーム上のサブスクライビング・クライアント・デバイスへの管理アプリケーション・メッセージの送信を同期させることができるかどうかを判断し、アクティブ・メッセージ・シーケンス番号の値と一致する値を有する管理アプリケーション・メッセージの内容にバックアップ・メッセージ・シーケンス番号を追加し、他のバックアップ・アプリケーション・メッセージに続いて管理アプリケーション・メッセージをサブスクライビング・クライアント・デバイスに送信し、バックアップ・フィード・アダプタがサブスクライビング・クライアント・デバイスにバックアップ・アプリケーション・メッセージを送信する伝送速度を減速し、サブスクライビング・クライアント・デバイスへの管理アプリケーション・メッセージの送信を同期させるために他のメッセージ・シーケンス番号についてアクティブ・フィード・アダプタと折衝することにより、本発明の諸実施形態により高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのために動作する。
【００３９】
図２の模範的なシステム内のサブスクライビング・クライアント・デバイス（２１０）は、ワイヤライン接続（２６４）により高速短待ち時間データ通信ネットワーク（２００）に接続している。図２のサブスクライビング・クライアント・デバイス（２１０）は、様々なフィード・アダプタによって送信されたメッセージ・ストリームにサブスクライブすることができるコンピュータ・デバイスである。たとえば、金融市場データ環境では、サブスクライビング・クライアント・デバイスは、金融証券ブローカによって制御されたフィード・アダプタによって提供されるメッセージ・ストリーム上で特定の証券に関する買い呼び値および売り指し値を受信するためにティックにサブスクライブすることができる。
【００４０】
図２の例では、サブスクライビング・クライアント・デバイス（２１０）は、アプリケーション（２３８）と、メッセージ・ライブラリ（２４８）と、ストリーム管理ライブラリ（２７２）と、メッセージング・ミドルウェア（２５２）と、トランスポート・エンジン（２５６）がそこにインストールされている。図２のアプリケーション（２３８）は、フィード・アダプタ（２０８、２０６）の１つから受信したアプリケーション・メッセージ（２４０）に含まれるデータを処理するソフトウェア・コンポーネントである。アプリケーション（２３８）は、サブスクライビング・クライアント・デバイス（２１０）自体が使用するために、他のフィード・アダプタにそのデータを付与するために、または他の何らかのデバイスにそのデータを付与するために、データを処理することができる。金融市場データ環境では、サブスクライビング・クライアント・デバイスにインストールされたアプリケーションは、ティックに含まれる相場価格に基づいて金融証券を購入または売却するプログラム売買アプリケーションにすることができる。また、このアプリケーションは、たとえば、典型的には、フィード・ソース（２１３）によって提供されるティックに含まれない、特定の証券に関する最高買い呼び値および売り指し値などの情報をティックに付与する価値付加アプリケーションにすることもできる。その場合、サブスクライビング・クライアント・デバイスは、他のサブスクライビング・クライアント・デバイスへの転売のためにフィード・アダプタにそのティックを送信することができる。
【００４１】
図２の例では、アプリケーション・メッセージ（２４０）は、フィード・アダプタ（２０６、２０８）の１つから受信し、メッセージ・モデル（２４４）によって指定されたフォーマットを有するアプリケーション・メッセージを表す。図２のアプリケーション（２３８）は、メッセージ・ライブラリ（２４８）を使用して、アプリケーション・メッセージ（２４０）に含まれるデータを処理する。メッセージ・ライブラリ（２４８）は、メッセージ・モデル（２４４）に応じてメッセージ（２４０）を作成し、メッセージ（２４０）にアクセスし、メッセージ（２４０）を操作するためのコンピュータ・プログラム命令である１組の機能である。メッセージ・ライブラリ（２４８）は、メッセージ・ライブラリ（２４８）によって公開されたメッセージＡＰＩ（２５０）によりアプリケーション（２３８）にとってアクセス可能である。
【００４２】
サブスクライビング・クライアント・デバイス（２１０）とストリーム管理サーバ（２１２）との間の通信は、ストリーム管理ライブラリ（２７２）を使用して実装することができる。ストリーム管理ライブラリ（２７２）は、ストリーム管理ライブラリＡＰＩ（２７４）によりアプリケーション（２３８）にとって使用可能な動的リンク・ライブラリまたは静的リンク・ライブラリに含まれる１組の機能である。ストリーム管理ライブラリ（２７２）により、サブスクライビング・クライアント・デバイス（２１０）のアプリケーション（２３８）は、たとえば、フィード・アダプタからのメッセージにサブスクライブするか、既存のメッセージ・サブスクリプションを変更するか、またはメッセージ・サブスクリプションを取り消すよう、要求することができる。アプリケーション（２３８）によって使用されるストリーム管理ライブラリ（２７２）の機能は、ＣＯＲＢＡオブジェクトのメンバ・メソッドを呼び出し、Ｊａｖａ  ＲＭＩ  ＡＰＩを使用してリモート・オブジェクトのメンバ・メソッドを呼び出し、Ｗｅｂサービスまたは当業者であれば思い浮かぶ任意のその他の通信実装例を使用することにより、ネットワーク（２００）によりストリーム管理サーバ（２１２）と通信することができる。
【００４３】
アプリケーション（２３８）がメッセージ（２４０）に含まれるデータを処理する前に、アプリケーション（２３８）はメッセージング・ミドルウェア（２５２）からメッセージを受信し、次にメッセージング・ミドルウェア（２５２）はトランスポート・エンジン（２５６）によりフィード・アダプタ（２０８、２０６）の１つからアプリケーション・メッセージ（２４０）を受信する。メッセージング・ミドルウェア（２５２）は、サブスクライビング・クライアント・デバイスと、アクティブ・フィード・アダプタ（２０８）と、バックアップ・フィード・アダプタ（２０６）との間で高可用性サービスを提供するソフトウェア・コンポーネントである。加えて、メッセージング・ミドルウェア（２５２）はストリーム管理サーバ（２１２）に関するメッセージ管理サービスを提供する。このようなメッセージ管理サービスは、メッセージ・ストリーム上のメッセージを送受信するアプリケーション（２３８）の能力を、特定の制約を満足するメッセージに制限することを含むことができる。アプリケーション（２３８）およびストリーム管理ライブラリ（２７２）は、メッセージング・ミドルウェアＡＰＩ（２５４）によりメッセージング・ミドルウェア（２５２）と対話する。
【００４４】
加えて、図２のメッセージング・ミドルウェア（２５２）は、本発明の諸実施形態により高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのための１組のコンピュータ・プログラム命令を含む。図２のメッセージング・ミドルウェア（２５２）は、一般に、アクティブ・フィード・アダプタからアクティブ・アプリケーション・メッセージを受信し、アクティブ・フィード・アダプタからバックアップ・フィード・アダプタへのフェイルオーバに応答して、サブスクライビング・クライアント・デバイスのメッセージング・ミドルウェアでバックアップ・フィード・アダプタからバックアップ・アプリケーション・メッセージを受信し、アクティブ・ストリーム・ソースＩＤと、アクティブ・ストリーム・ソース・シーケンス番号と、バックアップ・ストリーム・ソースＩＤと、バックアップ・ストリーム・ソース・シーケンス番号とに依存して、サブスクライビング・クライアント・デバイスのメッセージング・ミドルウェアにより、バックアップ・アプリケーション・メッセージを管理することにより、本発明の諸実施形態により高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのために動作する。
【００４５】
図２のトランスポート・エンジン（２５６）は、国際標準化機構によって公布されたＯＳＩプロトコル・スタックのトランスポート層およびネットワーク層で動作するソフトウェア・コンポーネントである。トランスポート・エンジン（２５６）は、ネットワーク接続デバイス間でデータ通信サービスを提供する。トランスポート・エンジンは、ＵＤＰ／ＩＰプロトコル、ＴＣＰ／ＩＰプロトコル、または当業者であれば思い浮かぶ任意のその他のデータ通信プロトコルにより実装することができる。トランスポート・エンジン（２５６）は、フィード・アダプタ（２０８、２０６）からメッセージ・ストリーム（２８０、２８２）によりパケットを受信し、受信したパケットからアプリケーション・メッセージをカプセル化解除し、メッセージング・ミドルウェア（２５２）にアプリケーション・メッセージを提供するための１組のコンピュータ・プログラム命令を含むソフトウェア・コンポーネントである。メッセージング・ミドルウェア（２５２）は、トランスポート・エンジン（２５６）によって公開されたトランスポートＡＰＩ（２５８）によりトランスポート・エンジン（２５６）を操作する。
【００４６】
図２の模範的なシステムに例示されているサーバおよびその他のデバイスは、限定のためではなく、説明のためのものである。本発明の諸実施形態により高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングにおいて有用なデバイスは、たとえば、コンピュータ・サーバまたはワークステーションなどの汎用コンピュータ、たとえば、携帯情報端末（「ＰＤＡ：Personal Digital Assistant」）または携帯電話などのハンドヘルド・コンピュータ・デバイス、または当業者であれば思い浮かぶように本発明の諸実施形態によりデータ処理のために構成された任意のその他の自動コンピューティング・マシンを使用して実装することができる。
【００４７】
図２に例示されている模範的なシステムを構成するサーバおよびその他のデバイスの配置は、限定のためではなく、説明のためのものである。図２のネットワーク（２００）への接続はワイヤライン接続に関して描かれ記載されているが、ワイヤレス接続も本発明の様々な諸実施形態により有用なものになり得ることに気付くであろう。さらに、本発明の様々な諸実施形態により有用なデータ処理システムとしては、当業者であれば思い浮かぶように図２に図示されていない追加のサーバ、ルータ、その他のデバイス、およびピアツーピア・アーキテクチャを含むことができる。このようなデータ処理システム内のネットワークは、たとえば、伝送制御プロトコル（「ＴＣＰ：Transmission Control Protocol」）、インターネット・プロトコル（「ＩＰ：Internet Protocol」）、ハイパーテキスト転送プロトコル（「ＨＴＴＰ：HyperTextTransfer Protocol」）、ワイヤレス・アクセス・プロトコル（「ＷＡＰ：WirelessAccess Protocol」）、ハンドヘルド・デバイス転送プロトコル（「ＨＤＴＰ：HandheldDevice Transfer Protocol」）、および当業者であれば思い浮かぶその他のものを含む、多くのデータ通信プロトコルをサポートすることができる。本発明の様々な諸実施形態は、図２に例示されているものに加えて、様々なハードウェア・プラットフォーム上で実装することができる。
【００４８】
実施形態によっては、本発明による高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングは、１つ以上のサブスクライビング・クライアント・デバイス、ストリーム管理サーバ、フィード・アダプタ、コンピュータ、すなわち、自動コンピューティング・マシンによって実装することができる。したがって、さらに説明するために、図３は、本発明の諸実施形態により高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングで有用なサブスクライビング・クライアント・デバイス（２１０）の一例を含む自動コンピューティング・マシンのブロック図を示している。図３のサブスクライビング・クライアント・デバイス（２１０）は、少なくとも１つのコンピュータ・プロセッサ（１５６）または「ＣＰＵ」と、高速メモリ・バス（１６６）およびバス・アダプタ（１５８）によりプロセッサ（１５６）およびサブスクライビング・クライアント・デバイスのその他のコンポーネントに接続されたランダム・アクセス・メモリ（１６８）（「ＲＡＭ」）とを含む。
【００４９】
ＲＡＭ（１６８）には、アプリケーション（２３８）と、アプリケーション・メッセージ（２４０）と、メッセージ・モデル（２４４）と、メッセージ・ライブラリ（２４８）と、メッセージング・ミドルウェア（２５２）と、ストリーム管理ライブラリ（２７２）と、トランスポート・エンジン（２５６）が保管されている。各アプリケーション・メッセージ（２４０）は、１つ以上のデータ・フィールドを含む、ある量のデータであり、メッセージ・ストリーム上であるデバイスから他のデバイスに送信される。アプリケーション・メッセージは、典型的には、ネットワーク・プロトコル・スタックのネットワーク層およびトランスポート層より上のアプリケーション層で動作するアプリケーションによって作成され処理される。前述の通り、アプリケーション・メッセージは、数値またはテキスト情報、イメージ、暗号化情報、コンピュータ・プログラム命令などを表すことができる。たとえば、金融市場データ環境では、メッセージは一般に「ティック」と呼ばれ、たとえば、金融相場または金融ニュースなどの金融市場データを表す。各アプリケーション・メッセージ（２４０）は、たとえば、ＸＭＬ文書、Ｊａｖａオブジェクト、Ｃ＋＋オブジェクト、または当業者であれば思い浮かぶ任意のその他の実装例などの構造化文書を使用して実装することができる。メッセージ・モデル（２４４）は、メッセージ（２４０）の構造およびフォーマットを定義するメタデータである。また、メッセージ・モデル（２４４）も、たとえば、ＸＭＬ文書、Ｊａｖａオブジェクト、Ｃ＋＋オブジェクト、または当業者であれば思い浮かぶ任意のその他の実装例などの構造化文書を使用して実装することができる。図３に例示されているアプリケーション（２３８）、メッセージ・ライブラリ（２４８）、メッセージング・ミドルウェア（２５２）、ストリーム管理ライブラリ（２７２）、およびトランスポート・エンジン（２５６）は、図２に関連して上述したように動作するソフトウェア・コンポーネント、すなわち、コンピュータ・プログラム命令である。
【００５０】
ＲＡＭ（１６８）には、オペレーティング・システム（１５４）も保管されている。本発明の諸実施形態によるサブスクライビング・クライアント・デバイスで有用なオペレーティング・システムとしては、ＵＮＩＸ（Ｒ）、Ｌｉｎｕｘ（Ｒ）、Ｍｉｃｒｏｓｏｆｔ（Ｒ）  Ｗｉｎｄｏｗｓ（Ｒ）  ＮＴ（Ｒ）、ＩＢＭのＡＩＸ（Ｒ）、ＩＢＭのｉ５／ＯＳ（Ｒ）、および当業者であれば思い浮かぶその他のものを含む。図３の例では、オペレーティング・システム（１５４）、アプリケーション（２３８）、メッセージ（２４０）、メッセージ・モデル（２４４）、メッセージ・ライブラリ（２４８）、メッセージング・ミドルウェア（２５２）、およびトランスポート・エンジン（２５６）がＲＡＭ（１６８）内に示されているが、このようなソフトウェアの多くのコンポーネントは、典型的には、たとえば、ディスク・ドライブ（１７０）上の不揮発性メモリにも保管される。
【００５１】
ＵＮＩＸは米国およびその他の国におけるＴｈｅ  Ｏｐｅｎ  Ｇｒｏｕｐの登録商標であり、Ｌｉｎｕｘは米国、その他の国、またはその両方におけるＬｉｎｕｓ  Ｔｏｒｖａｌｄｓの登録商標であり、Ｍｉｃｒｏｓｏｆｔ、Ｗｉｎｄｏｗｓ、およびＷｉｎｄｏｗｓ  ＮＴは米国、その他の国、またはその両方におけるマイクロソフト社の商標であり、ＩＢＭ、ＡＩＸ、およびｉ５／ＯＳは米国、その他の国、またはその両方におけるインターナショナル・ビジネス・マシーンズ社の登録商標である。
【００５２】
図３の模範的なサブスクライビング・クライアント・デバイス（２１０）は、高速バス用のドライブ・エレクトロニクスを含むコンピュータ・ハードウェア・コンポーネントであるバス・アダプタ（１５８）と、フロント・サイド・バス（１６２）と、ビデオ・バス（１６４）と、メモリ・バス（１６６）と、低速拡張バス（１６０）用のドライブ・エレクトロニクスとを含む。本発明の諸実施形態により有用なサブスクライビング・クライアント・デバイスで有用なバス・アダプタの例としては、Ｉｎｔｅｌ（Ｒ）のノースブリッジ、Ｉｎｔｅｌのメモリ・コントローラ・ハブ、Ｉｎｔｅｌのサウスブリッジ、Ｉｎｔｅｌの入出力コントローラ・ハブを含む。本発明の諸実施形態により有用なサブスクライビング・クライアント・デバイスで有用な拡張バスの例としては、周辺装置相互接続（「ＰＣＩ」）バスおよびＰＣＩエクスプレス（「ＰＣＩｅ」）バスを含むことができる。（Ｉｎｔｅｌは、米国およびその他の国におけるインテル社またはその子会社の登録商標である。）
【００５３】
図３の模範的なサブスクライビング・クライアント・デバイス（２１０）は、拡張バス（１６０）およびバス・アダプタ（１５８）によりプロセッサ（１５６）および模範的なサブスクライビング・クライアント・デバイス（２１０）の他のコンポーネントに結合されたディスク・ドライブ・アダプタ（１７２）も含む。ディスク・ドライブ・アダプタ（１７２）は、ディスク・ドライブ（１７０）の形で不揮発性データ記憶装置を模範的なサブスクライビング・クライアント・デバイス（２１０）に接続する。サブスクライビング・クライアント・デバイスで有用なディスク・ドライブ・アダプタとしては、インテグレーテッド・ドライブ・エレクトロニクス（「ＩＤＥ」）アダプタ、小型コンピュータ・システム・インターフェース（「ＳＣＳＩ」）アダプタ、および当業者であれば思い浮かぶその他のものを含む。加えて、不揮発性コンピュータ・メモリは、当業者であれば思い浮かぶように、光ディスク・ドライブ、電気的消去再書込可能読み取り専用メモリ（いわゆる「ＥＥＰＲＯＭ」または「フラッシュ」メモリ）、ＲＡＭドライブなどとして、サブスクライビング・クライアント・デバイス用に実装することができる。
【００５４】
図３の模範的なサブスクライビング・クライアント・デバイス（２１０）は、１つ以上の入出力（「Ｉ／Ｏ」）アダプタ（１７８）を含む。サブスクライビング・クライアント・デバイス内の入出力アダプタは、たとえば、コンピュータ表示画面などの表示装置への出力ならびにキーボードおよびマウスなどのユーザ入力装置（１８１）からのユーザ入力を制御するためのソフトウェア・ドライバおよびコンピュータ・ハードウェアによりユーザ指向入出力を実装する。図３の模範的なサブスクライビング・クライアント・デバイス（２１０）はビデオ・アダプタ（２０９）を含み、このビデオ・アダプタ（２０９）は、表示画面またはコンピュータ・モニタなどの表示装置（１８０）への図形出力のために特別に設計された入出力アダプタの一例である。ビデオ・アダプタ（２０９）は、高速ビデオ・バス（１６４）、バス・アダプタ（１５８）、および同じく高速バスであるフロント・サイド・バス（１６２）によりプロセッサ（１５６）に接続されている。
【００５５】
図３の模範的なサブスクライビング・クライアント・デバイス（２１０）は、他のコンピュータ（１８２）とのデータ通信ならびに高速短待ち時間データ通信ネットワーク（２００）とのデータ通信のための通信アダプタ（１６７）を含む。このようなデータ通信は、ＲＳ−２３２接続により、ユニバーサル・シリアル・バス（「ＵＳＢ」）などの外部バスにより、ＩＰデータ通信ネットワークなどのデータ通信ネットワークにより、ならびに当業者であれば思い浮かぶその他の方法で、シリアルに実行することができる。通信アダプタは、それによりあるコンピュータが直接またはデータ通信ネットワークにより他のコンピュータに送信する、ハードウェア・レベルのデータ通信を実装する。本発明の諸実施形態により高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングに有用な通信アダプタの例としては、ワイヤード・ダイヤルアップ通信用のモデム、ワイヤード・データ通信ネットワーク通信用のＩＥＥＥ  ８０２．３イーサネット・アダプタ、およびワイヤレス・データ通信ネットワーク通信用のＩＥＥＥ  ８０２．１１ｂアダプタを含む。
【００５６】
模範的なサブスクライビング・クライアント・デバイスに関連して図３を論じるが、本発明の諸実施形態により高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングに有用な模範的なストリーム管理サーバおよび模範的なフィード・アダプタを含む自動コンピューティング・マシンは、図３の模範的なサブスクライビング・クライアント・デバイス（２１０）と同様のものであることに気付くであろう。すなわち、このような模範的なストリーム管理サーバおよびフィード・アダプタは、１つ以上のプロセッサ、バス・アダプタ、バス、ＲＡＭ、ビデオ・アダプタ、通信アダプタ、入出力アダプタ、ディスク・ドライブ・アダプタ、および当業者であれば思い浮かぶように図３の模範的なサブスクライビング・クライアント・デバイス（２１０）と同様のその他のコンポーネントを含む。
【００５７】
さらに説明するために、図４は、本発明の諸実施形態により高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのための模範的な方法を例示する流れ図を示している。図４の方法は、ストリーム管理サーバにより、アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのアクティブ・メッセージ・ストリーム（２８０）の確立を仲介するステップ（４００）を含む。図４のアクティブ・メッセージ・ストリーム（２８０）は、サブスクライビング・クライアント・デバイスの通信エンドポイントとフィード・アダプタの通信エンドポイントとの間のデータ通信チャネルを表す。メッセージ・ストリームは、図２に関連して上述した通り、ＵＤＰ／ＩＰプロトコルを使用するマルチキャスト・データ通信チャネルまたはＴＣＰ／ＩＰプロトコルを使用するユニキャスト・データ通信チャネルとして実装することができる。
【００５８】
図４の例では、アクティブ・メッセージ・ストリーム（２８０）は、アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスにアクティブ・アプリケーション・メッセージ（４０４）を伝達することができる。アクティブ・アプリケーション・メッセージ（４０４）は、アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスによって受信されたアプリケーション・メッセージを表す。図４の各アクティブ・アプリケーション・メッセージ（４０４）は、アクティブ・ソース・ストリームＩＤ（４０６）と、アクティブ・ソース・ストリーム・シーケンス番号（４０８）と、アクティブ・メッセージ・シーケンス番号（４１０）とによって特徴付けられる。アクティブ・ソース・ストリームＩＤ（４０６）は、アクティブ・フィード・アダプタがアクティブ・ソース・ストリーム・メッセージを受信したフィード・アダプタ・ソース・ストリームを表し、そのアクティブ・ソース・ストリーム・メッセージはアクティブ・アプリケーション・メッセージ（４０４）に変換されている。アクティブ・ソース・ストリーム・シーケンス番号（４０８）は、同じソース・ストリーム上でアクティブ・フィード・アダプタによって受信された数あるアクティブ・ソース・ストリーム・メッセージの中で、アクティブ・アプリケーション・メッセージ（４０４）に変換されているアクティブ・ソース・ストリーム・メッセージを明確に識別するシーケンス番号を表す。アクティブ・ソース・ストリーム・シーケンス番号（４０８）は、アクティブ・フィード・アダプタで受信した他のアクティブ・ソース・ストリーム・メッセージに対する特定のアクティブ・ソース・ストリーム・メッセージの相対伝送順序も提供する。アクティブ・メッセージ・シーケンス番号（４１０）は、特定のアクティブ・フィード・アダプタから送信された数あるアプリケーション・メッセージの中で、そのアクティブ・アプリケーション・メッセージを明確に識別するシーケンス番号を表す。アクティブ・ソース・ストリーム・シーケンス番号（４０８）と同様に、アクティブ・メッセージ・シーケンス番号（４１０）は、アクティブ・フィード・アダプタから送信された他のアクティブ・アプリケーション・メッセージに対する特定のアクティブ・アプリケーション・メッセージの相対伝送順序も提供する。
【００５９】
図４の方法では、ストリーム管理サーバにより、アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのアクティブ・メッセージ・ストリーム（２８０）の確立を仲介するステップ（４００）は、フィード・アダプタからのメッセージにサブスクライブするためにサブスクライビング・クライアント・デバイスからサブスクリプション要求を受信することにより実行することができる。サブスクリプション要求は、ＸＭＬ文書、サブスクライビング・クライアント・デバイス上のＲＭＩオブジェクトのメンバ・メソッドへの呼び出し、または当業者であれば思い浮かぶ任意のその他の実装例として実装することができる。サブスクリプション要求は、フィード・アダプタから受信するようサブスクライビング・クライアント・デバイスが要求するメッセージのトピックを含むことができる。トピックは、サブスクライビング・クライアント・デバイスが要求するメッセージの特性を表す。トピックを使用して、サブスクライビング・クライアント・デバイスは、フィード・アダプタから受信するためのメッセージのグループを指定することができる。たとえば、金融市場データ環境では、サブスクライビング・クライアント・デバイスは、シカゴ・オプション取引所（「ＣＢＯＥ」）で取引されたＩＢＭオプションの相場を含み、ＣＢＯＥでのＩＢＭオプションの最高買い呼び値および最高売り指し値を含む、ＯＰＲＡフィード・ソースからティックを要求するためにトピックを使用することができる。
【００６０】
図４の方法により、ストリーム管理サーバにより、アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのアクティブ・メッセージ・ストリーム（２８０）の確立を仲介するステップ（４００）は、フィード・アダプタ用の宛先アドレスをサブスクライビング・クライアント・デバイスに提供することも含むことができる。フィード・アダプタ用の宛先アドレスは、フィード・アダプタからのメッセージを聴取するためにサブスクライビング・クライアント・デバイスによって使用されるマルチキャスト・アドレスまたはユニキャスト・アドレスである。ストリーム管理サーバによって提供された宛先アドレスを使用して、サブスクライビング・クライアント・デバイスは、フィード・アダプタからサブスクライビング・クライアント・デバイスへのアクティブ・メッセージ・ストリーム（２８０）を確立することができる。
【００６１】
ストリーム管理サーバがフィード・アダプタ用の宛先アドレスを提供する前に、図４の例のストリーム管理サーバは、サブスクライビング・クライアント・デバイスが受信する認可を受けているフィード・アダプタからのメッセージをサブスクライビング・クライアント・デバイスのみが受信することを保証するためにいくつかのセキュリティ・サービスを実行することができる。図４の方法では、ストリーム管理サーバにより、アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのアクティブ・メッセージ・ストリーム（２８０）の確立を仲介するステップ（４００）は、サブスクライビング・クライアント・デバイスを認証することと、メッセージ・ストリーム（２８０）上でフィード・アダプタからのメッセージを受信するためにサブスクライビング・クライアント・デバイスを許可することにより実行することもできる。サブスクライビング・クライアント・デバイスを認証することは、サブスクリプション要求とともにサブスクライビング・クライアント・デバイスにより提供されるクライアント・セキュリティ証明書（client security credential）を検証することにより実行することができる。クライアント・セキュリティ証明書は、サブスクリプション要求の発信元のＩＤを認証するために、公開鍵インフラストラクチャ内のデジタル署名、セキュリティ・トークン、または当業者であれば思い浮かぶ任意のその他のセキュリティ・データとして実装することができる。メッセージ・ストリーム（２８０）上でフィード・アダプタからのメッセージを受信するためにサブスクライビング・クライアント・デバイスを許可することは、許可ポリシーに依存して認証済みサブスクライビング・クライアント・デバイスに関連する特権を識別することにより実行することができる。許可ポリシーは、フィード・アダプタからデータを受信するよう要求する認証済みサブスクライビング・クライアント・デバイスの特権を管理する１組のルールである。
【００６２】
図４の方法は、ストリーム管理サーバにより、バックアップ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのバックアップ・メッセージ・ストリーム（２８２）の確立を仲介するステップ（４０２）も含む。図４の例では、ストリーム管理サーバにより、バックアップ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのバックアップ・メッセージ・ストリーム（２８２）の確立を仲介するステップ（４０２）は、上述の通り、ストリーム管理サーバにより、アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのアクティブ・メッセージ・ストリーム（２８０）の確立を仲介するステップ（４００）と同様に実行することができる。
【００６３】
図４のバックアップ・メッセージ・ストリーム（２８２）は、サブスクライビング・クライアント・デバイスの通信エンドポイントとフィード・アダプタの通信エンドポイントとの間のデータ通信チャネルを表す。図４の例では、バックアップ・メッセージ・ストリーム（２８２）は、バックアップ・フィード・アダプタからサブスクライビング・クライアント・デバイスにバックアップ・アプリケーション・メッセージ（４１４）を伝達することができる。バックアップ・アプリケーション・メッセージ（４１４）は、バックアップ・フィード・アダプタからサブスクライビング・クライアント・デバイスによって受信されたアプリケーション・メッセージを表す。図４の各バックアップ・アプリケーション・メッセージ（４１４）は、バックアップ・ソース・ストリームＩＤ（４１６）と、バックアップ・ソース・ストリーム・シーケンス番号（４１８）と、バックアップ・メッセージ・シーケンス番号（４２０）とによって特徴付けられる。バックアップ・ソース・ストリームＩＤ（４１６）は、バックアップ・フィード・アダプタがバックアップ・ソース・ストリーム・メッセージを受信したフィード・アダプタ・ソース・ストリームを表し、そのバックアップ・ソース・ストリーム・メッセージはバックアップ・アプリケーション・メッセージ（４１４）に変換されている。バックアップ・ソース・ストリーム・シーケンス番号（４１８）は、特定のソース・ストリーム上でバックアップ・フィード・アダプタによって受信された数あるバックアップ・ソース・ストリーム・メッセージの中で、バックアップ・アプリケーション・メッセージ（４１４）に変換されているバックアップ・ソース・ストリーム・メッセージを明確に識別するシーケンス番号である。バックアップ・ソース・ストリーム・シーケンス番号（４１８）は、バックアップ・フィード・アダプタで受信した他のバックアップ・ソース・ストリーム・メッセージに対する特定のバックアップ・ソース・ストリーム・メッセージの相対伝送順序も提供する。バックアップ・メッセージ・シーケンス番号（４２０）は、特定のバックアップ・フィード・アダプタから送信された数あるアプリケーション・メッセージの中で、そのバックアップ・アプリケーション・メッセージを明確に識別するシーケンス番号である。バックアップ・メッセージ・シーケンス番号は、バックアップ・フィード・アダプタから送信された他のバックアップ・アプリケーション・メッセージに対する特定のバックアップ・アプリケーション・メッセージの相対伝送順序も提供する。
【００６４】
図４の例では、バックアップ・アプリケーション・メッセージ（４１４）のうちの少なくともいくつかは、サブスクライビング・クライアント・デバイスのメッセージング・ミドルウェアで前に受信されたアクティブ・アプリケーション・メッセージ（４０４）の重複を表す。前述の通り、アクティブ・フィード・アダプタとバックアップ・フィード・アダプタが同じ順序でソース・ストリーム・メッセージをアプリケーション・メッセージに変換するという保証はまったく存在しない。したがって、サブスクライビング・クライアント・デバイスは、重複メッセージを識別するためにメッセージ・シーケンス番号（４１０、４２０）のみを当てにすることはできない。しかし、アクティブ・ソース・ストリームＩＤ（４０６）およびアクティブ・ソース・ストリーム・シーケンス番号（４０８）について特定の組み合わせの値を有するアクティブ・アプリケーション・メッセージ（４０４）の内容は、バックアップ・ソース・ストリームＩＤ（４１６）およびバックアップ・ソース・ストリーム・シーケンス番号（４１８）について同じ組み合わせの値を有するバックアップ・アプリケーション・メッセージ（４１４）の内容によって複写されるので、サブスクライビング・クライアント・デバイスは、重複メッセージを識別するためにソース・ストリームＩＤ（４０６、４１６）およびソース・ストリーム・シーケンス番号（４０８、４１０）を当てにすることができる。
【００６５】
図４の方法は、サブスクライビング・クライアント・デバイスのメッセージング・ミドルウェアでアクティブ・フィード・アダプタからアクティブ・アプリケーション・メッセージ（４０４）を受信するステップ（４２２）も含む。図４の方法によりサブスクライビング・クライアント・デバイスのメッセージング・ミドルウェアでアクティブ・フィード・アダプタからアクティブ・アプリケーション・メッセージ（４０４）を受信するステップ（４２２）は、たとえば、アクティブ・アプリケーション・メッセージ（４０４）を含む、ＴＣＰパケットまたはＵＤＰパケットなどのトランスポート・パケットを受信することと、トランスポート・パケットからそのメッセージ（４０４）をカプセル化解除することにより実行することができる。
【００６６】
図４の方法は、アクティブ・フィード・アダプタからバックアップ・フィード・アダプタへのフェイルオーバに応答して、サブスクライビング・クライアント・デバイスのメッセージング・ミドルウェアでバックアップ・フィード・アダプタからバックアップ・アプリケーション・メッセージ（４１４）を受信するステップ（４２４）も含む。フェイルオーバとは、障害が発生したアクティブ・コンポーネントから冗長バックアップ・コンポーネントに移行するプロセスである。フェイルオーバは、アクティブ・フィード・アダプタ上のハードウェアまたはソフトウェア障害、アクティブ・フィード・アダプタに接続されたネットワーク・インフラストラクチャに対する損傷、または当業者であれば思い浮かぶ任意のその他の原因の結果として発生する可能性がある。図４の方法により、アクティブ・フィード・アダプタからバックアップ・フィード・アダプタへのフェイルオーバに応答して、サブスクライビング・クライアント・デバイスのメッセージング・ミドルウェアでバックアップ・フィード・アダプタからバックアップ・アプリケーション・メッセージ（４１４）を受信するステップ（４２４）は、たとえば、バックアップ・アプリケーション・メッセージ（４１４）を含む、バックアップ・フィード・アダプタからのＴＣＰパケットまたはＵＤＰパケットなどのトランスポート・パケットを受信することと、トランスポート・パケットからそのメッセージ（４１４）をカプセル化解除することにより実行することができる。
【００６７】
図４の方法は、アクティブ・ストリーム・ソースＩＤ（４０６）と、アクティブ・ストリーム・ソース・シーケンス番号（４０８）と、バックアップ・ストリーム・ソースＩＤ（４１６）と、バックアップ・ストリーム・ソース・シーケンス番号（４１８）とに依存して、サブスクライビング・クライアント・デバイスのメッセージング・ミドルウェアにより、バックアップ・アプリケーション・メッセージ（４１４）を管理するステップ（４２６）も含む。図４の方法によりバックアップ・アプリケーション・メッセージ（４１４）を管理するステップ（４２６）は、受信したバックアップ・アプリケーション・メッセージが前に受信されたアクティブ・アプリケーション・メッセージの重複であるかどうかを識別することと、バックアップ・アプリケーション・メッセージが前に受信されたアクティブ・アプリケーション・メッセージの重複である場合にバックアップ・アプリケーション・メッセージを廃棄することにより実行することができる。サブスクライビング・クライアント・デバイスのメッセージング・ミドルウェアは、バックアップ・アプリケーション・メッセージ（４１４）のバックアップ・ソース・ストリームＩＤ（４１６）およびバックアップ・ソース・ストリーム・シーケンス番号（４１８）の値を前に受信されたアクティブ・アプリケーション・メッセージ（４０４）のアクティブ・ソース・ストリームＩＤ（４０６）およびアクティブ・ソース・ストリーム・シーケンス番号（４０８）の値と比較することにより、バックアップ・アプリケーション・メッセージが前に受信されたアクティブ・アプリケーション・メッセージの重複であるかどうかを識別することができる。前に受信されたアクティブ・アプリケーション・メッセージ（４０４）が、アクティブ・ソース・ストリームＩＤ（４０６）およびアクティブ・ソース・ストリーム・シーケンス番号（４０８）について、バックアップ・アプリケーション・メッセージ（４１４）のバックアップ・ソース・ストリームＩＤ（４１６）およびバックアップ・ソース・ストリーム・シーケンス番号（４１８）の値の組み合わせと同じ組み合わせの値を有する場合、バックアップ・アプリケーション・メッセージ（４０４）はアクティブ・アプリケーション・メッセージ（４１４）の重複である。
【００６８】
バックアップ・アプリケーション・メッセージが前に受信されたアクティブ・アプリケーション・メッセージの重複である場合にバックアップ・アプリケーション・メッセージを廃棄することにより図４の方法によりバックアップ・アプリケーション・メッセージ（４１４）を管理するステップ（４２６）を実行することは、限定のためではなく、説明のためのものであることに気付くであろう。実際に、図４の方法によりバックアップ・アプリケーション・メッセージ（４１４）を管理するステップ（４２６）は、重複バックアップ・アプリケーション・メッセージが受信されている場合に前に受信されたアクティブ・アプリケーション・メッセージを廃棄することと、ネットワーク・プロトコル・スタックのアプリケーション層で動作する追加のデータ処理のためのアプリケーション・ソフトウェアに重複バックアップ・アプリケーション・メッセージを渡すことにより実行することもできる。
【００６９】
前述の通り、フィード・アダプタは、サブスクライビング・デバイスに送信するためにソース・ストリーム・メッセージをアプリケーション・メッセージに変換する。したがって、さらに説明するために、図５は、本発明の模範的な諸実施形態により高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのための他の模範的な方法を例示する流れ図を示しており、この方法は、複数のフィード・アダプタ・ソース・ストリーム（５０２、５０６）上のアクティブ・ソース・ストリーム・メッセージ（５０４）をアクティブ・フィード・アダプタで受信するステップ（５００）と、アクティブ・フィード・アダプタにより、各アクティブ・ソース・ストリーム・メッセージ（５０４）をアクティブ・アプリケーション・メッセージ（４０４）に変換するステップ（５１２）とを含む。
【００７０】
図５の例は、第１のアクティブ・フィード・アダプタ・ソース・ストリーム（５０２）および第２のアクティブ・フィード・アダプタ・ソース・ストリーム（５０６）という２つのアクティブ・フィード・アダプタ・ソース・ストリームを含む。各アクティブ・フィード・アダプタ・ソース・ストリーム（５０２、５０６）は、フィード・ソースからアクティブ・フィード・アダプタへのメッセージ・ストリームである。フィード・ソースは、２つのアクティブ・フィード・アダプタ・ソース・ストリーム（５０２、５０６）上でアクティブ・フィード・アダプタにアクティブ・ソース・ストリーム・メッセージ（５０４）を送信する。前述の通り、単一メッセージ・ストリーム上でメッセージを送信するために必要な帯域幅は使用不能であるので、フィード・ソースは、２つ以上のメッセージ・ストリームを使用してアプリケーション・メッセージをアクティブ・フィード・アダプタに送信することができる。たとえば、金融市場データ環境では、フィード・ソースは、「Ａ」〜「Ｍ」の文字で始まる金融証券に関するティックを一方のメッセージ・ストリーム上で送信し、「Ｎ」〜「Ｚ」の文字で始まる金融証券に関するティックをもう一方のメッセージ・ストリーム上で送信することができる。冗長にするため、両方のメッセージ・ストリームをアクティブ・フィード・アダプタとバックアップ・フィード・アダプタに送信することができる。
【００７１】
図５の例では、各フィード・アダプタ・ソース・ストリーム（５０２、５０６）は、アクティブ・ソース・ストリームＩＤ（４０６）によってアクティブ・フィード・アダプタで識別される。アクティブ・ソース・ストリームＩＤ（４０６）は、それによりアクティブ・フィード・アダプタが特定のアクティブ・ソース・ストリーム・メッセージ（５０４）を受信したソース・ストリームを表す。図５の各アクティブ・ソース・ストリーム・メッセージ（５０４）は、アクティブ・ソース・ストリーム・メッセージが受信されたフィード・アダプタ・ソース・ストリーム用のアクティブ・ソース・ストリーム・シーケンス番号（４０８）によって特徴付けられる。アクティブ・ソース・ストリーム・シーケンス番号（４０８）は、特定のソース・ストリーム上でアクティブ・フィード・アダプタによって受信された数あるアクティブ・ソース・ストリーム・メッセージの中で、そのアクティブ・ソース・ストリーム・メッセージを明確に識別するシーケンス番号を表す。アクティブ・ソース・ストリーム・シーケンス番号（４０８）は、アクティブ・フィード・アダプタで受信した他のアクティブ・ソース・ストリーム・メッセージに対する特定のアクティブ・ソース・ストリーム・メッセージの相対伝送順序も提供する。
【００７２】
フィード・ソースは、典型的には、アクティブ・フィード・アダプタ・ソース・ストリーム（５０２、５０６）のそれぞれで送信されたメッセージに同じシーケンス番号を割り当てるので、アクティブ・フィード・アダプタは、アクティブ・ソース・ストリーム・シーケンス番号（４０８）のみを使用してアクティブ・ソース・ストリーム・メッセージ（５０４）を明確に識別することができない。たとえば、フィード・ソースが２つのフィード・アダプタ・ソース・ストリームによりアクティブ・フィード・アダプタにティックを提供する金融市場データ環境について検討する。フィード・ソースは、「１」というソース・ストリーム・シーケンス番号を使用して第１のフィード・アダプタ・ソース・ストリーム上で「ＩＢＭ」用のティックをアクティブ・フィード・アダプタに送信し、同じく「１」というソース・ストリーム・シーケンス番号を使用して第２のフィード・アダプタ・ソース・ストリーム上で「ＳＵＮＷ」用のティックを送信することができる。どちらのティックも「１」というソース・ストリーム・シーケンス番号を有するので、フィード・アダプタは、このソース・ストリーム・シーケンス番号のみを使用してティックを明確に識別することができない。
【００７３】
しかし、アクティブ・ソース・ストリームＩＤ（４０６）をアクティブ・ソース・ストリーム・シーケンス番号（４０８）と組み合わせると、アクティブ・ソース・ストリーム・メッセージ（５０４）を明確に識別する能力がフィード・アダプタに提供される。上記の例を続け、アクティブ・フィード・アダプタが第１のフィード・アダプタ・ソース・ストリーム用のアクティブ・ソース・ストリームＩＤ（４０６）に「１」という値を割り当て、第２のフィード・アダプタ・ソース・ストリーム用のアクティブ・ソース・ストリームＩＤ（４０６）に「２」という値を割り当てることを検討する。アクティブ・ソース・ストリームＩＤ（４０６）用の「１」という値と、アクティブ・ソース・ストリーム・シーケンス番号（４０８）用の「１」という値によって、アクティブ・フィード・アダプタ上で「ＩＢＭ」用のティックを明確に識別する。同様に、アクティブ・ソース・ストリームＩＤ（４０６）用の「２」という値と、アクティブ・ソース・ストリーム・シーケンス番号（４０８）用の「１」という値によって、アクティブ・フィード・アダプタ上で「ＳＵＮＷ」用のティックを明確に識別する。
【００７４】
図５の方法は、アクティブ・フィード・アダプタにより、各アクティブ・ソース・ストリーム・メッセージ（５０４）をアクティブ・アプリケーション・メッセージ（４０４）に変換するステップ（５１２）も含む。図５の方法により、アクティブ・フィード・アダプタにより、各アクティブ・ソース・ストリーム・メッセージ（５０４）をアクティブ・アプリケーション・メッセージ（４０４）に変換するステップ（５１２）は、各アクティブ・ソース・ストリーム・メッセージ（５０４）の内容にアクティブ・フィード・アダプタ内でそのアクティブ・ソース・ストリーム・メッセージ（５０４）が受信されたフィード・アダプタ・ソース・ストリーム用のアクティブ・ソース・ストリームＩＤ（４０６）の値とアクティブ・メッセージ・シーケンス番号（４１０）とを追加するステップ（５１４）を含む。図５の方法では、アクティブ・フィード・アダプタにより、各アクティブ・ソース・ストリーム・メッセージ（５０４）をアクティブ・アプリケーション・メッセージ（４０４）に変換するステップ（５１２）は、第１のフォーマットを有するソース・ストリーム・メッセージ（５０４）を第２のフォーマットを有するアプリケーション・メッセージ（４０４）に変換することができるコンバータ機能を呼び出すことにより実行することもできる。アプリケーション・メッセージ（４０４）の第２のフォーマットは、メッセージ・モデル（５１０）を使用して指定される。前述の通り、メッセージ・モデル（５１０）は、アクティブ・フィード・アダプタがアクティブ・ソース・ストリーム・メッセージ（５０４）を変換するアクティブ・アプリケーション・メッセージ（４０４）の構造およびフォーマットを定義するメタデータを表す。
【００７５】
上記で説明した通り、図５のアクティブ・アプリケーション・メッセージ（４０４）は、アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスによって受信されたアプリケーション・メッセージを表す。アクティブ・アプリケーション・メッセージ（４０４）は、アクティブ・フィード・アダプタが、メッセージ・モデル（５１０）に応じて複数のフィード・アダプタ・ソース・ストリーム（５０２、５０６）上で到着したアクティブ・ソース・ストリーム・メッセージ（５０４）を変換した結果得られるものである。図５の各アクティブ・アプリケーション・メッセージ（４０４）は、アクティブ・ソース・ストリームＩＤ（４０６）と、アクティブ・ソース・ストリーム・シーケンス番号（４０８）と、アクティブ・メッセージ・シーケンス番号（４１０）とによって特徴付けられる。
【００７６】
図５の方法は、アクティブ・フィード・アダプタ、複数のフィード・アダプタ・ソース・ストリーム上のアクティブ・ソース・ストリーム・メッセージ、アクティブ・ソース・ストリームＩＤ、アクティブ・ソース・ストリーム・シーケンス番号、アクティブ・アプリケーション・メッセージ、アクティブ・メッセージ・シーケンス番号などに関連して説明されている。しかし、バックアップ・フィード・アダプタで複数のフィード・アダプタ・ソース・ストリーム上のバックアップ・ソース・ストリーム・メッセージを受信するステップであって、各フィード・アダプタ・ソース・ストリームがバックアップ・ソース・ストリームＩＤによってバックアップ・フィード・アダプタ内で識別され、各バックアップ・ソース・ストリーム・メッセージが、そのバックアップ・ソース・ストリーム・メッセージが受信されたフィード・アダプタ・ソース・ストリーム用のバックアップ・ソース・ストリーム・シーケンス番号によって特徴付けられるステップと、バックアップ・フィード・アダプタにより各バックアップ・ソース・ストリーム・メッセージをバックアップ・アプリケーション・メッセージに変換するステップであって、各バックアップ・ソース・ストリーム・メッセージの内容にバックアップ・フィード・アダプタ内でそのバックアップ・ソース・ストリーム・メッセージが受信されたフィード・アダプタ・ソース・ストリーム用のバックアップ・ソース・ストリームＩＤの値とバックアップ・メッセージ・シーケンス番号とを追加することを含むステップとを含む、高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのための模範的な方法は、図５の方法と同様に機能することに気付くであろう。
【００７７】
多くの場合、アクティブ・フィード・アダプタは、そのアクティブ・フィード・アダプタがサブスクライビング・クライアント・デバイスに渡す管理メッセージをフィード・ソースから受信する。サブスクライビング・クライアント・デバイスはアクティブ・フィード・アダプタとバックアップ・フィード・アダプタの両方から同じ相対伝送順序で管理メッセージを入手できる必要があるので、アクティブ・フィード・アダプタは、サブスクライビング・クライアント・デバイスへの管理メッセージの配信をバックアップ・フィード・アダプタに同期させる。したがって、さらに説明するために、図６は、本発明の諸実施形態により高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのための他の模範的な方法を例示する流れ図を示しており、この方法は、アクティブ・フィード・アダプタにより、管理アプリケーション・メッセージ（６１０）と、アクティブ・フィード・アダプタがサブスクライビング・クライアント・デバイスに管理アプリケーション・メッセージ（６１０）を送信するときに送信シーケンス内のポイントを指定するアクティブ・メッセージ・シーケンス番号（６１２）用の値とをバックアップ・フィード・アダプタに送信するステップ（６１４）を含む。
【００７８】
図６の方法は、アクティブ・フィード・アダプタでフィード・アダプタ・ソース・ストリーム（６０４）上の管理ソース・ストリーム・メッセージ（６０２）を受信するステップ（６００）を含む。フィード・アダプタ・ソース・ストリーム（６０４）は、フィード・ソースからアクティブ・フィード・アダプタへのメッセージ・ストリームを表す。管理ソース・ストリーム・メッセージ（６０２）は、フィード・ソースからフィード・アダプタに伝達された管理情報を含むソース・ストリーム・メッセージを表す。管理情報の例としては、フィード・ソースが午後５時にシャットダウンすることを示す情報、１００以上のメッセージの後でソース・ストリーム・シーケンス番号が「１０００」にリセットされることを示す情報、フィード・ソースでフェイルオーバが発生したことを示す情報、ならびに当業者であれば思い浮かぶ任意のその他の管理情報を含むことができる。
【００７９】
図６の方法は、アクティブ・フィード・アダプタにより、管理ソース・ストリーム・メッセージ（６０２）を管理アプリケーション・メッセージ（６１０）に変換するステップ（６０６）も含む。図６の管理アプリケーション・メッセージ（６１０）は、サブスクライビング・クライアント・デバイスに送信するためにフィード・アダプタがメッセージ・モデルに応じて変換した管理ソース・ストリーム・メッセージを表す。図６の方法により、アクティブ・フィード・アダプタにより、管理ソース・ストリーム・メッセージ（６０２）を管理アプリケーション・メッセージ（６１０）に変換するステップ（６０６）は、第１のフォーマットを有するソース・ストリーム・メッセージを第２のフォーマットを有するアプリケーション・メッセージに変換することができるコンバータ機能を呼び出すことにより実行することもできる。管理アプリケーション・メッセージ（６１０）のフォーマットである第２のフォーマットは、メッセージ・モデル（６２０）を使用して指定される。前述の通り、メッセージ・モデル（６２０）は、アクティブ・フィード・アダプタが管理ソース・ストリーム・メッセージ（６０２）を変換する管理アプリケーション・メッセージ（６１０）の構造およびフォーマットを定義するメタデータを表す。
【００８０】
図６の方法では、アクティブ・フィード・アダプタにより、管理ソース・ストリーム・メッセージ（６０２）を管理アプリケーション・メッセージ（６１０）に変換するステップ（６０６）は、アクティブ・フィード・アダプタがサブスクライビング・クライアント・デバイスに管理アプリケーション・メッセージ（６１０）を送信するときに送信シーケンス内のポイントを指定するアクティブ・メッセージ・シーケンス番号（６１２）用の値を識別するステップ（６０８）を含む。図６の方法によりアクティブ・メッセージ・シーケンス番号（６１２）を識別するステップ（６０８）は、アクティブ・フィード・アダプタによって処理された最新アプリケーション・メッセージのアクティブ・メッセージ・シーケンス番号用の値を識別することと、識別された値に所定の数を加えることにより実行することができる。この所定の数は、バックアップ・フィード・アダプタがアクティブ・フィード・アダプタと同期できるようにするために送信シーケンス内で十分先行するポイントを指定するアクティブ・メッセージ・シーケンス番号（６１２）用の値を発生するのに十分な大きさでなければならない。
【００８１】
図６の方法は、アクティブ・フィード・アダプタにより、管理アプリケーション・メッセージ（６１０）と、識別されたアクティブ・メッセージ・シーケンス番号（６１２）用の値とをバックアップ・フィード・アダプタに送信するステップ（６１４）も含む。図６の方法により、アクティブ・フィード・アダプタにより、管理アプリケーション・メッセージ（６１０）と、識別されたアクティブ・メッセージ・シーケンス番号（６１２）用の値とをバックアップ・フィード・アダプタに送信するステップ（６１４）は、ＣＯＲＢＡオブジェクトのメンバ・メソッドを呼び出し、Ｊａｖａ  ＲＭＩ  ＡＰＩを使用してリモート・オブジェクトのメンバ・メソッドを呼び出し、Ｗｅｂサービスまたは当業者であれば思い浮かぶ任意のその他の通信実装例を使用することにより、管理アプリケーション・メッセージ（６１０）と、識別されたアクティブ・メッセージ・シーケンス番号（６１２）用の値とを送信することにより実行することができる。
【００８２】
図６の方法は、アクティブ・フィード・アダプタにより、アクティブ・メッセージ・シーケンス番号（６１２）によって識別された送信シーケンス内のポイントでアクティブ・メッセージ・ストリーム上の管理アプリケーション・メッセージ（６１０）をサブスクライビング・クライアント・デバイスに送信するステップ（６１６）も含む。アクティブ・フィード・アダプタにより、アクティブ・メッセージ・シーケンス番号（６１２）によって識別された送信シーケンス内のポイントでアクティブ・メッセージ・ストリーム上の管理アプリケーション・メッセージ（６１０）をサブスクライビング・クライアント・デバイスに送信するステップ（６１６）は、送信用の現行メッセージ（６１８）の値がアクティブ・メッセージ・シーケンス番号（６１２）の値と一致するときに、管理アプリケーション・メッセージ（６１０）を、たとえば、ＴＣＰパケットまたはＵＤＰパケットなどのトランスポート・パケットにカプセル化することと、たとえば、ＴＣＰ／ＩＰプロトコルまたはＵＤＰ／ＩＰプロトコルを使用してサブスクライビング・クライアント・デバイスにトランスポート・パケットを送信することにより実行することができる。送信用の現行メッセージ（６１８）は、送信のためにアクティブ・フィード・アダプタによって処理中の現行アプリケーション・メッセージのアクティブ・メッセージ・シーケンス番号を保管することにより、サブスクライビング・クライアント・デバイスに送信するためにアクティブ・フィード・アダプタによって処理中の現行アプリケーション・メッセージを指定するコンピュータ・メモリ内の位置である。
【００８３】
前述の通り、サブスクライビング・クライアント・デバイスへの管理アプリケーション・メッセージの送信を同期させるために、アクティブ・フィード・アダプタは管理アプリケーション・メッセージとアクティブ・メッセージ・シーケンス番号用の値とをバックアップ・フィード・アダプタに送信する。したがって、さらに説明するために、図７は、本発明の諸実施形態により高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのための他の模範的な方法を例示する流れ図を示しており、この方法は、管理アプリケーション・メッセージ（６１０）と、アクティブ・フィード・アダプタがサブスクライビング・クライアント・デバイスに管理アプリケーション・メッセージ（６１０）を送信するときに送信シーケンス内のポイントを指定するアクティブ・メッセージ・シーケンス番号（６１２）用の値とをアクティブ・フィード・アダプタからバックアップ・フィード・アダプタで受信するステップ（７００）を含む。図７の管理アプリケーション・メッセージ（６１０）は、サブスクライビング・クライアント・デバイスに送信するためにフィード・アダプタがメッセージ・モデルに応じて変換した管理ソース・ストリーム・メッセージを表す。
【００８４】
図７の方法は、バックアップ・フィード・アダプタにより、管理アプリケーション・メッセージ（６１０）を受信する前にバックアップ・フィード・アダプタ内で処理された最新バックアップ・アプリケーション・メッセージのバックアップ・メッセージ・シーケンス番号（７０４）用の値を識別するステップ（７０２）も含む。バックアップ・フィード・アダプタにより、管理アプリケーション・メッセージ（６１０）を受信する前にバックアップ・フィード・アダプタ内で処理された最新バックアップ・アプリケーション・メッセージのバックアップ・メッセージ・シーケンス番号（７０４）用の値を識別するステップ（７０２）は、バックアップ・フィード・アダプタがアクティブ・フィード・アダプタから管理アプリケーション・メッセージ（６１０）を受信するときに処理用の現行メッセージ（７０１）から値を取り出すことにより実行することができる。図７の処理用の現行メッセージ（７０１）は、バックアップ・フィード・アダプタによって処理中の現行メッセージのバックアップ・メッセージ・シーケンス番号用の値を保管することにより、バックアップ・フィード・アダプタによって処理中の現行メッセージを指定するコンピュータ・メモリ内の位置である。
【００８５】
図７の方法は、バックアップ・フィード・アダプタにより、受信したアクティブ・メッセージ・シーケンス番号（６１２）用の値と、クライアント・デバイスに送信された最新メッセージのバックアップ・シーケンス番号（７０４）用の値と、所定の同期シーケンス番号しきい値（７０６）とに依存して、バックアップ・フィード・アダプタがバックアップ・メッセージ・ストリーム上のサブスクライビング・クライアント・デバイスへの管理アプリケーション・メッセージ（６１０）の送信を同期させることができるかどうかを判断するステップ（７０８）も含む。この所定の同期シーケンス番号しきい値（７０６）は、バックアップ・フィード・アダプタが管理アプリケーション・メッセージ（６１０）の送信をアクティブ・フィード・アダプタによる管理アプリケーション・メッセージ（６１０）の送信に同期させるのに十分な時間を有するように、受信したアクティブ・メッセージ・シーケンス番号（６１２）用の値が送信シーケンス内で十分先行するかどうかを指定する値である。
【００８６】
図７の方法では、バックアップ・フィード・アダプタがバックアップ・メッセージ・ストリーム上のサブスクライビング・クライアント・デバイスへの管理アプリケーション・メッセージ（６１０）の送信を同期させることができるかどうかを判断するステップ（７０８）は、所定の同期シーケンス番号しきい値（７０６）を、受信したアクティブ・メッセージ・シーケンス番号（６１２）用の値とクライアント・デバイスに送信された最新メッセージのバックアップ・シーケンス番号（７０４）用の値との差と比較することにより実行することができる。このような模範的な一実施形態では、所定の同期シーケンス番号しきい値（７０６）が、受信したアクティブ・メッセージ・シーケンス番号（６１２）用の値とクライアント・デバイスに送信された最新メッセージのバックアップ・シーケンス番号（７０４）用の値との差を超える場合、バックアップ・フィード・アダプタはバックアップ・メッセージ・ストリーム上のサブスクライビング・クライアント・デバイスへの管理アプリケーション・メッセージ（６１０）の送信を同期させることができる。しかし、このような模範的な一実施形態では、所定の同期シーケンス番号しきい値（７０６）が、受信したアクティブ・メッセージ・シーケンス番号（６１２）用の値とクライアント・デバイスに送信された最新メッセージのバックアップ・シーケンス番号（７０４）用の値との差を超えない場合、バックアップ・フィード・アダプタはバックアップ・メッセージ・ストリーム上のサブスクライビング・クライアント・デバイスへの管理アプリケーション・メッセージ（６１０）の送信を同期させることができない。
【００８７】
図７の方法は、バックアップ・フィード・アダプタがバックアップ・メッセージ・ストリーム上のサブスクライビング・クライアント・デバイスへの管理アプリケーション・メッセージの送信を同期させることができるときに、バックアップ・フィード・アダプタにより、アクティブ・メッセージ・シーケンス番号（６１２）の値と一致する値を有する管理アプリケーション・メッセージ（６１０）の内容にバックアップ・メッセージ・シーケンス番号（７１８）を追加するステップ（７１０）と、バックアップ・フィード・アダプタにより、他のバックアップ・アプリケーション・メッセージに続いて管理アプリケーション・メッセージ（６１０）をサブスクライビング・クライアント・デバイスに送信するステップ（７１２）とを含む。図７の方法では、バックアップ・フィード・アダプタにより、アクティブ・メッセージ・シーケンス番号（６１２）の値と一致する値を有する管理アプリケーション・メッセージ（６１０）の内容にバックアップ・メッセージ・シーケンス番号（７１８）を追加するステップ（７１０）は、管理アプリケーション・メッセージ（６１０）のフォーマットを指定するメッセージ・モデルを使用してバックアップ・メッセージ・シーケンス番号（７１８）に対応する管理アプリケーション・メッセージ（６１０）のデータ・フィールドにアクティブ・メッセージ・シーケンス番号（６１２）の値を保管することにより実行することができる。
【００８８】
図７の方法では、バックアップ・フィード・アダプタにより、他のバックアップ・アプリケーション・メッセージに続いて管理アプリケーション・メッセージ（６１０）をサブスクライビング・クライアント・デバイスに送信するステップ（７１２）は、送信用の現行メッセージ（７１１）の値がメッセージ（６１０）に追加されたバックアップ・メッセージ・シーケンス番号（７１８）の値と一致するときに、管理アプリケーション・メッセージ（６１０）を、たとえば、ＴＣＰパケットまたはＵＤＰパケットなどのトランスポート・パケットにカプセル化することと、たとえば、ＴＣＰ／ＩＰプロトコルまたはＵＤＰ／ＩＰプロトコルを使用してサブスクライビング・クライアント・デバイスにトランスポート・パケットを送信することにより実行することができる。送信用の現行メッセージ（７１１）は、送信のためにバックアップ・フィード・アダプタによって処理中の現行アプリケーション・メッセージのバックアップ・メッセージ・シーケンス番号を保管することにより、サブスクライビング・クライアント・デバイスに送信するためにアクティブ・フィード・アダプタによって処理中の現行アプリケーション・メッセージを指定するコンピュータ・メモリ内の位置である。
【００８９】
図７の方法は、バックアップ・フィード・アダプタがバックアップ・メッセージ・ストリーム上のサブスクライビング・クライアント・デバイスへの管理アプリケーション・メッセージの送信を同期させることができないときに、バックアップ・フィード・アダプタにより、バックアップ・フィード・アダプタがサブスクライビング・クライアント・デバイスにバックアップ・アプリケーション・メッセージを送信する伝送速度を減速するステップ（７１４）と、バックアップ・フィード・アダプタにより、サブスクライビング・クライアント・デバイスへの管理アプリケーション・メッセージの送信を同期させるために他のメッセージ・シーケンス番号についてアクティブ・フィード・アダプタと折衝するステップ（７１６）も含む。図７の方法では、バックアップ・フィード・アダプタにより、バックアップ・フィード・アダプタがサブスクライビング・クライアント・デバイスにバックアップ・アプリケーション・メッセージを送信する伝送速度を減速するステップ（７１４）は、所定の期間の間、バックアップ・アプリケーション・メッセージの送信を反復休止することにより実行することができる。バックアップ・フィード・アダプタは、各バックアップ・アプリケーション・メッセージの送信後に、他のすべてのバックアップ・アプリケーション・メッセージの送信後に、または当業者であれば思い浮かぶ任意のその他の頻度で、送信を休止することができる。
【００９０】
図７の方法では、バックアップ・フィード・アダプタにより、サブスクライビング・クライアント・デバイスへの管理アプリケーション・メッセージの送信を同期させるために他のメッセージ・シーケンス番号についてアクティブ・フィード・アダプタと折衝するステップ（７１６）は、管理アプリケーション・メッセージ（６１０）の送信をアクティブ・フィード・アダプタによる管理アプリケーション・メッセージ（６１０）の送信と同期させるために使用されるアクティブ・メッセージ・シーケンス番号（６１２）用の他の値を提供するようアクティブ・フィード・アダプタに求める要求をアクティブ・フィード・アダプタに送信することにより実行することができる。図７の方法により、バックアップ・フィード・アダプタにより、サブスクライビング・クライアント・デバイスへの管理アプリケーション・メッセージの送信を同期させるために他のメッセージ・シーケンス番号についてアクティブ・フィード・アダプタと折衝するステップ（７１６）は、バックアップ・フィード・アダプタが管理アプリケーション・メッセージ（６１０）の送信をアクティブ・フィード・アダプタによる管理アプリケーション・メッセージ（６１０）の送信と同期させるための時間を提供するように、アクティブ・フィード・アダプタがサブスクライビング・クライアント・デバイスに管理アプリケーション・メッセージ（６１０）を送信するときに送信シーケンス内のポイントを指定するアクティブ・メッセージ・シーケンス番号（６１２）用の新しい値を識別することにより実行することもできる。図７の方法により、バックアップ・フィード・アダプタにより、サブスクライビング・クライアント・デバイスへの管理アプリケーション・メッセージの送信を同期させるために他のメッセージ・シーケンス番号についてアクティブ・フィード・アダプタと折衝するステップ（７１６）はさらに、アクティブ・メッセージ・シーケンス番号（６１２）用の新しい値をアクティブ・フィード・アダプタに送信することにより実行することもできる。
【００９１】
本明細書において上記で示した説明を考慮すると、本発明の諸実施形態により高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングを実施すると、以下の利点が得られることを認識するであろう。
●サブスクライビング・クライアント・デバイスは、重複バックアップ・アプリケーション・メッセージを識別するためにすべての受信したアクティブ・アプリケーション・メッセージおよび受信したバックアップ・アプリケーション・メッセージの内容全体を調べる必要はないので、フェイルオーバ後のデータ回復のパフォーマンスが増加する。
●サブスクライビング・クライアント・デバイスは、メッセージがアクティブ・フィード・アダプタから受信されたか、フェイルオーバ後にバックアップ・フィード・アダプタから受信されたかにかかわらず、他のアプリケーション・メッセージに対する同じ相対順序で管理アプリケーション・メッセージを受信することができる。
【００９２】
本発明の模範的な諸実施形態は、主に、高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのために完全に機能しうるコンピュータ・システムに関連して記載されている。しかし、当業者であれば、本発明は、任意の適切なデータ処理システムで使用するための信号伝送媒体上に配置されたコンピュータ・プログラム（computer program product）で実施可能であることも認識するであろう。このような信号伝送媒体は、磁気媒体、光学媒体、またはその他の適切な媒体を含む、機械可読情報用の伝送媒体または記録可能媒体にすることができる。記録可能媒体の例としては、ハード・ドライブまたはディスケット内の磁気ディスク、光学式ドライブ用のコンパクト・ディスク、磁気テープ、および当業者であれば思い浮かぶその他のものを含む。伝送媒体の例としては、音声通信用の電話網、たとえば、イーサネット（Ｒ）などのデジタル・データ通信ネットワーク、インターネット・プロトコルやワールド・ワイド・ウェブと通信するネットワーク、ならびに、たとえば、ＩＥＥＥ８０２．１１系の規格に応じて実装されたネットワークなどのワイヤレス伝送媒体を含む。当業者であれば、適切なプログラミング手段を有する任意のコンピュータ・システムは１つのプログラムで実施された本発明の方法の諸ステップを実行できることを直ちに認識するであろう。当業者であれば、本明細書に記載された模範的な諸実施形態のいくつかはコンピュータ・ハードウェアにインストールされ、そこで実行されるソフトウェアに向いているが、それにもかかわらず、ファームウェアまたはハードウェアとして実装された代替諸実施形態も本発明の範囲内であることを直ちに認識するであろう。
【００９３】
その真の精神から逸脱せずに、本発明の様々な諸実施形態において修正および変更が可能であることは、上記の説明から理解されるであろう。本明細書における説明は、例示のみのためのものであり、限定的な意味で解釈すべきものではない。本発明の範囲は、特許請求の範囲の言語のみによって制限される。
【図面の簡単な説明】
【００９４】
【図１】データ通信用の典型的なメッセージング環境を例示するブロック図である。
【図２】本発明の模範的な諸実施形態により高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのための模範的なコンピュータ・データ処理システムを例示するネットワークおよびブロック図である。
【図３】本発明の模範的な諸実施形態により高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングで有用なサブスクライビング・クライアント・デバイスの一例を含む自動コンピューティング・マシンのブロック図である。
【図４】本発明の模範的な諸実施形態により高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのための模範的な方法を例示する流れ図である。
【図５】本発明の模範的な諸実施形態により高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのための他の模範的な方法を例示する流れ図である。
【図６】本発明の模範的な諸実施形態により高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのための他の模範的な方法を例示する流れ図である。
【図７】本発明の模範的な諸実施形態により高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのための他の模範的な方法を例示する流れ図である。
【図１】
2009542140.tif 000003
【図２】
2009542140.tif 000004
【図３】
2009542140.tif 000005
【図４】
2009542140.tif 000006
【図５】
2009542140.tif 000007
【図６】
2009542140.tif 000008
【図７】
2009542140.tif 000009
【手続補正書】
【提出日】平成21年2月17日(2009.2.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのための方法であって、
ストリーム管理サーバにより、アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのアクティブ・メッセージ・ストリームの確立を仲介するステップであって、前記アクティブ・メッセージ・ストリームがアクティブ・アプリケーション・メッセージを伝達することができ、各アクティブ・アプリケーション・メッセージがアクティブ・ソース・ストリームＩＤと、アクティブ・ソース・ストリーム・シーケンス番号と、アクティブ・メッセージ・シーケンス番号とによって特徴付けられるステップと、
前記ストリーム管理サーバにより、バックアップ・フィード・アダプタから前記サブスクライビング・クライアント・デバイスへのバックアップ・メッセージ・ストリームの確立を仲介するステップであって、前記バックアップ・メッセージ・ストリームが前記アクティブ・アプリケーション・メッセージの重複を表すバックアップ・アプリケーション・メッセージを伝達することができ、各バックアップ・アプリケーション・メッセージがバックアップ・ソース・ストリームＩＤと、バックアップ・ソース・ストリーム・シーケンス番号と、バックアップ・メッセージ・シーケンス番号とによって特徴付けられるステップと、
前記サブスクライビング・クライアント・デバイスのメッセージング・ミドルウェアで前記アクティブ・フィード・アダプタから前記アクティブ・アプリケーション・メッセージを受信するステップと、
前記アクティブ・フィード・アダプタから前記バックアップ・フィード・アダプタへのフェイルオーバに応答して、前記サブスクライビング・クライアント・デバイスの前記メッセージング・ミドルウェアで前記バックアップ・フィード・アダプタから前記バックアップ・アプリケーション・メッセージを受信するステップと、
前記アクティブ・ストリーム・ソースＩＤと、前記アクティブ・ストリーム・ソース・シーケンス番号と、前記バックアップ・ストリーム・ソースＩＤと、前記バックアップ・ストリーム・ソース・シーケンス番号とに依存して、前記サブスクライビング・クライアント・デバイスの前記メッセージング・ミドルウェアにより、前記バックアップ・アプリケーション・メッセージを管理するステップと、
を含む、前記方法。
【請求項２】
前記バックアップ・アプリケーション・メッセージのうちの少なくともいくつかが、前記サブスクライビング・クライアント・デバイスの前記メッセージング・ミドルウェアで前に受信されたアクティブ・アプリケーション・メッセージの重複を表す、請求項１に記載の方法。
【請求項３】
前記高速短待ち時間データ通信環境が高速短待ち時間データ通信ネットワークを含み、前記ネットワークが、前記アクティブ・フィード・アダプタと、前記バックアップ・フィード・アダプタと、前記ストリーム管理サーバと、少なくとも１つのサブスクライビング・クライアント・デバイスとをさらに含み、ルータをまったく含まない、請求項１または２に記載の方法。
【請求項４】
各フィード・アダプタが、第１のフォーマットを有するフィード・アダプタ・ソース・ストリーム上のメッセージを第２のフォーマットを有するフィード・アダプタ出力ストリーム上のメッセージに変換し、前記フィード・アダプタ出力ストリーム上の前記メッセージをサブスクライビング・クライアント・デバイスに送信する機能を有するデバイスを含む、請求項１、２，または３に記載の方法。
【請求項５】
前記アクティブ・フィード・アダプタで複数のフィード・アダプタ・ソース・ストリーム上のアクティブ・ソース・ストリーム・メッセージを受信するステップであって、各フィード・アダプタ・ソース・ストリームがアクティブ・ソース・ストリームＩＤによって前記アクティブ・フィード・アダプタ内で識別され、各アクティブ・ソース・ストリーム・メッセージが、前記アクティブ・ソース・ストリーム・メッセージが受信された前記フィード・アダプタ・ソース・ストリーム用のアクティブ・ソース・ストリーム・シーケンス番号によって特徴付けられるステップと、
前記アクティブ・フィード・アダプタにより、各アクティブ・ソース・ストリーム・メッセージをアクティブ・アプリケーション・メッセージに変換するステップであって、各アクティブ・ソース・ストリーム・メッセージの内容に前記アクティブ・フィード・アダプタ内で前記アクティブ・ソース・ストリーム・メッセージが受信された前記フィード・アダプタ・ソース・ストリーム用の前記アクティブ・ソース・ストリームＩＤとアクティブ・メッセージ・シーケンス番号とを追加することを含むステップと、
をさらに含む、請求項１、２、３、または４に記載の方法。
【請求項６】
前記バックアップ・フィード・アダプタで複数のフィード・アダプタ・ソース・ストリーム上のバックアップ・ソース・ストリーム・メッセージを受信するステップであって、各フィード・アダプタ・ソース・ストリームがバックアップ・ソース・ストリームＩＤによって前記バックアップ・フィード・アダプタ内で識別され、各バックアップ・ソース・ストリーム・メッセージが、前記バックアップ・ソース・ストリーム・メッセージが受信された前記フィード・アダプタ・ソース・ストリーム用のバックアップ・ソース・ストリーム・シーケンス番号によって特徴付けられるステップと、
前記バックアップ・フィード・アダプタにより、各バックアップ・ソース・ストリーム・メッセージをバックアップ・アプリケーション・メッセージに変換するステップであって、各バックアップ・ソース・ストリーム・メッセージの内容に前記バックアップ・フィード・アダプタ内で前記バックアップ・ソース・ストリーム・メッセージが受信された前記フィード・アダプタ・ソース・ストリーム用の前記バックアップ・ソース・ストリームＩＤとバックアップ・メッセージ・シーケンス番号とを追加することを含むステップと、
をさらに含む、請求項１ないし５のいずれかに記載の方法。
【請求項７】
前記アクティブ・フィード・アダプタでフィード・アダプタ・ソース・ストリーム上の管理ソース・ストリーム・メッセージを受信するステップと、
前記アクティブ・フィード・アダプタにより、前記管理ソース・ストリーム・メッセージを管理アプリケーション・メッセージに変換するステップであって、前記アクティブ・フィード・アダプタが前記サブスクライビング・クライアント・デバイスに前記管理アプリケーション・メッセージを送信するときに送信シーケンス内のポイントを指定するアクティブ・メッセージ・シーケンス番号を識別することを含むステップと、
前記アクティブ・フィード・アダプタにより、前記管理アプリケーション・メッセージと前記識別されたアクティブ・メッセージ・シーケンス番号とを前記バックアップ・フィード・アダプタに送信するステップと、
前記アクティブ・フィード・アダプタにより、前記アクティブ・メッセージ・シーケンス番号によって識別された前記送信シーケンス内の前記ポイントで前記アクティブ・メッセージ・ストリーム上の前記管理アプリケーション・メッセージを前記サブスクライビング・クライアント・デバイスに送信するステップと、
をさらに含む、請求項１ないし６のいずれかに記載の方法。
【請求項８】
管理アプリケーション・メッセージと、前記アクティブ・フィード・アダプタが前記サブスクライビング・クライアント・デバイスに前記管理アプリケーション・メッセージを送信するときに送信シーケンス内のポイントを指定するアクティブ・メッセージ・シーケンス番号とを前記アクティブ・フィード・アダプタから前記バックアップ・フィード・アダプタで受信するステップと、
前記バックアップ・フィード・アダプタにより、前記管理アプリケーション・メッセージを受信する前に前記バックアップ・フィード・アダプタ内で処理された最新バックアップ・アプリケーション・メッセージのバックアップ・メッセージ・シーケンス番号を識別するステップと、
前記バックアップ・フィード・アダプタにより、前記受信したアクティブ・メッセージ・シーケンス番号と、前記クライアント・デバイスに送信された前記最新メッセージの前記バックアップ・シーケンス番号と、所定の同期シーケンス番号しきい値とに依存して、前記バックアップ・フィード・アダプタが前記バックアップ・メッセージ・ストリーム上の前記サブスクライビング・クライアント・デバイスへの前記管理アプリケーション・メッセージの送信を同期させることができるかどうかを判断するステップと、
をさらに含む、請求項１ないし７のいずれかに記載の方法。
【請求項９】
前記バックアップ・フィード・アダプタが前記バックアップ・メッセージ・ストリーム上の前記サブスクライビング・クライアント・デバイスへの前記管理アプリケーション・メッセージの送信を同期させることができ、
前記バックアップ・フィード・アダプタにより、前記アクティブ・メッセージ・シーケンス番号の値と一致する値を有する前記管理アプリケーション・メッセージの内容にバックアップ・メッセージ・シーケンス番号を追加するステップと、
前記バックアップ・フィード・アダプタにより、他のバックアップ・アプリケーション・メッセージに続いて前記管理アプリケーション・メッセージを前記サブスクライビング・クライアント・デバイスに送信するステップと、
をさらに含む、請求項８に記載の方法。
【請求項１０】
前記バックアップ・フィード・アダプタが前記バックアップ・メッセージ・ストリーム上の前記サブスクライビング・クライアント・デバイスへの前記管理アプリケーション・メッセージの送信を同期させることができず、
前記バックアップ・フィード・アダプタにより、前記バックアップ・フィード・アダプタが前記サブスクライビング・クライアント・デバイスに前記バックアップ・アプリケーション・メッセージを送信する伝送速度を減速するステップと、
前記バックアップ・フィード・アダプタにより、前記サブスクライビング・クライアント・デバイスへの前記管理アプリケーション・メッセージの送信を同期させるために他のメッセージ・シーケンス番号について前記アクティブ・フィード・アダプタと折衝するステップと、
をさらに含む、請求項８に記載の方法。
【請求項１１】
高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのための装置であって、１つ以上のコンピュータ・プロセッサと、前記１つ以上のコンピュータ・プロセッサに動作可能に結合された１つ以上のコンピュータ・メモリとを含み、
ストリーム管理サーバにより、アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのアクティブ・メッセージ・ストリームの確立を仲介するステップであって、前記アクティブ・メッセージ・ストリームがアクティブ・アプリケーション・メッセージを伝達することができ、各アクティブ・アプリケーション・メッセージがアクティブ・ソース・ストリームＩＤと、アクティブ・ソース・ストリーム・シーケンス番号と、アクティブ・メッセージ・シーケンス番号とによって特徴付けられるステップと、
前記ストリーム管理サーバにより、バックアップ・フィード・アダプタから前記サブスクライビング・クライアント・デバイスへのバックアップ・メッセージ・ストリームの確立を仲介するステップであって、前記バックアップ・メッセージ・ストリームが前記アクティブ・アプリケーション・メッセージの重複を表すバックアップ・アプリケーション・メッセージを伝達することができ、各バックアップ・アプリケーション・メッセージがバックアップ・ソース・ストリームＩＤと、バックアップ・ソース・ストリーム・シーケンス番号と、バックアップ・メッセージ・シーケンス番号とによって特徴付けられるステップと、
前記サブスクライビング・クライアント・デバイスのメッセージング・ミドルウェアで前記アクティブ・フィード・アダプタから前記アクティブ・アプリケーション・メッセージを受信するステップと、
前記アクティブ・フィード・アダプタから前記バックアップ・フィード・アダプタへのフェイルオーバに応答して、前記サブスクライビング・クライアント・デバイスの前記メッセージング・ミドルウェアで前記バックアップ・フィード・アダプタから前記バックアップ・アプリケーション・メッセージを受信するステップと、
前記アクティブ・ストリーム・ソースＩＤと、前記アクティブ・ストリーム・ソース・シーケンス番号と、前記バックアップ・ストリーム・ソースＩＤと、前記バックアップ・ストリーム・ソース・シーケンス番号とに依存して、前記サブスクライビング・クライアント・デバイスの前記メッセージング・ミドルウェアにより、前記バックアップ・アプリケーション・メッセージを管理するステップと、
を実行できるコンピュータ・プログラム命令が前記コンピュータ・メモリ内に配置されている、前記装置。
【請求項１２】
前記バックアップ・アプリケーション・メッセージのうちの少なくともいくつかが、前記サブスクライビング・クライアント・デバイスの前記メッセージング・ミドルウェアで前に受信されたアクティブ・アプリケーション・メッセージの重複を表す、請求項１１に記載の装置。
【請求項１３】
前記高速短待ち時間データ通信環境が高速短待ち時間データ通信ネットワークを含み、前記ネットワークが、前記アクティブ・フィード・アダプタと、前記バックアップ・フィード・アダプタと、前記ストリーム管理サーバと、少なくとも１つのサブスクライビング・クライアント・デバイスとをさらに含み、ルータをまったく含まない、請求項１１または１２に記載の装置。
【請求項１４】
各フィード・アダプタが、第１のフォーマットを有するフィード・アダプタ・ソース・ストリーム上のメッセージを第２のフォーマットを有するフィード・アダプタ出力ストリーム上のメッセージに変換し、前記フィード・アダプタ出力ストリーム上の前記メッセージをサブスクライビング・クライアント・デバイスに送信する機能を有するデバイスを含む、請求項１１、１２，または１３に記載の装置。
【請求項１５】
高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのためのコンピュータ・プログラムであって、コンピュータに、
ストリーム管理サーバにより、アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのアクティブ・メッセージ・ストリームの確立を仲介するステップであって、前記アクティブ・メッセージ・ストリームがアクティブ・アプリケーション・メッセージを伝達することができ、各アクティブ・アプリケーション・メッセージがアクティブ・ソース・ストリームＩＤと、アクティブ・ソース・ストリーム・シーケンス番号と、アクティブ・メッセージ・シーケンス番号とによって特徴付けられるステップと、
前記ストリーム管理サーバにより、バックアップ・フィード・アダプタから前記サブスクライビング・クライアント・デバイスへのバックアップ・メッセージ・ストリームの確立を仲介するステップであって、前記バックアップ・メッセージ・ストリームが前記アクティブ・アプリケーション・メッセージの重複を表すバックアップ・アプリケーション・メッセージを伝達することができ、各バックアップ・アプリケーション・メッセージがバックアップ・ソース・ストリームＩＤと、バックアップ・ソース・ストリーム・シーケンス番号と、バックアップ・メッセージ・シーケンス番号とによって特徴付けられるステップと、
前記サブスクライビング・クライアント・デバイスのメッセージング・ミドルウェアで前記アクティブ・フィード・アダプタから前記アクティブ・アプリケーション・メッセージを受信するステップと、
前記アクティブ・フィード・アダプタから前記バックアップ・フィード・アダプタへのフェイルオーバに応答して、前記サブスクライビング・クライアント・デバイスの前記メッセージング・ミドルウェアで前記バックアップ・フィード・アダプタから前記バックアップ・アプリケーション・メッセージを受信するステップと、
前記アクティブ・ストリーム・ソースＩＤと、前記アクティブ・ストリーム・ソース・シーケンス番号と、前記バックアップ・ストリーム・ソースＩＤと、前記バックアップ・ストリーム・ソース・シーケンス番号とに依存して、前記サブスクライビング・クライアント・デバイスの前記メッセージング・ミドルウェアにより、前記バックアップ・アプリケーション・メッセージを管理するステップと、
を実行させる、前記コンピュータ・プログラム。
【国際調査報告】
2009542140.tif 000010
2009542140.tif 000011