(57)【要約】【課題】  高速短待ち時間データ通信環境においてアクティブ・フィード・アダプタとバックアップ・フィード・アダプタを同期させるための方法、装置、およびプログラムを提供することにある。【解決手段】  この方法は、ストリーム管理サーバにより、アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのアクティブ・メッセージ・ストリームの確立を仲介するステップであって、アクティブ・メッセージ・ストリームがアプリケーション・メッセージを伝達することができるステップと、そのサーバにより、バックアップ・フィード・アダプタからクライアント・デバイスへのバックアップ・メッセージ・ストリームの確立を仲介するステップであって、バックアップ・メッセージ・ストリームがバックアップ・アプリケーション・メッセージを伝達することができるステップと、バックアップ・アダプタのバックアップ・メッセージング・ミドルウェアでアクティブ・アダプタのアクティブ・メッセージング・ミドルウェアからアクティブ・フィード・アダプタ状態を受信するステップと、バックアップ・フィード・アダプタにより、バックアップ・フィード・アダプタ状態がアクティブ・フィード・アダプタ状態に同期しているかどうかを判断するステップと、その判断に依存して、バックアップ・フィード・アダプタにより、バックアップ・アダプタの動作を管理するステップとを含む。【選択図】  図２
2009542141.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）が「Ａ」〜「Ｍ」の文字で始まる金融証券に関するティックを一方のメッセージ・ストリーム上で送信し、「Ｎ」〜「Ｚ」の文字で始まる金融証券に関するティックをもう一方のメッセージ・ストリーム上で送信することができる。
【００２６】
図２のアクティブ・フィード・アダプタ（２０８）は、変換モジュール（２２０）と、コンバータ・テーブル（２２２）と、コンバータ機能（２２４）と、メッセージ（２８４）と、メッセージ・モデル（２４４）と、メッセージング・ミドルウェア（２７６）と、トランスポート・エンジン（２７８）がそこにインストールされている。変換モジュール（２２０）は、アクティブ・フィード・アダプタ出力ストリーム（２１６）上のサブスクライビング・デバイスに送信するために、第１のフォーマットを有するアクティブ・フィード・アダプタ・ソース・ストリーム（２１４）上で受信したソース・ストリーム・メッセージを、第２のフォーマットを有するアプリケーション・メッセージに変換するために構成されたコンピュータ・プログラム命令を含むソフトウェア・コンポーネントである。変換モジュール（２２０）は、たとえば、アクティブ・メッセージ変換アプリケーション状態およびアクティブ・メッセージ変換アプリケーション健全性状態（health state）などのアクティブ・フィード・アダプタ状態を維持し、それにアクセスし、それを変更するために構成されたコンピュータ・プログラム命令も含む。
【００２７】
アクティブ・メッセージ変換アプリケーション状態は、出力ストリーム上で送信するためにソース・ストリーム上で受信したソース・ストリーム・メッセージをアプリケーション・メッセージに変換するために変換モジュール（２２０）によって使用されるアクティブ・フィード・アダプタのコンピュータ・メモリに保管された値の集約である。図２の変換モジュール（２２０）は、ソース・ストリーム・メッセージにアクティブ・メッセージ変換アプリケーション状態の値を追加してアプリケーション・メッセージを作成するか、またはアクティブ・メッセージ変換アプリケーション状態の値を使用して管理サービスを実行することができる。多くの場合、アクティブ・メッセージ変換アプリケーション状態は、一連のソース・ストリーム・メッセージから導出された計算値を含む。たとえば、金融市場データ環境では、アクティブ・メッセージ変換アプリケーション状態は、ある証券の日次出来高、ある証券がその日に取引された最高値、またはある証券がその日に取引された最安値を表す値を含むことができる。
【００２８】
アクティブ・メッセージ変換アプリケーション健全性状態は、他のフィード・アダプタと比較されたアクティブ・フィード・アダプタの相対パフォーマンスを評価するためにアクティブ・フィード・アダプタまたは何らかのその他のフィード・アダプタによって使用されるアクティブ・フィード・アダプタの１つ以上のメトリックである。アクティブ・メッセージ変換アプリケーション健全性状態は、アクティブ・フィード・アダプタ上の使用可能コンピュータ・メモリの測定値、アクティブ・フィード・アダプタ上のプロセッサ使用率、アクティブ・フィード・アダプタに関するエラー件数、アクティブ・フィード・アダプタに関するメッセージ伝送速度、または当業者であれば思い浮かぶ任意のその他のメトリックとして実装することができる。
【００２９】
変換モジュール（２２０）は、コンバータ・テーブル（２２２）により第１のフォーマットから第２のフォーマットにアプリケーション・メッセージを変換する。図２のコンバータ・テーブル（２２２）は、あるフォーマットから他のフォーマットにアプリケーション・メッセージを変換することができるコンバータ機能（２２４）を指定するテーブルである。複数のコンバータ・テーブルを使用して、変換モジュール（２２０）は、様々な入力フォーマットから様々な出力フォーマットにメッセージを変換することができる。図２の例では、コンバータ・テーブル（２２２）は、アクティブ・フィード・アダプタ出力ストリーム（２１６）上でサブスクライビング・クライアント・デバイスに送信するために、第１のフォーマットを有するアクティブ・フィード・アダプタ・ソース・ストリーム（２１４）から受信したアクティブ・ソース・ストリーム・メッセージを、第２のフォーマットを有するアプリケーション・メッセージに変換することができるコンバータ機能（２２４）を指定する。図２のコンバータ・テーブル（２２２）は、たとえば、拡張可能マークアップ言語（「ＸＭＬ：eXtensible Markup Language」）文書などの構造化文書を使用して実装することができる。
【００３０】
図２のコンバータ機能（２２４）は、あるフォーマットから他のフォーマットにアプリケーション・メッセージ内のデータ・フィールドを変換するか、またはある値から他の値にデータ・フィールドの値を変換することができる機能である。たとえば、コンバータ機能（２２４）は、１６ビットの整数を３２ビットの整数に変換するか、ストリング・フィールドに保管された数値を６４ビットの倍精度浮動小数点値に変換するか、特定のデータ・フィールドの値を１だけ増加するか、あるいは当業者であれば思い浮かぶ任意のその他の変換を行うことができる。図２の変換モジュール（２２０）は、コンバータ機能（２２４）によって公開された１組のコンバータ機能ＡＰＩ（２２６）によりコンバータ機能（２２４）にアクセスする。
【００３１】
図２の例では、変換モジュール（２２０）は、コンバータ機能（２２４）を使用して、アクティブ・ソース・ストリーム・メッセージをアクティブ・アプリケーション・メッセージ（２８４）に変換する。図２のアプリケーション・メッセージ（２８４）は、サブスクライビング・クライアント・デバイス（２１０）に送信するためのアクティブ・アプリケーション・メッセージを表す。メッセージ（２８４）のフォーマットはメッセージ・モデル（２４４）に指定される。メッセージ・モデル（２４４）は、メッセージ（２８４）の構造およびフォーマットを定義するメタデータである。メッセージ・モデル（２４４）は、アプリケーション・メッセージ（２８４）に付加し、アプリケーション・メッセージ（２８４）とともにサブスクライビング・クライアント・デバイス（２１０）に送信することができる。しかし、たいていの場合、サブスクライビング・クライアント・デバイス（２１０）およびフィード・アダプタ（２０６、２０８）は、ストリーム管理サーバ（２１２）がメッセージ・ストリーム（２８０）を仲介するときに、メッセージ・モデル（２４４）またはそのＩＤをストリーム管理サーバ（２１２）から受信することができる。メッセージ・モデルは、たとえば、ＸＭＬ文書、Ｊａｖａオブジェクト、Ｃ＋＋オブジェクト、または当業者であれば思い浮かぶ任意のその他の実装例などの構造化文書を使用して実装することができる。
【００３２】
図２の変換モジュール（２２０）がソース・ストリーム・メッセージについてデータ処理を実行する前に、変換モジュール（２２０）はフィード・ソース（２１３）からソース・ストリーム・メッセージを受信する。図２の変換モジュール（２２０）は、アクティブ・フィード・アダプタ（２０８）の受信側トランスポート・エンジン（図示せず）によりソース・ストリーム・メッセージを受信することができる。受信側トランスポート・エンジンは、ネットワーク・スタックのトランスポート層で動作するソフトウェア・モジュールであり、ＴＣＰ／ＩＰプロトコル、ＵＤＰ／ＩＰプロトコル、または当業者であれば思い浮かぶ任意のその他のデータ通信プロトコルにより実装することができる。受信側トランスポート・エンジンは、受信したソース・ストリーム・メッセージを変換モジュール（２２０）またはメッセージ・ミドルウェア（２７６）に直接提供することができ、次にソース・ストリーム・メッセージはそこから変換モジュールに提供される。
【００３３】
図２の変換モジュール（２２０）がフィード・ソース（２１３）から受信したアプリケーション・メッセージについてデータ処理を実行した後、変換モジュール（２２０）はアプリケーション・メッセージをメッセージング・ミドルウェア（２７６）に提供する。図２のメッセージング・ミドルウェア（２７６）は、変換モジュール（２２０）から受信したアプリケーション・メッセージを管理し、アクティブ・フィード・アダプタ出力ストリーム（２１６）上でサブスクライビング・クライアント・デバイスに送信するためにそのアプリケーション・メッセージをトランスポート・エンジン（２７８）に提供するために構成されたコンピュータ・プログラム命令を含むソフトウェア・コンポーネントである。変換モジュール（２２０）は、メッセージング・ミドルウェア（２７６）によって公開されたメッセージング・ミドルウェアＡＰＩ（２６６）によりメッセージング・ミドルウェア（２７６）と対話する。
【００３４】
アプリケーション・メッセージの管理に加えて、図２のメッセージング・ミドルウェア（２７６）は、アクティブ・フィード・アダプタ（２０８）と、バックアップ・フィード・アダプタ（２０６）と、サブスクライビング・クライアント・デバイス（２１０）との間で高可用性サービスを提供し、アクティブ・フィード・アダプタ（２０８）とバックアップ・フィード・アダプタ（２０６）との間で同期サービスを提供する。このような同期サービスは、アクティブ・フィード・アダプタ状態をバックアップ・フィード・アダプタに送信することを含む。図２のメッセージング・ミドルウェア（２７６）は、たとえば、ＲＭＩオブジェクトのメンバ・メソッド、ＣＯＲＢＡオブジェクトのメンバ・メソッド、Ｗｅｂサービス、または当業者であれば思い浮かぶ任意のその他の通信実装例を使用して、アクティブ・フィード・アダプタ（２０８）とバックアップ・フィード・アダプタ（２０６）との間でデータ通信チャネルにより同期サービスを提供する。
【００３５】
前述の通り、アクティブ・フィード・アダプタ状態は、任意の所与の瞬間にデータ処理を実行するためにアクティブ・フィード・アダプタが使用するコンピュータ・メモリ内の値の集約である。アクティブ・フィード・アダプタ状態は、たとえば、上述のアクティブ・メッセージ変換アプリケーション状態またはアクティブ・メッセージ変換アプリケーション健全性状態を含むことができる。しかし、アクティブ・フィード・アダプタ状態は、たとえば、アクティブ・メッセージ・ストリーム状態など、データ処理で使用される他の値を含むこともできる。アクティブ・メッセージ・ストリーム状態は、アクティブ・フィード・アダプタ（２０８）からサブスクライビング・クライアント・デバイス（２１０）へのアクティブ・メッセージ・ストリーム（２８０）の状態である。アクティブ・メッセージ・ストリーム状態は、サブスクライビング・クライアント・デバイス（２１０）に送信するためのアクティブ・メッセージング・ミドルウェア（２７６）内の次のアクティブ・アプリケーション・メッセージのアクティブ・メッセージ・シーケンス番号の値と、アクティブ・ソース・ストリーム・シーケンス番号の値によって特徴付けることができる。
【００３６】
２つのフィード・アダプタのメッセージ・ストリーム状態を使用すると、各メッセージ・ストリーム状態のメッセージ・シーケンス番号とソース・ストリーム・シーケンス番号の値を比較することにより、２つのフィード・アダプタからのメッセージ・ストリームが同期しているかどうかを判断することができる。ソース・ストリーム・シーケンス番号は、特定のアプリケーション・メッセージの内容を明確に識別する。同じソース・ストリーム・シーケンス番号が付いた２つのメッセージは同じ内容を有する。メッセージの内容にかかわらず、フィード・アダプタによって送信された各アプリケーション・メッセージにはメッセージ・シーケンス番号が割り当てられる。両方のストリーム上の複数メッセージのメッセージ・シーケンス番号が同一であって、その番号が同じ内容を有する複数メッセージを指す場合、バックアップ・メッセージ・ストリームはアクティブ・メッセージ・ストリームと「同期している」と見なされる。すなわち、アクティブ・メッセージ・ストリーム状態のアクティブ・メッセージ・シーケンス番号とアクティブ・ソース・ストリーム・シーケンス番号の値の組み合わせがバックアップ・メッセージ・ストリーム状態のバックアップ・メッセージ・シーケンス番号とバックアップ・ソース・ストリーム・シーケンス番号の値の組み合わせと一致する場合、両方のメッセージ・ストリームは「同期している」と言われる。
【００３７】
図２のトランスポート・エンジン（２７８）は、国際標準化機構によって公布されたＯＳＩプロトコル・スタックのトランスポート層およびネットワーク層で動作するソフトウェア・コンポーネントである。トランスポート・エンジン（２７８）は、ネットワーク接続デバイス間でデータ通信サービスを提供する。トランスポート・エンジンは、ＵＤＰ／ＩＰプロトコル、ＴＣＰ／ＩＰプロトコル、または当業者であれば思い浮かぶ任意のその他のデータ通信プロトコルにより実装することができる。トランスポート・エンジン（２７８）は、メッセージング・ミドルウェア（２７６）によって提供されたアプリケーション・メッセージをパケットにカプセル化し、そのパケットをアクティブ・メッセージ・ストリーム（２８０）によりサブスクライビング・クライアント・デバイス（２１０）に送信することができる１組のコンピュータ・プログラム命令を含む。メッセージング・ミドルウェア（２７６）は、トランスポート・エンジン（２７８）によって公開されたトランスポートＡＰＩ（２６８）によりトランスポート・エンジン（２７８）を操作する。
【００３８】
図２の模範的なシステムでは、バックアップ・フィード・アダプタ（２０６）は、ワイヤライン接続（２７０）により高速短待ち時間データ通信ネットワーク（２００）に接続されている。バックアップ・フィード・アダプタ（２０６）は、第１のフォーマットを有するバックアップ・フィード・アダプタ・ソース・ストリーム（２１８）上のバックアップ・メッセージを第２のフォーマットを有するバックアップ・フィード・アダプタ出力ストリーム（２１７）上のバックアップ・メッセージに変換し、バックアップ・フィード・アダプタ出力ストリーム（２１７）上のバックアップ・メッセージをサブスクライビング・クライアント・デバイスに送信する機能を有するコンピュータ・デバイスである。バックアップ・フィード・アダプタ・ソース・ストリーム（２１８）は、フィード・ソース（２１３）からバックアップ・フィード・アダプタ（２０６）へのメッセージ・ストリームである。バックアップ・フィード・アダプタ出力ストリーム（２１７）は、ストリーム管理サーバ（２１２）によって管理され、バックアップ・フィード・アダプタ（２０６）からサブスクライビング・クライアント・デバイス（２１０）へのメッセージ・ストリームである。
【００３９】
図２のバックアップ・フィード・アダプタ（２０６）は、変換モジュール（２２１）と、コンバータ・テーブル（２２３）と、コンバータ機能ＡＰＩ（２９０）を公開するコンバータ機能（２２５）と、バックアップ・フィード・アダプタ（２０６）からサブスクライビング・クライアント・デバイス（２１０）に送信するためのバックアップ・アプリケーション・メッセージ（２８８）と、メッセージ・モデル（２４４）と、メッセージング・ミドルウェアＡＰＩ（２６７）を公開するメッセージング・ミドルウェア（２７７）と、トランスポート・エンジンＡＰＩ（２６９）を公開するトランスポート・エンジン（２７９）がそこにインストールされている。バックアップ・フィード・アダプタ（２０６）にインストールされたコンポーネントは、アクティブ・フィード・アダプタ（２０８）にインストールされたコンポーネントと同様に動作する。
【００４０】
加えて、図２のバックアップ・フィード・アダプタ（２０６）のメッセージング・ミドルウェア（２７７）は、本発明の諸実施形態により高速短待ち時間データ通信環境においてアクティブ・フィード・アダプタとバックアップ・フィード・アダプタを同期させるための１組のコンピュータ・プログラム命令を含む。図２のメッセージング・ミドルウェア（２７７）は、一般に、アクティブ・フィード・アダプタのアクティブ・メッセージング・ミドルウェアからアクティブ・フィード・アダプタ状態を受信し、バックアップ・フィード・アダプタ状態がアクティブ・フィード・アダプタ状態に同期しているかどうかを判断し、バックアップ・フィード・アダプタ状態がアクティブ・フィード・アダプタ状態に同期しているかどうかに依存して、バックアップ・フィード・アダプタの動作を管理し、複数のバックアップ・フィード・アダプタのそれぞれのバックアップ・メッセージ変換アプリケーション健全性状態を受信することにより、本発明の諸実施形態により高速短待ち時間データ通信環境においてアクティブ・フィード・アダプタとバックアップ・フィード・アダプタを同期させるために動作する。たとえば、バックアップ・フィード・アダプタのメッセージング・ミドルウェア（２７７）は、アクティブ・フィード・アダプタからアクティブ・メッセージ・ストリーム状態を受信し、アクティブ・メッセージ・ストリーム状態がバックアップ・メッセージ・ストリーム状態と一致するかどうかを判断し、アクティブ・メッセージ・ストリーム状態と一致するようにバックアップ・メッセージ・ストリーム状態を設定することができる。
【００４１】
メッセージング・ミドルウェア（２７７）と同様に、図２の例のバックアップ・フィード・アダプタ（２０６）の変換モジュール（２２１）も、本発明の諸実施形態により高速短待ち時間データ通信環境においてアクティブ・フィード・アダプタとバックアップ・フィード・アダプタを同期させるための１組のコンピュータ・プログラム命令を含む。図２の変換モジュール（２２１）は、一般に、バックアップ・フィード・アダプタ状態がアクティブ・フィード・アダプタ状態に同期しているかどうかを判断し、バックアップ・フィード・アダプタ状態がアクティブ・フィード・アダプタ状態に同期しているかどうかに依存して、バックアップ・フィード・アダプタの動作を管理することにより、本発明の諸実施形態により高速短待ち時間データ通信環境においてアクティブ・フィード・アダプタとバックアップ・フィード・アダプタを同期させるために動作する。たとえば、バックアップ・フィード・アダプタの変換モジュール（２２１）は、バックアップ・フィード・アダプタのメッセージング・ミドルウェアからアクティブ・メッセージ変換アプリケーション状態を受信し、アクティブ・メッセージ変換アプリケーション状態がバックアップ・メッセージ変換アプリケーション状態と一致するかどうかを判断し、アクティブ・メッセージ変換アプリケーション状態と一致するようにバックアップ・メッセージ変換アプリケーション状態を設定することができる。
【００４２】
図２の模範的なシステム内のサブスクライビング・クライアント・デバイス（２１０）は、ワイヤライン接続（２６４）により高速短待ち時間データ通信ネットワーク（２００）に接続している。図２のサブスクライビング・クライアント・デバイス（２１０）は、様々なフィード・アダプタによって送信されたメッセージ・ストリームにサブスクライブすることができるコンピュータ・デバイスである。たとえば、金融市場データ環境では、サブスクライビング・クライアント・デバイスは、金融証券ブローカによって制御されたフィード・アダプタによって提供されるメッセージ・ストリーム上で特定の証券に関する買い呼び値および売り指し値を受信するためにティックにサブスクライブすることができる。
【００４３】
図２の例では、サブスクライビング・クライアント・デバイス（２１０）は、アプリケーション（２３８）と、メッセージ・ライブラリ（２４８）と、ストリーム管理ライブラリ（２７２）と、メッセージング・ミドルウェア（２５２）と、トランスポート・エンジン（２５６）がそこにインストールされている。図２のアプリケーション（２３８）は、フィード・アダプタ（２０８、２０６）の１つから受信したアプリケーション・メッセージ（２４０）に含まれるデータを処理するソフトウェア・コンポーネントである。アプリケーション（２３８）は、サブスクライビング・クライアント・デバイス（２１０）自体が使用するために、他のフィード・アダプタにそのデータを付与するために、または他の何らかのデバイスにそのデータを付与するために、データを処理することができる。金融市場データ環境では、サブスクライビング・クライアント・デバイスにインストールされたアプリケーションは、ティックに含まれる相場価格に基づいて金融証券を購入または売却するプログラム売買アプリケーションにすることができる。また、このアプリケーションは、たとえば、典型的には、フィード・ソース（２１３）によって提供されるティックに含まれない、特定の証券に関する最高買い呼び値および売り指し値などの情報をティックに付与する価値付加アプリケーションにすることもできる。その場合、サブスクライビング・クライアント・デバイスは、他のサブスクライビング・クライアント・デバイスへの転売のためにフィード・アダプタにそのティックを送信することができる。
【００４４】
図２の例では、アプリケーション・メッセージ（２４０）は、フィード・アダプタ（２０６、２０８）の１つから受信し、メッセージ・モデル（２４４）によって指定されたフォーマットを有するアプリケーション・メッセージを表す。図２のアプリケーション（２３８）は、メッセージ・ライブラリ（２４８）を使用して、アプリケーション・メッセージ（２４０）に含まれるデータを処理する。メッセージ・ライブラリ（２４８）は、メッセージ・モデル（２４４）に応じてメッセージ（２４０）を作成し、メッセージ（２４０）にアクセスし、メッセージ（２４０）を操作するためのコンピュータ・プログラム命令である１組の機能である。メッセージ・ライブラリ（２４８）は、メッセージ・ライブラリ（２４８）によって公開されたメッセージＡＰＩ（２５０）によりアプリケーション（２３８）にとってアクセス可能である。
【００４５】
サブスクライビング・クライアント・デバイス（２１０）とストリーム管理サーバ（２１２）との間の通信は、ストリーム管理ライブラリ（２７２）を使用して実装することができる。ストリーム管理ライブラリ（２７２）は、ストリーム管理ライブラリＡＰＩ（２７４）によりアプリケーション（２３８）にとって使用可能な動的リンク・ライブラリまたは静的リンク・ライブラリに含まれる１組の機能である。ストリーム管理ライブラリ（２７２）により、サブスクライビング・クライアント・デバイス（２１０）のアプリケーション（２３８）は、たとえば、フィード・アダプタからのメッセージにサブスクライブするか、既存のメッセージ・サブスクリプションを変更するか、またはメッセージ・サブスクリプションを取り消すよう、要求することができる。アプリケーション（２３８）によって使用されるストリーム管理ライブラリ（２７２）の機能は、ＣＯＲＢＡオブジェクトのメンバ・メソッドを呼び出し、Ｊａｖａ  ＲＭＩ  ＡＰＩを使用してリモート・オブジェクトのメンバ・メソッドを呼び出し、Ｗｅｂサービスまたは当業者であれば思い浮かぶ任意のその他の通信実装例を使用することにより、ネットワーク（２００）によりストリーム管理サーバ（２１２）と通信することができる。
【００４６】
アプリケーション（２３８）がメッセージ（２４０）に含まれるデータを処理する前に、アプリケーション（２３８）はメッセージング・ミドルウェア（２５２）からメッセージを受信し、次にメッセージング・ミドルウェア（２５２）はトランスポート・エンジン（２５６）によりフィード・アダプタ（２０８、２０６）の１つからアプリケーション・メッセージ（２４０）を受信する。メッセージング・ミドルウェア（２５２）は、サブスクライビング・クライアント・デバイスと、アクティブ・フィード・アダプタ（２０８）と、バックアップ・フィード・アダプタ（２０６）との間で高可用性サービスを提供するソフトウェア・コンポーネントである。加えて、メッセージング・ミドルウェア（２５２）はストリーム管理サーバ（２１２）に関するメッセージ管理サービスを提供する。このようなメッセージ管理サービスは、メッセージ・ストリーム上のメッセージを送受信するアプリケーション（２３８）の能力を、特定の制約を満足するメッセージに制限することを含むことができる。アプリケーション（２３８）およびストリーム管理ライブラリ（２７２）は、メッセージング・ミドルウェアＡＰＩ（２５４）によりメッセージング・ミドルウェア（２５２）と対話する。
【００４７】
図２のトランスポート・エンジン（２５６）は、国際標準化機構によって公布されたＯＳＩプロトコル・スタックのトランスポート層およびネットワーク層で動作するソフトウェア・コンポーネントである。トランスポート・エンジン（２５６）は、ネットワーク接続デバイス間でデータ通信サービスを提供する。トランスポート・エンジンは、ＵＤＰ／ＩＰプロトコル、ＴＣＰ／ＩＰプロトコル、または当業者であれば思い浮かぶ任意のその他のデータ通信プロトコルにより実装することができる。トランスポート・エンジン（２５６）は、フィード・アダプタ（２０８、２０６）からメッセージ・ストリーム（２８０、２８２）によりパケットを受信し、受信したパケットからアプリケーション・メッセージをカプセル化解除し、メッセージング・ミドルウェア（２５２）にアプリケーション・メッセージを提供するための１組のコンピュータ・プログラム命令を含む。メッセージング・ミドルウェア（２５２）は、トランスポート・エンジン（２５６）によって公開されたトランスポートＡＰＩ（２５８）によりトランスポート・エンジン（２５６）を操作する。
【００４８】
図２の模範的なシステムに例示されているサーバおよびその他のデバイスは、限定のためではなく、説明のためのものである。本発明の諸実施形態により高速短待ち時間データ通信環境においてアクティブ・フィード・アダプタとバックアップ・フィード・アダプタを同期させる際に有用なデバイスは、たとえば、コンピュータ・サーバまたはワークステーションなどの汎用コンピュータ、たとえば、携帯情報端末（「ＰＤＡ：Personal Digital Assistant」）または携帯電話などのハンドヘルド・コンピュータ・デバイス、または当業者であれば思い浮かぶように本発明の諸実施形態によりデータ処理のために構成された任意のその他の自動コンピューティング・マシンを使用して実装することができる。
【００４９】
図２に例示されている模範的なシステムを構成するサーバおよびその他のデバイスの配置は、限定のためではなく、説明のためのものである。図２のネットワーク（２００）への接続はワイヤライン接続に関して描かれ記載されているが、ワイヤレス接続も本発明の様々な諸実施形態により有用なものになり得ることに気付くであろう。さらに、本発明の様々な諸実施形態により有用なデータ処理システムとしては、当業者であれば思い浮かぶように図２に図示されていない追加のサーバ、ルータ、その他のデバイス、およびピアツーピア・アーキテクチャを含むことができる。このようなデータ処理システム内のネットワークは、たとえば、伝送制御プロトコル（「ＴＣＰ：Transmission Control Protocol」）、インターネット・プロトコル（「ＩＰ：Internet Protocol」）、ハイパーテキスト転送プロトコル（「ＨＴＴＰ：HyperTextTransfer Protocol」）、ワイヤレス・アクセス・プロトコル（「ＷＡＰ：WirelessAccess Protocol」）、ハンドヘルド・デバイス転送プロトコル（「ＨＤＴＰ：HandheldDevice Transfer Protocol」）、および当業者であれば思い浮かぶその他のものを含む、多くのデータ通信プロトコルをサポートすることができる。本発明の様々な諸実施形態は、図２に例示されているものに加えて、様々なハードウェア・プラットフォーム上で実装することができる。
【００５０】
実施形態によっては、本発明による高速短待ち時間データ通信環境においてアクティブ・フィード・アダプタとバックアップ・フィード・アダプタを同期させることは、１つ以上のサブスクライビング・クライアント・デバイス、ストリーム管理サーバ、フィード・アダプタ、コンピュータ、すなわち、自動コンピューティング・マシンによって実装することができる。したがって、さらに説明するために、図３は、本発明の諸実施形態により高速短待ち時間データ通信環境においてアクティブ・フィード・アダプタとバックアップ・フィード・アダプタを同期させる際に有用なサブスクライビング・クライアント・デバイス（２１０）の一例を含む自動コンピューティング・マシンのブロック図を示している。図３のサブスクライビング・クライアント・デバイス（２１０）は、少なくとも１つのコンピュータ・プロセッサ（１５６）または「ＣＰＵ」と、高速メモリ・バス（１６６）およびバス・アダプタ（１５８）によりプロセッサ（１５６）およびサブスクライビング・クライアント・デバイスのその他のコンポーネントに接続されたランダム・アクセス・メモリ（１６８）（「ＲＡＭ」）とを含む。
【００５１】
ＲＡＭ（１６８）には、アプリケーション（２３８）と、アプリケーション・メッセージ（２４０）と、メッセージ・モデル（２４４）と、メッセージ・ライブラリ（２４８）と、メッセージング・ミドルウェア（２５２）と、ストリーム管理ライブラリ（２７２）と、トランスポート・エンジン（２５６）が保管されている。各アプリケーション・メッセージ（２４０）は、１つ以上のデータ・フィールドを含む、ある量のデータであり、メッセージ・ストリーム上であるデバイスから他のデバイスに送信される。アプリケーション・メッセージは、典型的には、ネットワーク・プロトコル・スタックのネットワーク層およびトランスポート層より上のアプリケーション層で動作するアプリケーションによって作成され処理される。前述の通り、アプリケーション・メッセージは、数値またはテキスト情報、イメージ、暗号化情報、コンピュータ・プログラム命令などを表すことができる。たとえば、金融市場データ環境では、メッセージは一般に「ティック」と呼ばれ、たとえば、金融相場または金融ニュースなどの金融市場データを表す。各アプリケーション・メッセージ（２４０）は、たとえば、ＸＭＬ文書、Ｊａｖａオブジェクト、Ｃ＋＋オブジェクト、または当業者であれば思い浮かぶ任意のその他の実装例などの構造化文書を使用して実装することができる。メッセージ・モデル（２４４）は、メッセージ（２４０）の構造およびフォーマットを定義するメタデータである。また、メッセージ・モデル（２４４）も、たとえば、ＸＭＬ文書、Ｊａｖａオブジェクト、Ｃ＋＋オブジェクト、または当業者であれば思い浮かぶ任意のその他の実装例などの構造化文書を使用して実装することができる。図３に例示されているアプリケーション（２３８）、メッセージ・ライブラリ（２４８）、メッセージング・ミドルウェア（２５２）、ストリーム管理ライブラリ（２７２）、およびトランスポート・エンジン（２５６）は、図２に関連して上述したように動作するソフトウェア・コンポーネント、すなわち、コンピュータ・プログラム命令である。
【００５２】
ＲＡＭ（１６８）には、オペレーティング・システム（１５４）も保管されている。本発明の諸実施形態によるサブスクライビング・クライアント・デバイスで有用なオペレーティング・システムとしては、ＵＮＩＸ（Ｒ）、Ｌｉｎｕｘ（Ｒ）、Ｍｉｃｒｏｓｏｆｔ（Ｒ）  Ｗｉｎｄｏｗｓ（Ｒ）  ＮＴ（Ｒ）、ＩＢＭのＡＩＸ（Ｒ）、ＩＢＭのｉ５／ＯＳ（Ｒ）、および当業者であれば思い浮かぶその他のものを含む。図３の例では、オペレーティング・システム（１５４）、アプリケーション（２３８）、メッセージ（２４０）、メッセージ・モデル（２４４）、メッセージ・ライブラリ（２４８）、メッセージング・ミドルウェア（２５２）、およびトランスポート・エンジン（２５６）がＲＡＭ（１６８）内に示されているが、このようなソフトウェアの多くのコンポーネントは、典型的には、たとえば、ディスク・ドライブ（１７０）上の不揮発性メモリにも保管される。
【００５３】
ＵＮＩＸは米国およびその他の国におけるＴｈｅ  Ｏｐｅｎ  Ｇｒｏｕｐの登録商標であり、Ｌｉｎｕｘは米国、その他の国、またはその両方におけるＬｉｎｕｓ  Ｔｏｒｖａｌｄｓの登録商標であり、Ｍｉｃｒｏｓｏｆｔ、Ｗｉｎｄｏｗｓ、およびＷｉｎｄｏｗｓ  ＮＴは米国、その他の国、またはその両方におけるマイクロソフト社の商標であり、ＩＢＭ、ＡＩＸ、およびｉ５／ＯＳは米国、その他の国、またはその両方におけるインターナショナル・ビジネス・マシーンズ社の登録商標である。
【００５４】
図３の模範的なサブスクライビング・クライアント・デバイス（２１０）は、高速バス用のドライブ・エレクトロニクスを含むコンピュータ・ハードウェア・コンポーネントであるバス・アダプタ（１５８）と、フロント・サイド・バス（１６２）と、ビデオ・バス（１６４）と、メモリ・バス（１６６）と、低速拡張バス（１６０）用のドライブ・エレクトロニクスとを含む。本発明の諸実施形態により有用なサブスクライビング・クライアント・デバイスで有用なバス・アダプタの例としては、Ｉｎｔｅｌ（Ｒ）のノースブリッジ、Ｉｎｔｅｌのメモリ・コントローラ・ハブ、Ｉｎｔｅｌのサウスブリッジ、Ｉｎｔｅｌの入出力コントローラ・ハブを含む。本発明の諸実施形態により有用なサブスクライビング・クライアント・デバイスで有用な拡張バスの例としては、周辺装置相互接続（「ＰＣＩ」）バスおよびＰＣＩエクスプレス（「ＰＣＩｅ」）バスを含むことができる。
【００５５】
図３の模範的なサブスクライビング・クライアント・デバイス（２１０）は、拡張バス（１６０）およびバス・アダプタ（１５８）によりプロセッサ（１５６）および模範的なサブスクライビング・クライアント・デバイス（２１０）の他のコンポーネントに結合されたディスク・ドライブ・アダプタ（１７２）も含む。ディスク・ドライブ・アダプタ（１７２）は、ディスク・ドライブ（１７０）の形で不揮発性データ記憶装置を模範的なサブスクライビング・クライアント・デバイス（２１０）に接続する。サブスクライビング・クライアント・デバイスで有用なディスク・ドライブ・アダプタとしては、インテグレーテッド・ドライブ・エレクトロニクス（「ＩＤＥ」）アダプタ、小型コンピュータ・システム・インターフェース（「ＳＣＳＩ」）アダプタ、および当業者であれば思い浮かぶその他のものを含む。加えて、不揮発性コンピュータ・メモリは、当業者であれば思い浮かぶように、光ディスク・ドライブ、電気的消去再書込可能読み取り専用メモリ（いわゆる「ＥＥＰＲＯＭ」または「フラッシュ」メモリ）、ＲＡＭドライブなどとして、サブスクライビング・クライアント・デバイス用に実装することができる。
【００５６】
図３の模範的なサブスクライビング・クライアント・デバイス（２１０）は、１つ以上の入出力（「Ｉ／Ｏ」）アダプタ（１７８）を含む。サブスクライビング・クライアント・デバイス内の入出力アダプタは、たとえば、コンピュータ表示画面などの表示装置への出力ならびにキーボードおよびマウスなどのユーザ入力装置（１８１）からのユーザ入力を制御するためのソフトウェア・ドライバおよびコンピュータ・ハードウェアによりユーザ指向入出力を実装する。図３の模範的なサブスクライビング・クライアント・デバイス（２１０）はビデオ・アダプタ（２０９）を含み、このビデオ・アダプタ（２０９）は、表示画面またはコンピュータ・モニタなどの表示装置（１８０）への図形出力のために特別に設計された入出力アダプタの一例である。ビデオ・アダプタ（２０９）は、高速ビデオ・バス（１６４）、バス・アダプタ（１５８）、および同じく高速バスであるフロント・サイド・バス（１６２）によりプロセッサ（１５６）に接続されている。
【００５７】
図３の模範的なサブスクライビング・クライアント・デバイス（２１０）は、他のコンピュータ（１８２）とのデータ通信ならびに高速短待ち時間データ通信ネットワーク（２００）とのデータ通信のための通信アダプタ（１６７）を含む。このようなデータ通信は、ＲＳ−２３２接続により、ユニバーサル・シリアル・バス（「ＵＳＢ」）などの外部バスにより、ＩＰデータ通信ネットワークなどのデータ通信ネットワークにより、ならびに当業者であれば思い浮かぶその他の方法で、シリアルに実行することができる。通信アダプタは、それによりあるコンピュータが直接またはデータ通信ネットワークにより他のコンピュータに送信する、ハードウェア・レベルのデータ通信を実装する。本発明の諸実施形態により高速短待ち時間データ通信環境においてアクティブ・フィード・アダプタとバックアップ・フィード・アダプタを同期させるために有用な通信アダプタの例としては、ワイヤード・ダイヤルアップ通信用のモデム、ワイヤード・データ通信ネットワーク通信用のＩＥＥＥ  ８０２．３イーサネット・アダプタ、およびワイヤレス・データ通信ネットワーク通信用のＩＥＥＥ  ８０２．１１ｂアダプタを含む。
【００５８】
模範的なサブスクライビング・クライアント・デバイスに関連して図３を論じるが、本発明の諸実施形態により高速短待ち時間データ通信環境においてアクティブ・フィード・アダプタとバックアップ・フィード・アダプタを同期させる際に有用な模範的なストリーム管理サーバおよび模範的なフィード・アダプタを含む自動コンピューティング・マシンは、図３の模範的なサブスクライビング・クライアント・デバイス（２１０）と同様のものであることに気付くであろう。すなわち、このような模範的なストリーム管理サーバおよびフィード・アダプタは、１つ以上のプロセッサ、バス・アダプタ、バス、ＲＡＭ、ビデオ・アダプタ、通信アダプタ、入出力アダプタ、ディスク・ドライブ・アダプタ、および当業者であれば思い浮かぶように図３の模範的なサブスクライビング・クライアント・デバイス（２１０）と同様のその他のコンポーネントを含む。
【００５９】
さらに説明するために、図４は、本発明の諸実施形態により高速短待ち時間データ通信環境においてアクティブ・フィード・アダプタとバックアップ・フィード・アダプタを同期させるための模範的な方法を例示する流れ図を示している。図４の方法は、ストリーム管理サーバにより、アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのアクティブ・メッセージ・ストリーム（２８０）の確立を仲介するステップ（４００）を含む。アクティブ・フィード・アダプタはアクティブ・フィード・アダプタ状態（４０６）によって特徴付けられる。図４のアクティブ・フィード・アダプタ状態（４０６）は、アクティブ・フィード・アダプタの特定の状態を指定するコンピュータ・メモリ内の値を表す。アクティブ・フィード・アダプタ状態は、たとえば、上述の通り、アクティブ・メッセージ・ストリーム状態、アクティブ・メッセージ変換アプリケーション状態、またはアクティブ・メッセージ変換アプリケーション健全性状態を含むことができる。
【００６０】
図４のアクティブ・メッセージ・ストリーム（２８０）は、サブスクライビング・クライアント・デバイスの通信エンドポイントとフィード・アダプタの通信エンドポイントとの間のデータ通信チャネルを表す。メッセージ・ストリームは、図２に関連して上述した通り、ＵＤＰ／ＩＰプロトコルを使用するマルチキャスト・データ通信チャネルまたはＴＣＰ／ＩＰプロトコルを使用するユニキャスト・データ通信チャネルとして実装することができる。アクティブ・メッセージ・ストリーム（２８０）は、アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスにアクティブ・アプリケーション・メッセージ（４０４）を伝達することができる。各アクティブ・アプリケーション・メッセージ（４０４）は、アクティブ・メッセージ・ストリーム（２８０）上でアクティブ・フィード・アダプタによってサブスクライビング・クライアント・デバイスに送信するためのアプリケーション・メッセージを表す。
【００６１】
図４の各アクティブ・アプリケーション・メッセージ（４０４）は、アクティブ・ソース・ストリーム・シーケンス番号（４０８）とアクティブ・メッセージ・シーケンス番号（４１０）とによって特徴付けられる。図４のアクティブ・ソース・ストリーム・シーケンス番号（４０８）は、アクティブ・フィード・アダプタによって受信されたソース・ストリーム・メッセージであって、同じソース・ストリーム上でアクティブ・フィード・アダプタによって受信された数あるアクティブ・ソース・ストリーム・メッセージの中で、アクティブ・アプリケーション・メッセージ（４０４）に変換されているアクティブ・ソース・ストリーム・メッセージを明確に識別するシーケンス番号を表す。アクティブ・ソース・ストリーム・シーケンス番号（４０８）は、アクティブ・フィード・アダプタで受信した他のアクティブ・ソース・ストリーム・メッセージに対する特定のアクティブ・ソース・ストリーム・メッセージの相対伝送順序も提供する。
【００６２】
図４のアクティブ・メッセージ・シーケンス番号（４１０）は、特定のアクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスに送信するための数あるアプリケーション・メッセージの中で、そのアクティブ・アプリケーション・メッセージを明確に識別するシーケンス番号を表す。アクティブ・ソース・ストリーム・シーケンス番号（４０８）と同様に、アクティブ・メッセージ・シーケンス番号（４１０）は、アクティブ・フィード・アダプタから送信された他のアクティブ・アプリケーション・メッセージに対する特定のアクティブ・アプリケーション・メッセージの相対伝送順序を提供する。
【００６３】
図４の方法では、ストリーム管理サーバにより、アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのアクティブ・メッセージ・ストリーム（２８０）の確立を仲介するステップ（４００）は、フィード・アダプタからのメッセージにサブスクライブするためにサブスクライビング・クライアント・デバイスからサブスクリプション要求を受信することにより実行することができる。サブスクリプション要求は、ＸＭＬ文書、サブスクライビング・クライアント・デバイス上のＲＭＩオブジェクトのメンバ・メソッドへの呼び出し、または当業者であれば思い浮かぶ任意のその他の実装例として実装することができる。サブスクリプション要求は、フィード・アダプタから受信するようサブスクライビング・クライアント・デバイスが要求するメッセージのトピックを含むことができる。トピックは、サブスクライビング・クライアント・デバイスが要求するメッセージの特性を表す。トピックを使用して、サブスクライビング・クライアント・デバイスは、フィード・アダプタから受信するためのメッセージのグループを指定することができる。たとえば、金融市場データ環境では、サブスクライビング・クライアント・デバイスは、シカゴ・オプション取引所（「ＣＢＯＥ」）で取引されたＩＢＭオプションの相場を含み、ＣＢＯＥでのＩＢＭオプションの最高買い呼び値および最高売り指し値を含む、ＯＰＲＡフィード・ソースからティックを要求するためにトピックを使用することができる。
【００６４】
図４の方法により、ストリーム管理サーバにより、アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのアクティブ・メッセージ・ストリーム（２８０）の確立を仲介するステップ（４００）は、フィード・アダプタ用の宛先アドレスをサブスクライビング・クライアント・デバイスに提供することも含むことができる。フィード・アダプタ用の宛先アドレスは、フィード・アダプタからのメッセージを聴取するためにサブスクライビング・クライアント・デバイスによって使用されるマルチキャスト・アドレスまたはユニキャスト・アドレスである。ストリーム管理サーバによって提供された宛先アドレスを使用して、サブスクライビング・クライアント・デバイスは、フィード・アダプタからサブスクライビング・クライアント・デバイスへのアクティブ・メッセージ・ストリーム（２８０）を確立することができる。
【００６５】
ストリーム管理サーバがフィード・アダプタ用の宛先アドレスを提供する前に、図４の例のストリーム管理サーバは、サブスクライビング・クライアント・デバイスが受信する認可を受けているフィード・アダプタからのメッセージをサブスクライビング・クライアント・デバイスのみが受信することを保証するためにいくつかのセキュリティ・サービスを実行することができる。図４の方法では、ストリーム管理サーバにより、アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのアクティブ・メッセージ・ストリーム（２８０）の確立を仲介するステップ（４００）は、サブスクライビング・クライアント・デバイスを認証することと、メッセージ・ストリーム（２８０）上でフィード・アダプタからのメッセージを受信するためにサブスクライビング・クライアント・デバイスを許可することにより実行することもできる。サブスクライビング・クライアント・デバイスを認証することは、サブスクリプション要求とともにサブスクライビング・クライアント・デバイスにより提供されるクライアント・セキュリティ証明書（client security credential）を検証することにより実行することができる。クライアント・セキュリティ証明書は、サブスクリプション要求の発信元のＩＤを認証するために、公開鍵インフラストラクチャ内のデジタル署名、セキュリティ・トークン、または当業者であれば思い浮かぶ任意のその他のセキュリティ・データとして実装することができる。メッセージ・ストリーム（２８０）上でフィード・アダプタからのメッセージを受信するためにサブスクライビング・クライアント・デバイスを許可することは、許可ポリシーに依存して認証済みサブスクライビング・クライアント・デバイスに関連する特権を識別することにより実行することができる。許可ポリシーは、フィード・アダプタからデータを受信するよう要求する認証済みサブスクライビング・クライアント・デバイスの特権を管理する１組のルールである。
【００６６】
図４の方法は、ストリーム管理サーバにより、バックアップ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのバックアップ・メッセージ・ストリーム（２８２）の確立を仲介するステップ（４０２）も含む。バックアップ・フィード・アダプタはバックアップ・フィード・アダプタ状態（４１６）によって特徴付けられる。図４のバックアップ・フィード・アダプタ状態（４１６）は、バックアップ・フィード・アダプタの特定の状態を指定するコンピュータ・メモリ内の値を表す。アクティブ・フィード・アダプタ状態と同様に、バックアップ・フィード・アダプタ状態は、たとえば、バックアップ・メッセージ・ストリーム状態、バックアップ・メッセージ変換アプリケーション状態、またはバックアップ・メッセージ変換アプリケーション健全性状態を含むことができる。図４の方法では、ストリーム管理サーバにより、バックアップ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのバックアップ・メッセージ・ストリーム（２８２）の確立を仲介するステップ（４０２）は、上述の通り、ストリーム管理サーバにより、アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのアクティブ・メッセージ・ストリーム（２８０）の確立を仲介するステップ（４００）と同様に実行することができる。
【００６７】
図４のバックアップ・メッセージ・ストリーム（２８２）は、サブスクライビング・クライアント・デバイスの通信エンドポイントとフィード・アダプタの通信エンドポイントとの間のデータ通信チャネルを表す。バックアップ・メッセージ・ストリーム（２８２）は、バックアップ・フィード・アダプタからサブスクライビング・クライアント・デバイスに、アクティブ・アプリケーション・メッセージ（４０４）の重複を表すバックアップ・アプリケーション・メッセージ（４１４）を伝達することができる。各バックアップ・アプリケーション・メッセージ（４１４）は、バックアップ・メッセージ・ストリーム（２８２）上でバックアップ・フィード・アダプタによってサブスクライビング・クライアント・デバイスに送信するためのアプリケーション・メッセージを表す。
【００６８】
図４の各バックアップ・アプリケーション・メッセージ（４１４）は、バックアップ・ソース・ストリーム・シーケンス番号（４１８）とバックアップ・メッセージ・シーケンス番号（４２０）とによって特徴付けられる。図４のバックアップ・ソース・ストリーム・シーケンス番号（４１８）は、バックアップ・フィード・アダプタによって受信されたソース・ストリーム・メッセージであって、同じソース・ストリーム上でバックアップ・フィード・アダプタによって受信された数あるバックアップ・ソース・ストリーム・メッセージの中で、バックアップ・アプリケーション・メッセージ（４１４）に変換されているソース・ストリーム・メッセージを明確に識別するシーケンス番号を表す。バックアップ・ソース・ストリーム・シーケンス番号（４１８）は、バックアップ・フィード・アダプタで受信した他のバックアップ・ソース・ストリーム・メッセージに対する特定のバックアップ・ソース・ストリーム・メッセージの相対伝送順序も提供する。
【００６９】
図４のバックアップ・メッセージ・シーケンス番号（４２０）は、特定のバックアップ・フィード・アダプタからサブスクライビング・クライアント・デバイスに送信するための数あるアプリケーション・メッセージの中で、そのバックアップ・アプリケーション・メッセージを明確に識別するシーケンス番号を表す。バックアップ・ソース・ストリーム・シーケンス番号（４１８）と同様に、バックアップ・メッセージ・シーケンス番号（４２０）は、バックアップ・フィード・アダプタから送信された他のバックアップ・アプリケーション・メッセージに対する特定のバックアップ・アプリケーション・メッセージの相対伝送順序も提供する。
【００７０】
図４の方法は、バックアップ・フィード・アダプタのバックアップ・メッセージング・ミドルウェアでアクティブ・フィード・アダプタのアクティブ・メッセージング・ミドルウェアからアクティブ・フィード・アダプタ状態を受信するステップ（４２２）も含む。図４の方法によりバックアップ・フィード・アダプタのバックアップ・メッセージング・ミドルウェアでアクティブ・フィード・アダプタのアクティブ・メッセージング・ミドルウェアからアクティブ・フィード・アダプタ状態を受信するステップ（４２２）は、アクティブ・メッセージング・ミドルウェアにより、アクティブ・フィード・アダプタ状態を取り出すことと、アクティブ・メッセージング・ミドルウェアによりバックアップ・メッセージング・ミドルウェアに、たとえば、ＲＭＩオブジェクトのメンバ・メソッド、ＣＯＲＢＡオブジェクトのメンバ・メソッド、Ｗｅｂサービス、または当業者であれば思い浮かぶ任意のその他の通信実装例を使用して実装されたデータ通信チャネルによりアクティブ・フィード・アダプタ状態を送信することを含むことができる。アクティブ・メッセージング・ミドルウェアは、アクティブ・メッセージング・ミドルウェア自体に保管された値からまたはアクティブ・フィード・アダプタのメッセージ変換アプリケーションからアクティブ・フィード・アダプタ状態を入手することができる。
【００７１】
図４の方法は、バックアップ・フィード・アダプタにより、バックアップ・フィード・アダプタ状態（４１６）がアクティブ・フィード・アダプタ状態（４０６）に同期しているかどうかを判断するステップ（４２４）も含む。図４の方法により、バックアップ・フィード・アダプタにより、バックアップ・フィード・アダプタ状態（４１６）がアクティブ・フィード・アダプタ状態（４０６）に同期しているかどうかを判断するステップ（４２４）は、図５および図７に関連して後述するように、アクティブ・メッセージ・ストリーム状態がバックアップ・メッセージ・ストリーム状態と一致するかどうかを判断し、アクティブ・メッセージ変換アプリケーション状態の値がバックアップ・メッセージ変換アプリケーション状態（７０６）の値と一致するかどうかを判断することにより実行することができる。
【００７２】
図４の方法は、バックアップ・フィード・アダプタ状態がアクティブ・フィード・アダプタ状態に同期しているかどうかに依存して、バックアップ・フィード・アダプタにより、バックアップ・フィード・アダプタの動作を管理するステップ（４２６）も含む。バックアップ・フィード・アダプタ状態がアクティブ・フィード・アダプタ状態に同期しているかどうかに依存して、バックアップ・フィード・アダプタにより、バックアップ・フィード・アダプタの動作を管理するステップ（４２６）は、図５、図６、図７、および図８に関連して後述するように、バックアップ・フィード・アダプタ状態がアクティブ・フィード・アダプタ状態に同期していない場合にアクティブ・メッセージ・ストリーム状態の値と一致するようにバックアップ・メッセージ・ストリーム状態の値を設定し、アクティブ・メッセージ・ストリーム状態のアクティブ・ソース・シーケンス番号の値と一致するバックアップ・ソース・シーケンス番号の値を有するバックアップ・アプリケーション・メッセージをバックアップ・フィード・アダプタが前に送信している場合にバックアップ・フィード・アダプタのバックアップ・ストリーム伝送速度を低減し、バックアップ・フィード・アダプタ状態がアクティブ・フィード・アダプタ状態に同期していない場合にアクティブ・メッセージ変換アプリケーション状態の値と一致するようにバックアップ・メッセージ変換アプリケーション状態の値を設定し、バックアップ・フィード・アダプタ状態がアクティブ・フィード・アダプタ状態に同期していない場合に各バックアップ・フィード・アダプタのバックアップ・メッセージ変換アプリケーション健全性状態（８０４）に依存して複数のバックアップ・フィード・アダプタのうちの１つを不合格にすることにより実行することができる。
【００７３】
したがって、さらに説明するために、図５は、本発明の諸実施形態により高速短待ち時間データ通信環境においてアクティブ・フィード・アダプタとバックアップ・フィード・アダプタを同期させるための他の模範的な方法を例示する流れ図を示しており、この方法は、バックアップ・フィード・アダプタ状態（４１６）がアクティブ・フィード・アダプタ状態（４０６）に同期していない場合にアクティブ・メッセージ・ストリーム状態（５０４）と一致するようにバックアップ・メッセージ・ストリーム状態（５０６）を設定するステップ（５０２）を含む。図５の方法は、ストリーム管理サーバにより、アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのアクティブ・メッセージ・ストリーム（２８０）の確立を仲介するステップ（４００）と、ストリーム管理サーバにより、バックアップ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのバックアップ・メッセージ・ストリーム（２８２）の確立を仲介するステップ（４０２）と、バックアップ・フィード・アダプタのバックアップ・メッセージング・ミドルウェアでアクティブ・フィード・アダプタのアクティブ・メッセージング・ミドルウェアからアクティブ・フィード・アダプタ状態を受信するステップ（４２２）と、バックアップ・フィード・アダプタにより、バックアップ・フィード・アダプタ状態（４１６）がアクティブ・フィード・アダプタ状態（４０６）に同期しているかどうかを判断するステップ（４２４）と、バックアップ・フィード・アダプタ状態がアクティブ・フィード・アダプタ状態に同期しているかどうかに依存して、バックアップ・フィード・アダプタにより、バックアップ・フィード・アダプタの動作を管理するステップ（４２６）とを含むという点で図４の方法と同様のものである。
【００７４】
また、図５の例は、図５のアクティブ・フィード・アダプタがアクティブ・フィード・アダプタ状態（４０６）によって特徴付けられ、アクティブ・メッセージ・ストリーム（２８０）がサブスクライビング・クライアント・デバイスにアクティブ・アプリケーション・メッセージ（４０４）を伝達することができ、各アクティブ・アプリケーション・メッセージ（４０４）がアクティブ・ソース・ストリーム・シーケンス番号（４０８）とアクティブ・メッセージ・シーケンス番号（４１０）とによって特徴付けられ、図５のバックアップ・フィード・アダプタがバックアップ・フィード・アダプタ状態（４１６）によって特徴付けられ、バックアップ・メッセージ・ストリーム（２８２）がサブスクライビング・クライアント・デバイスにアクティブ・アプリケーション・メッセージ（４０４）の重複を表すバックアップ・アプリケーション・メッセージ（４１４）を伝達することができ、各バックアップ・アプリケーション・メッセージ（４１４）がバックアップ・ソース・ストリーム・シーケンス番号（４１８）とバックアップ・メッセージ・シーケンス番号（４２０）とによって特徴付けられるという点でも図４の例と同様のものである。
【００７５】
図５の例では、アクティブ・フィード・アダプタ状態（４０６）はアクティブ・メッセージ・ストリーム状態（５０４）を含む。アクティブ・メッセージ・ストリーム状態（５０４）は、アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのアクティブ・メッセージ・ストリーム（２８０）の状態を表す。図５のアクティブ・メッセージ・ストリーム状態（５０４）は、サブスクライビング・クライアント・デバイスに送信するためのアクティブ・メッセージング・ミドルウェア内の次のアクティブ・アプリケーション・メッセージのアクティブ・メッセージ・シーケンス番号の値と、アクティブ・ソース・ストリーム・シーケンス番号の値によって特徴付けられる。アクティブ・フィード・アダプタのメッセージング・ミドルウェアは、送信するためにアクティブ・フィード・アダプタによって処理すべき次のアプリケーション・メッセージのアクティブ・メッセージ・シーケンス番号を保管するデータ・フィールドまたはレジスタからアクティブ・メッセージ・シーケンス番号の値を取り出すことにより、サブスクライビング・クライアント・デバイスに送信するための次のアクティブ・アプリケーション・メッセージを識別することができる。
【００７６】
図５の例では、バックアップ・フィード・アダプタ状態（４１６）はバックアップ・メッセージ・ストリーム状態（５０６）を含む。図５のバックアップ・メッセージ・ストリーム状態（５０６）は、バックアップ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのバックアップ・メッセージ・ストリーム（２８２）の状態を表す。図５のバックアップ・メッセージ・ストリーム状態（５０６）は、サブスクライビング・クライアント・デバイスに送信するためのバックアップ・メッセージング・ミドルウェア内の次のバックアップ・アプリケーション・メッセージのバックアップ・メッセージ・シーケンス番号の値と、バックアップ・ソース・ストリーム・シーケンス番号の値によって特徴付けられる。バックアップ・フィード・アダプタのメッセージング・ミドルウェアは、送信するためにバックアップ・フィード・アダプタによって処理すべき次のアプリケーション・メッセージのバックアップ・メッセージ・シーケンス番号を保管するデータ・フィールドまたはレジスタからバックアップ・メッセージ・シーケンス番号の値を取り出すことにより、サブスクライビング・クライアント・デバイスに送信するための次のバックアップ・アプリケーション・メッセージを識別することができる。
【００７７】
図５の方法では、バックアップ・フィード・アダプタにより、バックアップ・フィード・アダプタ状態（４１６）がアクティブ・フィード・アダプタ状態（４０６）に同期しているかどうかを判断するステップ（４２４）は、アクティブ・メッセージ・ストリーム状態（５０４）がバックアップ・メッセージ・ストリーム状態（５０６）と一致するかどうかを判断するステップ（５００）を含む。図５の方法により、アクティブ・メッセージ・ストリーム状態（５０４）がバックアップ・メッセージ・ストリーム状態（５０６）と一致するかどうかを判断するステップ（５００）は、アクティブ・メッセージ・ストリーム状態（５０４）のアクティブ・メッセージ・シーケンス番号およびアクティブ・ソース・ストリーム・シーケンス番号の値をバックアップ・メッセージ・ストリーム状態（５０６）のバックアップ・メッセージ・シーケンス番号およびバックアップ・ソース・ストリーム・シーケンス番号の値と比較することにより実行することができる。アクティブ・メッセージ・ストリーム状態（５０４）のアクティブ・メッセージ・シーケンス番号およびアクティブ・ソース・ストリーム・シーケンス番号の値の組み合わせがバックアップ・メッセージ・ストリーム状態（５０６）のバックアップ・メッセージ・シーケンス番号およびバックアップ・ソース・ストリーム・シーケンス番号の値の組み合わせと一致する場合、バックアップ・フィード・アダプタ状態（４１６）はアクティブ・フィード・アダプタ状態（４０６）に同期している。アクティブ・メッセージ・ストリーム状態（５０４）のアクティブ・メッセージ・シーケンス番号およびアクティブ・ソース・ストリーム・シーケンス番号の値の組み合わせがバックアップ・メッセージ・ストリーム状態（５０６）のバックアップ・メッセージ・シーケンス番号およびバックアップ・ソース・ストリーム・シーケンス番号の値の組み合わせと一致しない場合、バックアップ・フィード・アダプタ状態（４１６）はアクティブ・フィード・アダプタ状態（４０６）に同期していない。
【００７８】
図５の方法では、バックアップ・フィード・アダプタ状態がアクティブ・フィード・アダプタ状態に同期しているかどうかに依存して、バックアップ・フィード・アダプタにより、バックアップ・フィード・アダプタの動作を管理するステップ（４２６）は、バックアップ・フィード・アダプタ状態（４１６）がアクティブ・フィード・アダプタ状態（４０６）に同期していない場合にアクティブ・メッセージ・ストリーム状態（５０４）と一致するようにバックアップ・メッセージ・ストリーム状態（５０６）を設定するステップ（５０２）を含む。図５の方法により、アクティブ・メッセージ・ストリーム状態（５０４）と一致するようにバックアップ・メッセージ・ストリーム状態（５０６）を設定するステップ（５０２）は、バックアップ・ソース・ストリーム・シーケンス番号（４１８）についてアクティブ・ソース・ストリーム・シーケンス番号と同じ値を有するバックアップ・アプリケーション・メッセージ（４１４）をバックアップ・フィード・アダプタが前に送信していない場合に、バックアップ・ソース・ストリーム・シーケンス番号（４１８）についてアクティブ・メッセージ・ストリーム状態（５０４）のアクティブ・ソース・ストリーム・シーケンス番号と同じ値を有するバックアップ・アプリケーション・メッセージ（４１４）のバックアップ・メッセージ・シーケンス番号に対してバックアップ・フィード・アダプタがアクティブ・メッセージ・ストリーム状態（５０４）のアクティブ・メッセージ・シーケンス番号の値を割り当てるようにメッセージ・シーケンス番号カウンタを調整することにより実行することができる。メッセージ・シーケンス番号カウンタは、アプリケーション・メッセージに割り当てられる次のバックアップ・メッセージ・シーケンス番号を生成する、バックアップ・メッセージング・ミドルウェア内の論理回路である。
【００７９】
バックアップ・ソース・ストリーム・シーケンス番号についてアクティブ・ソース・ストリーム・シーケンス番号と同じ値を有するバックアップ・アプリケーション・メッセージをバックアップ・フィード・アダプタが前に送信している場合、バックアップ・フィード・アダプタの動作を管理するステップは、バックアップ・フィード・アダプタのバックアップ・ストリーム伝送速度を低減することにより実行することができる。したがって、さらに説明するために、図６は、本発明の諸実施形態により高速短待ち時間データ通信環境においてアクティブ・フィード・アダプタとバックアップ・フィード・アダプタを同期させるための他の模範的な方法を例示する流れ図を示しており、この方法では、バックアップ・フィード・アダプタの動作を管理するステップ（４２６）は、バックアップ・ソース・シーケンス番号についてアクティブ・メッセージ・ストリーム状態のアクティブ・ソース・シーケンス番号の値と一致する値を有するバックアップ・アプリケーション・メッセージをバックアップ・フィード・アダプタが前に送信している場合にバックアップ・フィード・アダプタのバックアップ・ストリーム伝送速度（６０２）を低減するステップ（６００）を含む。図６の例では、バックアップ・ストリーム伝送速度（６０２）は、ある期間にバックアップ・フィード・アダプタがサブスクライビング・クライアント・デバイスに送信するバックアップ・アプリケーション・メッセージの数を表す。バックアップ・ストリーム伝送速度（６０２）は、たとえば、秒あたりのメッセージ数という単位で表すことができる。
【００８０】
図６の例では、バックアップ・ソース・シーケンス番号についてアクティブ・メッセージ・ストリーム状態のアクティブ・ソース・シーケンス番号の値と一致する値を有するバックアップ・アプリケーション・メッセージをバックアップ・フィード・アダプタが前に送信している場合にバックアップ・フィード・アダプタのバックアップ・ストリーム伝送速度（６０２）を低減するステップ（６００）は、所定の期間の間、バックアップ・アプリケーション・メッセージの送信を反復休止することにより実行することができる。バックアップ・フィード・アダプタは、各バックアップ・アプリケーション・メッセージの送信後に、他のすべてのバックアップ・アプリケーション・メッセージの送信後に、または当業者であれば思い浮かぶ任意のその他の頻度で、送信を休止することができる。バックアップ・フィード・アダプタのバックアップ・ストリーム伝送速度を低減することにより、アクティブ・フィード・アダプタはサブスクライビング・クライアント・デバイスにメッセージを送信するための送信シーケンスにおいてバックアップ・フィード・アダプタより先行することができる。アクティブ・フィード・アダプタが送信シーケンスにおいてバックアップ・フィード・アダプタより先行すると、バックアップ・フィード・アダプタは、図５の方法に関連して上述したように、もう一度、アクティブ・メッセージ・ストリーム状態がバックアップ・メッセージ・ストリーム状態と一致するかどうかを判断し、バックアップ・フィード・アダプタ状態がアクティブ・フィード・アダプタ状態に同期していない場合にアクティブ・メッセージ・ストリーム状態と一致するようにバックアップ・メッセージ・ストリーム状態を設定することができる。
【００８１】
図６の方法の他の諸ステップは図５の方法と同様に機能する。図６の方法は、ストリーム管理サーバにより、アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのアクティブ・メッセージ・ストリーム（２８０）の確立を仲介するステップ（４００）と、ストリーム管理サーバにより、バックアップ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのバックアップ・メッセージ・ストリーム（２８２）の確立を仲介するステップ（４０２）と、バックアップ・フィード・アダプタのバックアップ・メッセージング・ミドルウェアでアクティブ・フィード・アダプタのアクティブ・メッセージング・ミドルウェアからアクティブ・フィード・アダプタ状態を受信するステップ（４２２）と、バックアップ・フィード・アダプタにより、バックアップ・フィード・アダプタ状態（４１６）がアクティブ・フィード・アダプタ状態（４０６）に同期しているかどうかを判断するステップ（４２４）と、バックアップ・フィード・アダプタ状態がアクティブ・フィード・アダプタ状態に同期しているかどうかに依存して、バックアップ・フィード・アダプタにより、バックアップ・フィード・アダプタの動作を管理するステップ（４２６）とを含む。また、図６の例は、図６のアクティブ・フィード・アダプタがアクティブ・メッセージ・ストリーム状態（５０４）を含むアクティブ・フィード・アダプタ状態（４０６）によって特徴付けられ、アクティブ・メッセージ・ストリーム（２８０）がサブスクライビング・クライアント・デバイスにアクティブ・アプリケーション・メッセージ（４０４）を伝達することができ、各アクティブ・アプリケーション・メッセージ（４０４）がアクティブ・ソース・ストリーム・シーケンス番号（４０８）とアクティブ・メッセージ・シーケンス番号（４１０）とによって特徴付けられ、図６のバックアップ・フィード・アダプタがバックアップ・メッセージ・ストリーム状態（５０６）を含むバックアップ・フィード・アダプタ状態（４１６）によって特徴付けられ、バックアップ・メッセージ・ストリーム（２８２）がサブスクライビング・クライアント・デバイスにアクティブ・アプリケーション・メッセージ（４０４）の重複を表すバックアップ・アプリケーション・メッセージ（４１４）を伝達することができ、各バックアップ・アプリケーション・メッセージ（４１４）がバックアップ・ソース・ストリーム・シーケンス番号（４１８）とバックアップ・メッセージ・シーケンス番号（４２０）とによって特徴付けられるという点でも図５の例と同様のものである。
【００８２】
前述の通り、バックアップ・フィード・アダプタ状態がアクティブ・フィード・アダプタ状態に同期しているかどうかに依存して、バックアップ・フィード・アダプタの動作を管理するステップは、バックアップ・フィード・アダプタ状態がアクティブ・フィード・アダプタ状態に同期していない場合にアクティブ・メッセージ変換アプリケーション状態の値と一致するようにバックアップ・メッセージ変換アプリケーション状態の値を設定することにより実行することができる。したがって、さらに説明するために、図７は、本発明の諸実施形態により高速短待ち時間データ通信環境においてアクティブ・フィード・アダプタとバックアップ・フィード・アダプタを同期させるための他の模範的な方法を例示する流れ図を示しており、この方法は、バックアップ・フィード・アダプタ状態（４１６）がアクティブ・フィード・アダプタ状態（４０６）に同期していない場合にアクティブ・メッセージ変換アプリケーション状態（７０４）の値と一致するようにバックアップ・メッセージ変換アプリケーション状態（７０６）の値を設定するステップ（７０２）を含む。
【００８３】
図７の方法は、ストリーム管理サーバにより、アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのアクティブ・メッセージ・ストリーム（２８０）の確立を仲介するステップ（４００）と、ストリーム管理サーバにより、バックアップ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのバックアップ・メッセージ・ストリーム（２８２）の確立を仲介するステップ（４０２）と、バックアップ・フィード・アダプタのバックアップ・メッセージング・ミドルウェアでアクティブ・フィード・アダプタのアクティブ・メッセージング・ミドルウェアからアクティブ・フィード・アダプタ状態を受信するステップ（４２２）と、バックアップ・フィード・アダプタにより、バックアップ・フィード・アダプタ状態（４１６）がアクティブ・フィード・アダプタ状態（４０６）に同期しているかどうかを判断するステップ（４２４）と、バックアップ・フィード・アダプタ状態がアクティブ・フィード・アダプタ状態に同期しているかどうかに依存して、バックアップ・フィード・アダプタにより、バックアップ・フィード・アダプタの動作を管理するステップ（４２６）とを含むという点で図４の方法と同様のものである。また、図７の例は、図７のアクティブ・フィード・アダプタがアクティブ・フィード・アダプタ状態（４０６）によって特徴付けられ、アクティブ・メッセージ・ストリーム（２８０）がサブスクライビング・クライアント・デバイスにアクティブ・アプリケーション・メッセージ（４０４）を伝達することができ、各アクティブ・アプリケーション・メッセージ（４０４）がアクティブ・ソース・ストリーム・シーケンス番号（４０８）とアクティブ・メッセージ・シーケンス番号（４１０）とによって特徴付けられ、図７のバックアップ・フィード・アダプタがバックアップ・フィード・アダプタ状態（４１６）によって特徴付けられ、バックアップ・メッセージ・ストリーム（２８２）がサブスクライビング・クライアント・デバイスにアクティブ・アプリケーション・メッセージ（４０４）の重複を表すバックアップ・アプリケーション・メッセージ（４１４）を伝達することができ、各バックアップ・アプリケーション・メッセージ（４１４）がバックアップ・ソース・ストリーム・シーケンス番号（４１８）とバックアップ・メッセージ・シーケンス番号（４２０）とによって特徴付けられるという点でも図４の例と同様のものである。
【００８４】
図７の例では、アクティブ・フィード・アダプタ状態（４０６）は、アクティブ・フィード・アダプタのアクティブ・メッセージ変換アプリケーションのアクティブ・メッセージ変換アプリケーション状態（７０４）を含む。前述の通り、アクティブ・メッセージ変換アプリケーション状態（７０４）は、サブスクライビング・クライアント・デバイスに送信するためにフィード・アダプタで受信したソース・ストリーム・メッセージをアプリケーション・メッセージに変換するためにアクティブ・メッセージ変換アプリケーションによって使用されるアクティブ・フィード・アダプタのコンピュータ・メモリに保管された値の集約を表す。アクティブ・メッセージ変換アプリケーションの一例は、図２に関連して上述したアクティブ・フィード・アダプタの変換モジュールを含むことができる。アクティブ・メッセージ変換アプリケーションは、ソース・ストリーム・メッセージにアクティブ・メッセージ変換アプリケーション状態（７０４）の値を追加してアプリケーション・メッセージを作成するか、またはアクティブ・メッセージ変換アプリケーション状態の値を使用して管理サービスを実行することができる。多くの場合、アクティブ・メッセージ変換アプリケーション状態（７０４）は、一連のソース・ストリーム・メッセージから導出された計算値を含む。たとえば、金融市場データ環境では、アクティブ・メッセージ変換アプリケーション状態は、ある証券の日次出来高、ある証券がその日に取引された最高値、またはある証券がその日に取引された最安値を表す値を含むことができる。
【００８５】
図７の例では、バックアップ・フィード・アダプタ状態（４１６）は、バックアップ・フィード・アダプタのバックアップ・メッセージ変換アプリケーションのバックアップ・メッセージ変換アプリケーション状態（７０６）を含む。アクティブ・メッセージ変換アプリケーション状態（７０４）と同様に、バックアップ・メッセージ変換アプリケーション状態（７０６）は、サブスクライビング・クライアント・デバイスに送信するためにフィード・アダプタで受信したソース・ストリーム・メッセージをアプリケーション・メッセージに変換するためにバックアップ・メッセージ変換アプリケーションによって使用されるバックアップ・フィード・アダプタのコンピュータ・メモリに保管された値の集約を表す。バックアップ・メッセージ変換アプリケーションの一例は、図２に関連して上述したバックアップ・フィード・アダプタの変換モジュールを含むことができる。
【００８６】
図７の方法では、バックアップ・フィード・アダプタにより、バックアップ・フィード・アダプタ状態（４１６）がアクティブ・フィード・アダプタ状態（４０６）に同期しているかどうかを判断するステップ（４２４）は、アクティブ・メッセージ変換アプリケーション状態（７０４）の値がバックアップ・メッセージ変換アプリケーション状態（７０６）の値と一致するかどうかを判断するステップ（７００）により実行することができる。図７の方法により、アクティブ・メッセージ変換アプリケーション状態（７０４）の値がバックアップ・メッセージ変換アプリケーション状態（７０６）の値と一致するかどうかを判断するステップ（７００）は、バックアップ・メッセージ変換アプリケーションにより、バックアップ・フィード・アダプタのバックアップ・メッセージング・ミドルウェアからアクティブ・メッセージ変換アプリケーション状態（７０４）を受信し、バックアップ・メッセージ変換アプリケーションにより、アクティブ・メッセージ変換アプリケーション状態（７０４）の値をバックアップ・メッセージ変換アプリケーション状態（７０６）の値と比較することにより実行することができる。アクティブ・メッセージ変換アプリケーション状態（７０４）の値がバックアップ・メッセージ変換アプリケーション状態（７０６）の値と等しい場合、バックアップ・フィード・アダプタ状態（４１６）はアクティブ・フィード・アダプタ状態（４０６）に同期している。アクティブ・メッセージ変換アプリケーション状態（７０４）の値がバックアップ・メッセージ変換アプリケーション状態（７０６）の値と等しくない場合、バックアップ・フィード・アダプタ状態（４１６）はアクティブ・フィード・アダプタ状態（４０６）に同期していない。
【００８７】
図７の方法では、バックアップ・フィード・アダプタ状態がアクティブ・フィード・アダプタ状態に同期しているかどうかに依存して、バックアップ・フィード・アダプタにより、バックアップ・フィード・アダプタの動作を管理するステップ（４２６）は、バックアップ・フィード・アダプタ状態（４１６）がアクティブ・フィード・アダプタ状態（４０６）に同期していない場合にアクティブ・メッセージ変換アプリケーション状態（７０４）の値と一致するようにバックアップ・メッセージ変換アプリケーション状態（７０６）の値を設定するステップ（７０２）を含む。図７の方法により、アクティブ・メッセージ変換アプリケーション状態（７０４）の値と一致するようにバックアップ・メッセージ変換アプリケーション状態（７０６）の値を設定するステップ（７０２）は、バックアップ・メッセージ変換アプリケーションにより、アクティブ・メッセージ変換アプリケーション状態（７０４）の値でバックアップ・メッセージ変換アプリケーション状態（７０６）の値を更新することにより実行することができる。
【００８８】
前述の通り、本発明のいくつかの模範的な諸実施形態は、複数のバックアップ・フィード・アダプタを含むことができ、各バックアップ・フィード・アダプタはバックアップ・メッセージ・ストリーム上でサブスクライビング・クライアント・デバイスにバックアップ・アプリケーション・メッセージを送信することができる。バックアップ・フィード・アダプタ状態がアクティブ・フィード・アダプタ状態に同期していないとバックアップ・フィード・アダプタの１つが繰り返し判断する場合、バックアップ・フィード・アダプタのバックアップ・メッセージング・ミドルウェアはそのバックアップ・フィード・アダプタを不合格にするように動作することができる。すなわち、そのバックアップ・フィード・アダプタが冗長性を提供するためにもはや使用可能にならないように、バックアップ・フィード・アダプタのバックアップ・メッセージング・ミドルウェアはバックアップ・フィード・アダプタをオフラインにする。しかし、多くの場合、そのバックアップ・フィード・アダプタ状態が繰り返しアクティブ・フィード・アダプタ状態に同期していないバックアップ・フィード・アダプタより他のバックアップ・フィード・アダプタの方がパフォーマンスが悪化している。したがって、バックアップ・メッセージング・ミドルウェアは、繰り返し同期していないバックアップ・フィード・アダプタを不合格にする前に、他のバックアップ・フィード・アダプタの健全性を検討することができる。したがって、さらに説明するために、図８は、本発明の諸実施形態により高速短待ち時間データ通信環境においてアクティブ・フィード・アダプタとバックアップ・フィード・アダプタを同期させるための他の模範的な方法を例示する流れ図を示しており、この方法は、バックアップ・フィード・アダプタ状態がアクティブ・フィード・アダプタ状態に同期していない場合に各バックアップ・フィード・アダプタ（８０２）のバックアップ・メッセージ変換アプリケーション健全性状態（８０４）に依存して複数のバックアップ・フィード・アダプタのうちの１つを不合格にするステップ（８０６）を含む。
【００８９】
図８の例は、複数のバックアップ・フィード・アダプタ（８０２）を含む。各バックアップ・フィード・アダプタ（８０２）は、第１のフォーマットを有するバックアップ・フィード・アダプタ・ソース・ストリーム上のバックアップ・ソース・ストリーム・メッセージを第２のフォーマットを有するバックアップ・フィード・アダプタ出力ストリーム上のバックアップ・アプリケーション・メッセージに変換し、バックアップ・メッセージ・ストリーム上でバックアップ・アプリケーション・メッセージをサブスクライビング・クライアント・デバイスに送信する機能を有するコンピュータ・デバイスを表す。各バックアップ・フィード・アダプタ（８０２）はバックアップ・フィード・アダプタ状態（４１６）によって特徴付けられる。前述の通り、バックアップ・フィード・アダプタ状態（４１６）は、任意の所与の瞬間にデータ処理を実行するためにバックアップ・フィード・アダプタが使用するコンピュータ・メモリ内の値の集約を表す。
【００９０】
図８のバックアップ・フィード・アダプタ状態（４１６）はバックアップ・メッセージ変換アプリケーション健全性状態（８０４）を含む。バックアップ・メッセージ変換アプリケーション健全性状態（８０４）は、他のフィード・アダプタと比較されたバックアップ・フィード・アダプタの相対パフォーマンスを評価するためにバックアップ・フィード・アダプタによって使用されるバックアップ・フィード・アダプタの１つ以上のメトリックを表す。バックアップ・メッセージ変換アプリケーション健全性状態は、バックアップ・フィード・アダプタ上の使用可能コンピュータ・メモリの測定値、バックアップ・フィード・アダプタ上のプロセッサ使用率、バックアップ・フィード・アダプタに関するエラー件数、バックアップ・フィード・アダプタに関するメッセージ伝送速度、または当業者であれば思い浮かぶ任意のその他のメトリックとして実装することができる。
【００９１】
図８の方法は、各バックアップ・フィード・アダプタのバックアップ・メッセージング・ミドルウェアで各バックアップ・フィード・アダプタ（８０２）のバックアップ・メッセージ変換アプリケーション健全性状態（８０４）を受信するステップ（８００）を含む。各バックアップ・フィード・アダプタのバックアップ・メッセージング・ミドルウェアで各バックアップ・フィード・アダプタ（８０２）のバックアップ・メッセージ変換アプリケーション健全性状態（８０４）を受信するステップ（８００）は、各バックアップ・フィード・アダプタ（８０２）のバックアップ・メッセージング・ミドルウェアにより、各バックアップ・フィード・アダプタ（８０２）のバックアップ・メッセージ変換アプリケーションからバックアップ・メッセージ変換アプリケーション健全性状態（８０４）を取り出すことにより実行することができる。バックアップ・メッセージング・ミドルウェアは、バックアップ・メッセージ変換アプリケーションのＡＰＩによって公開された機能を呼び出すか、またはバックアップ・メッセージ変換アプリケーションによってポーリングされたときにバックアップ・メッセージ変換アプリケーション健全性状態（８０４）を要求することにより、バックアップ・メッセージ変換アプリケーション健全性状態（８０４）を取り出すことができる。各バックアップ・フィード・アダプタのバックアップ・メッセージング・ミドルウェアで各バックアップ・フィード・アダプタ（８０２）のバックアップ・メッセージ変換アプリケーション健全性状態（８０４）を受信するステップ（８００）はさらに、たとえば、ＲＭＩオブジェクトのメンバ・メソッド、ＣＯＲＢＡオブジェクトのメンバ・メソッド、Ｗｅｂサービス、または当業者であれば思い浮かぶ任意のその他の通信実装例を使用して実装されたデータ通信チャネルにより、各バックアップ・フィード・アダプタ（８０２）のバックアップ・メッセージング・ミドルウェアから他のバックアップ・フィード・アダプタ（８０２）のバックアップ・メッセージング・ミドルウェアにバックアップ・メッセージ変換アプリケーション健全性状態（８０４）を送信することにより実行することができる。
【００９２】
図８の方法では、バックアップ・フィード・アダプタ状態がアクティブ・フィード・アダプタ状態に同期しているかどうかに依存して、バックアップ・フィード・アダプタにより、バックアップ・フィード・アダプタの動作を管理するステップ（４２６）は、バックアップ・フィード・アダプタ状態がアクティブ・フィード・アダプタ状態に同期していない場合に各バックアップ・フィード・アダプタ（８０２）のバックアップ・メッセージ変換アプリケーション健全性状態（８０４）に依存して複数のバックアップ・フィード・アダプタのうちの１つを不合格にするステップ（８０６）を含む。図８の方法により、各バックアップ・フィード・アダプタ（８０２）のバックアップ・メッセージ変換アプリケーション健全性状態（８０４）に依存して複数のバックアップ・フィード・アダプタのうちの１つを不合格にするステップ（８０６）は、管理中のバックアップ・フィード・アダプタのバックアップ・メッセージ変換アプリケーション健全性状態（８０４）の値が他のバックアップ・フィード・アダプタのそれぞれから受信したバックアップ・メッセージ変換アプリケーション健全性状態の中で最低である場合に他のフィード・アダプタのメッセージング・ミドルウェアとの通信からバックアップ・フィード・アダプタを除去することにより実行することができる。
【００９３】
管理中のバックアップ・フィード・アダプタのバックアップ・メッセージ変換アプリケーション健全性状態（８０４）の値が他のバックアップ・フィード・アダプタのそれぞれから受信したバックアップ・メッセージ変換アプリケーション健全性状態の中で最低である場合に他のフィード・アダプタのメッセージング・ミドルウェアとの通信からバックアップ・フィード・アダプタを除去することは、限定のためではなく、説明のためのものであることに気付くであろう。実際に、図８の方法により、各バックアップ・フィード・アダプタ（８０２）のバックアップ・メッセージ変換アプリケーション健全性状態（８０４）に依存して複数のバックアップ・フィード・アダプタのうちの１つを不合格にするステップ（８０６）は、管理中のバックアップ・フィード・アダプタのバックアップ・メッセージ変換アプリケーション健全性状態（８０４）の値が他のバックアップ・フィード・アダプタから受信したバックアップ・メッセージ変換アプリケーション健全性状態の値のうちの１つより小さいだけである場合に他のフィード・アダプタのメッセージング・ミドルウェアとの通信からバックアップ・フィード・アダプタを除去することによるか、または当業者であれば思い浮かぶ任意のその他の方法で実行することもできる。
【００９４】
本明細書において上記で示した説明を考慮すると、本発明の諸実施形態により高速短待ち時間データ通信環境においてアクティブ・フィード・アダプタとバックアップ・フィード・アダプタを同期させることを実施すると、以下の利点が得られることを認識するであろう。
●フィード・アダプタからのメッセージ・ストリームは同期したままになるので、アクティブ・フィード・アダプタからバックアップ・フィード・アダプタにフェイルオーバするのに必要な時間は、数十秒から数ミリ秒に短縮される。
●冗長フィード・アダプタによってサブスクライビング・クライアント・デバイスに提供されるデータは同一である。
●存在する他のすべてのバックアップ・フィード・アダプタのパフォーマンスが悪化している場合、繰り返しアクティブ・フィード・アダプタに同期していないバックアップ・フィード・アダプタは不合格にならない。
【００９５】
本発明の模範的な諸実施形態は、主に、高速短待ち時間データ通信環境においてアクティブ・フィード・アダプタとバックアップ・フィード・アダプタを同期させるために完全に機能しうるコンピュータ・システムに関連して記載されている。しかし、当業者であれば、本発明は、任意の適切なデータ処理システムで使用するための信号伝送媒体上に配置されたコンピュータ・プログラム（computer program product）で実施可能であることも認識するであろう。このような信号伝送媒体は、磁気媒体、光学媒体、またはその他の適切な媒体を含む、機械可読情報用の伝送媒体または記録可能媒体にすることができる。記録可能媒体の例としては、ハード・ドライブまたはディスケット内の磁気ディスク、光学式ドライブ用のコンパクト・ディスク、磁気テープ、および当業者であれば思い浮かぶその他のものを含む。伝送媒体の例としては、音声通信用の電話網、たとえば、イーサネット（Ｒ）などのデジタル・データ通信ネットワーク、インターネット・プロトコルやワールド・ワイド・ウェブと通信するネットワーク、ならびに、たとえば、ＩＥＥＥ８０２．１１系の規格に応じて実装されたネットワークなどのワイヤレス伝送媒体を含む。当業者であれば、適切なプログラミング手段を有する任意のコンピュータ・システムは１つのプログラムで実施された本発明の方法の諸ステップを実行できることを直ちに認識するであろう。当業者であれば、本明細書に記載された模範的な諸実施形態のいくつかはコンピュータ・ハードウェアにインストールされ、そこで実行されるソフトウェアに向いているが、それにもかかわらず、ファームウェアまたはハードウェアとして実装された代替諸実施形態も本発明の範囲内であることを直ちに認識するであろう。
【００９６】
その真の精神から逸脱せずに、本発明の様々な諸実施形態において修正および変更が可能であることは、上記の説明から理解されるであろう。本明細書における説明は、例示のみのためのものであり、限定的な意味で解釈すべきものではない。本発明の範囲は、特許請求の範囲の言語のみによって制限される。
【図面の簡単な説明】
【００９７】
【図１】データ通信用の典型的なメッセージング環境を例示するブロック図である。
【図２】本発明の模範的な諸実施形態により高速短待ち時間データ通信環境においてアクティブ・フィード・アダプタとバックアップ・フィード・アダプタを同期させるための模範的なコンピュータ・データ処理システムを例示するネットワークおよびブロック図である。
【図３】本発明の模範的な諸実施形態により高速短待ち時間データ通信環境においてアクティブ・フィード・アダプタとバックアップ・フィード・アダプタを同期させる際に有用なサブスクライビング・クライアント・デバイスの一例を含む自動コンピューティング・マシンのブロック図である。
【図４】本発明の模範的な諸実施形態により高速短待ち時間データ通信環境においてアクティブ・フィード・アダプタとバックアップ・フィード・アダプタを同期させるための模範的な方法を例示する流れ図である。
【図５】本発明の模範的な諸実施形態により高速短待ち時間データ通信環境においてアクティブ・フィード・アダプタとバックアップ・フィード・アダプタを同期させるための他の模範的な方法を例示する流れ図である。
【図６】本発明の模範的な諸実施形態により高速短待ち時間データ通信環境においてアクティブ・フィード・アダプタとバックアップ・フィード・アダプタを同期させるための他の模範的な方法を例示する流れ図である。
【図７】本発明の模範的な諸実施形態により高速短待ち時間データ通信環境においてアクティブ・フィード・アダプタとバックアップ・フィード・アダプタを同期させるための他の模範的な方法を例示する流れ図である。
【図８】本発明の模範的な諸実施形態により高速短待ち時間データ通信環境においてアクティブ・フィード・アダプタとバックアップ・フィード・アダプタを同期させるための他の模範的な方法を例示する流れ図である。
【図１】
2009542141.tif 000003
【図２】
2009542141.tif 000004
【図３】
2009542141.tif 000005
【図４】
2009542141.tif 000006
【図５】
2009542141.tif 000007
【図６】
2009542141.tif 000008
【図７】
2009542141.tif 000009
【図８】
2009542141.tif 000010
【手続補正書】
【提出日】平成21年2月17日(2009.2.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
高速短待ち時間データ通信環境においてアクティブ・フィード・アダプタとバックアップ・フィード・アダプタを同期させるための方法であって、
ストリーム管理サーバにより、前記アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのアクティブ・メッセージ・ストリームの確立を仲介するステップであって、前記アクティブ・フィード・アダプタがアクティブ・フィード・アダプタ状態によって特徴付けられ、前記アクティブ・メッセージ・ストリームがアクティブ・アプリケーション・メッセージを前記サブスクライビング・クライアント・デバイスに伝達することができ、各アクティブ・アプリケーション・メッセージがアクティブ・ソース・ストリーム・シーケンス番号とアクティブ・メッセージ・シーケンス番号とによって特徴付けられるステップと、
前記ストリーム管理サーバにより、前記バックアップ・フィード・アダプタから前記サブスクライビング・クライアント・デバイスへのバックアップ・メッセージ・ストリームの確立を仲介するステップであって、前記バックアップ・フィード・アダプタがバックアップ・フィード・アダプタ状態によって特徴付けられ、前記バックアップ・メッセージ・ストリームが前記アクティブ・アプリケーション・メッセージの重複を表すバックアップ・アプリケーション・メッセージを前記サブスクライビング・クライアント・デバイスに伝達することができ、各バックアップ・アプリケーション・メッセージがバックアップ・ソース・ストリーム・シーケンス番号とバックアップ・メッセージ・シーケンス番号とによって特徴付けられるステップと、
前記バックアップ・フィード・アダプタのバックアップ・メッセージング・ミドルウェアで前記アクティブ・フィード・アダプタのアクティブ・メッセージング・ミドルウェアから前記アクティブ・フィード・アダプタ状態を受信するステップと、
前記バックアップ・フィード・アダプタにより、前記バックアップ・フィード・アダプタ状態が前記アクティブ・フィード・アダプタ状態に同期しているかどうかを判断するステップと、
前記バックアップ・フィード・アダプタ状態が前記アクティブ・フィード・アダプタ状態に同期しているかどうかに依存して、前記バックアップ・フィード・アダプタにより、前記バックアップ・フィード・アダプタの動作を管理するステップと、
を含む、前記方法。
【請求項２】
前記高速短待ち時間データ通信環境が高速短待ち時間データ通信ネットワークを含み、前記ネットワークが、前記アクティブ・フィード・アダプタと、前記バックアップ・フィード・アダプタと、前記ストリーム管理サーバと、少なくとも１つのサブスクライビング・クライアント・デバイスとをさらに含み、ルータをまったく含まない、請求項１に記載の方法。
【請求項３】
各フィード・アダプタが、第１のフォーマットを有するフィード・アダプタ・ソース・ストリーム上のメッセージを第２のフォーマットを有するフィード・アダプタ出力ストリーム上のメッセージに変換し、前記フィード・アダプタ出力ストリーム上の前記メッセージをサブスクライビング・クライアント・デバイスに送信する機能を有するデバイスを含む、請求項１または２に記載の方法。
【請求項４】
前記アクティブ・フィード・アダプタ状態が、前記サブスクライビング・クライアント・デバイスに送信するための前記アクティブ・メッセージング・ミドルウェア内の次のアクティブ・アプリケーション・メッセージの前記アクティブ・メッセージ・シーケンス番号と前記アクティブ・ソース・ストリーム・シーケンス番号とによって特徴付けられるアクティブ・メッセージ・ストリーム状態を含み、
前記バックアップ・フィード・アダプタ状態が、前記サブスクライビング・クライアント・デバイスに送信するための前記バックアップ・メッセージング・ミドルウェア内の次のバックアップ・アプリケーション・メッセージの前記バックアップ・メッセージ・シーケンス番号と前記バックアップ・ソース・ストリーム・シーケンス番号とによって特徴付けられるバックアップ・メッセージ・ストリーム状態を含む、請求項１、２、または３に記載の方法。
【請求項５】
前記アクティブ・フィード・アダプタ状態がアクティブ・メッセージ・ストリーム状態を含み、
前記バックアップ・フィード・アダプタ状態がバックアップ・メッセージ・ストリーム状態を含み、
前記バックアップ・フィード・アダプタ状態が前記アクティブ・フィード・アダプタ状態に同期しているかどうかを判断する前記ステップが、前記アクティブ・メッセージ・ストリーム状態が前記バックアップ・メッセージ・ストリーム状態と一致するかどうかを判断するステップをさらに含み、
前記バックアップ・フィード・アダプタの動作を管理する前記ステップが、前記バックアップ・フィード・アダプタ状態が前記アクティブ・フィード・アダプタ状態に同期していない場合に前記アクティブ・メッセージ・ストリーム状態と一致するように前記バックアップ・メッセージ・ストリーム状態を設定するステップをさらに含む、請求項１ないし４のいずれかに記載の方法。
【請求項６】
前記バックアップ・フィード・アダプタの動作を管理する前記ステップが、前記バックアップ・ソース・シーケンス番号について前記アクティブ・メッセージ・ストリーム状態のアクティブ・ソース・シーケンス番号の値と一致する値を有するバックアップ・アプリケーション・メッセージを前記バックアップ・フィード・アダプタが前に送信している場合に前記バックアップ・フィード・アダプタのバックアップ・ストリーム伝送速度を低減するステップをさらに含む、請求項５に記載の方法。
【請求項７】
前記アクティブ・フィード・アダプタ状態が前記アクティブ・フィード・アダプタのアクティブ・メッセージ変換アプリケーションのアクティブ・メッセージ変換アプリケーション状態をさらに含み、
前記バックアップ・フィード・アダプタ状態が前記バックアップ・フィード・アダプタのバックアップ・メッセージ変換アプリケーションのバックアップ・メッセージ変換アプリケーション状態をさらに含み、
前記バックアップ・フィード・アダプタ状態が前記アクティブ・フィード・アダプタ状態に同期しているかどうかを判断する前記ステップが、前記アクティブ・メッセージ変換アプリケーション状態が前記バックアップ・メッセージ変換アプリケーション状態と一致するかどうかを判断するステップをさらに含み、
前記バックアップ・フィード・アダプタの動作を管理する前記ステップが、前記バックアップ・フィード・アダプタ状態が前記アクティブ・フィード・アダプタ状態に同期していない場合に前記アクティブ・メッセージ変換アプリケーション状態と一致するように前記バックアップ・メッセージ変換アプリケーション状態を設定するステップをさらに含む、請求項１ないし６のいずれかに記載の方法。
【請求項８】
前記高速短待ち時間データ通信環境が、
複数のバックアップ・フィード・アダプタであって、各バックアップ・フィード・アダプタがバックアップ・メッセージ・ストリーム上で前記サブスクライビング・クライアント・デバイスにバックアップ・アプリケーション・メッセージを送信することができ、各バックアップ・フィード・アダプタがバックアップ・フィード・アダプタ状態によって特徴付けられ、前記バックアップ・フィード・アダプタ状態がバックアップ・メッセージ変換アプリケーション健全性状態を含む、複数のバックアップ・フィード・アダプタをさらに含み、
各バックアップ・フィード・アダプタのバックアップ・メッセージング・ミドルウェアで、各バックアップ・フィード・アダプタの前記バックアップ・メッセージ変換アプリケーション健全性状態を受信するステップをさらに含み、
前記バックアップ・フィード・アダプタの動作を管理する前記ステップが、前記バックアップ・フィード・アダプタ状態が前記アクティブ・フィード・アダプタ状態に同期していない場合に各バックアップ・フィード・アダプタの前記バックアップ・メッセージ変換アプリケーション健全性状態に依存して前記複数のバックアップ・フィード・アダプタのうちの１つを不合格にするステップをさらに含む、請求項１ないし７のいずれかに記載の方法。
【請求項９】
高速短待ち時間データ通信環境においてアクティブ・フィード・アダプタとバックアップ・フィード・アダプタを同期させるための装置であって、１つ以上のコンピュータ・プロセッサと、前記１つ以上のコンピュータ・プロセッサに動作可能に結合された１つ以上のコンピュータ・メモリとを含み、
ストリーム管理サーバにより、前記アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのアクティブ・メッセージ・ストリームの確立を仲介するステップであって、前記アクティブ・フィード・アダプタがアクティブ・フィード・アダプタ状態によって特徴付けられ、前記アクティブ・メッセージ・ストリームがアクティブ・アプリケーション・メッセージを前記サブスクライビング・クライアント・デバイスに伝達することができ、各アクティブ・アプリケーション・メッセージがアクティブ・ソース・ストリーム・シーケンス番号とアクティブ・メッセージ・シーケンス番号とによって特徴付けられるステップと、
前記ストリーム管理サーバにより、前記バックアップ・フィード・アダプタから前記サブスクライビング・クライアント・デバイスへのバックアップ・メッセージ・ストリームの確立を仲介するステップであって、前記バックアップ・フィード・アダプタがバックアップ・フィード・アダプタ状態によって特徴付けられ、前記バックアップ・メッセージ・ストリームが前記アクティブ・アプリケーション・メッセージの重複を表すバックアップ・アプリケーション・メッセージを前記サブスクライビング・クライアント・デバイスに伝達することができ、各バックアップ・アプリケーション・メッセージがバックアップ・ソース・ストリーム・シーケンス番号とバックアップ・メッセージ・シーケンス番号とによって特徴付けられるステップと、
前記バックアップ・フィード・アダプタのバックアップ・メッセージング・ミドルウェアで前記アクティブ・フィード・アダプタのアクティブ・メッセージング・ミドルウェアから前記アクティブ・フィード・アダプタ状態を受信するステップと、
前記バックアップ・フィード・アダプタにより、前記バックアップ・フィード・アダプタ状態が前記アクティブ・フィード・アダプタ状態に同期しているかどうかを判断するステップと、
前記バックアップ・フィード・アダプタ状態が前記アクティブ・フィード・アダプタ状態に同期しているかどうかに依存して、前記バックアップ・フィード・アダプタにより、前記バックアップ・フィード・アダプタの動作を管理するステップと、
を実行できるコンピュータ・プログラム命令が前記１つ以上のコンピュータ・メモリ内に配置されている、前記装置。
【請求項１０】
前記高速短待ち時間データ通信環境が高速短待ち時間データ通信ネットワークを含み、前記ネットワークが、前記アクティブ・フィード・アダプタと、前記バックアップ・フィード・アダプタと、前記ストリーム管理サーバと、少なくとも１つのサブスクライビング・クライアント・デバイスとをさらに含み、ルータをまったく含まない、請求項９に記載の装置。
【請求項１１】
各フィード・アダプタが、第１のフォーマットを有するフィード・アダプタ・ソース・ストリーム上のメッセージを第２のフォーマットを有するフィード・アダプタ出力ストリーム上のメッセージに変換し、前記フィード・アダプタ出力ストリーム上の前記メッセージをサブスクライビング・クライアント・デバイスに送信する機能を有するデバイスを含む、請求項９または１０に記載の装置。
【請求項１２】
前記アクティブ・フィード・アダプタ状態が、前記サブスクライビング・クライアント・デバイスに送信するための前記アクティブ・メッセージング・ミドルウェア内の次のアクティブ・アプリケーション・メッセージの前記アクティブ・メッセージ・シーケンス番号と前記アクティブ・ソース・ストリーム・シーケンス番号とによって特徴付けられるアクティブ・メッセージ・ストリーム状態を含み、
前記バックアップ・フィード・アダプタ状態が、前記サブスクライビング・クライアント・デバイスに送信するための前記バックアップ・メッセージング・ミドルウェア内の次のバックアップ・アプリケーション・メッセージの前記バックアップ・メッセージ・シーケンス番号と前記バックアップ・ソース・ストリーム・シーケンス番号とによって特徴付けられるバックアップ・メッセージ・ストリーム状態を含む、請求項９、１０、または１１に記載の装置。
【請求項１３】
高速短待ち時間データ通信環境においてアクティブ・フィード・アダプタとバックアップ・フィード・アダプタを同期させるためのコンピュータ・プログラムであって、コンピュータに、
ストリーム管理サーバにより、前記アクティブ・フィード・アダプタからサブスクライビング・クライアント・デバイスへのアクティブ・メッセージ・ストリームの確立を仲介するステップであって、前記アクティブ・フィード・アダプタがアクティブ・フィード・アダプタ状態によって特徴付けられ、前記アクティブ・メッセージ・ストリームがアクティブ・アプリケーション・メッセージを前記サブスクライビング・クライアント・デバイスに伝達することができ、各アクティブ・アプリケーション・メッセージがアクティブ・ソース・ストリーム・シーケンス番号とアクティブ・メッセージ・シーケンス番号とによって特徴付けられるステップと、
前記ストリーム管理サーバにより、前記バックアップ・フィード・アダプタから前記サブスクライビング・クライアント・デバイスへのバックアップ・メッセージ・ストリームの確立を仲介するステップであって、前記バックアップ・フィード・アダプタがバックアップ・フィード・アダプタ状態によって特徴付けられ、前記バックアップ・メッセージ・ストリームが前記アクティブ・アプリケーション・メッセージの重複を表すバックアップ・アプリケーション・メッセージを前記サブスクライビング・クライアント・デバイスに伝達することができ、各バックアップ・アプリケーション・メッセージがバックアップ・ソース・ストリーム・シーケンス番号とバックアップ・メッセージ・シーケンス番号とによって特徴付けられるステップと、
前記バックアップ・フィード・アダプタのバックアップ・メッセージング・ミドルウェアで前記アクティブ・フィード・アダプタのアクティブ・メッセージング・ミドルウェアから前記アクティブ・フィード・アダプタ状態を受信するステップと、
前記バックアップ・フィード・アダプタにより、前記バックアップ・フィード・アダプタ状態が前記アクティブ・フィード・アダプタ状態に同期しているかどうかを判断するステップと、
前記バックアップ・フィード・アダプタ状態が前記アクティブ・フィード・アダプタ状態に同期しているかどうかに依存して、前記バックアップ・フィード・アダプタにより、前記バックアップ・フィード・アダプタの動作を管理するステップと、
を実行させる、前記コンピュータ・プログラム。
【国際調査報告】
2009542141.tif 000011
2009542141.tif 000012