(57)【特許請求の範囲】
【請求項１】
ローカル・パブリッシュ／サブスクライブ・メッセージング・システムにおけるクライアントを遠隔ブローカーに接続するためのメッセージ・ブローカリング・システムであって、
少なくとも１つのクライアントと、
前記クライアントが接続されている１つのコミュニティ・ブローカーであって、前記クライアントは前記コミュニティ・ブローカーのクライアントである、前記コミュニティ・ブローカーと、
遠隔ブローカーを代理するメタブローカー・アプリケーション手段であって、前記コミュニティ・ブローカーのクライアントであり、且つ、前記複数のクライアントと前記遠隔ブローカーとの間でメッセージをプロキシ処理する、前記メタブローカー・アプリケーション手段と、
前記メタブローカー・アプリケーション手段に接続されている少なくとも１の前記遠隔ブローカーと
を備えており、
前記プロキシ処理が、
前記コミュニティ・ブローカーにサブスクライブして、遠隔ブローカーに宛てられた、クライアントからのメッセージを受信すること、及び、当該受信したメッセージを前記遠隔ブローカーに転送すること、
前記遠隔ブローカーから受信したメッセージを前記コミュニティ・ブローカーにパブリッシュすること
を含み、
前記パブリッシュすることは、
前記遠隔ブローカーからメッセージを受信するようにサブスクライブしているクライアントに前記遠隔ブローカーから受信したメッセージが宛てられていることを示すこと、及び、
前記遠隔ブローカーからのメッセージを受信するために、前記クライアントが前記コミュニティ・ブローカーにサブスクライブすることを可能にすることを含む、前記メッセージ・ブローカリング・システム。
【請求項２】
前記プロキシ処理が、
前記クライアントが前記遠隔ブローカーから受信することを望む情報を示すサブスクリプション要求を前記クライアントから受信すること
を含み、
前記メタブローカー・アプリケーション手段が、前記情報を前記遠隔ブローカーから受信するようにサブスクライブする、請求項１に記載のメッセージ・ブローカリング・システム。
【請求項３】
前記プロキシ処理が、
前記クライアントのサブスクリプション要求により、前記メッセージを遠隔ブローカーから前記クライアントに転送すること
を含む、請求項２に記載のメッセージ・ブローカリング・システム。
【請求項４】
前記クライアントは前記遠隔ブローカーのために意図されたメッセージを前記コミュニティ・ブローカーに対するメッセージに変換する手段を備えており、
前記メタブローカー・アプリケーション手段が、前記変換されたメッセージをサブスクライバーとして受信する、請求項１に記載のメッセージ・ブローカリング・システム。
【請求項５】
前記クライアントは１以上のメタブローカー・ワイルドカード・トピックスに対するメッセージをパブリッシュし、
前記メタブローカー・アプリケーション手段が、前記１以上のメタブローカー・ワイルドカード・トピックスに対して発行されたメッセージを受信することをサブスクライブする、請求項４に記載のメッセージ・ブローカリング・システム。
【請求項６】
前記メタブローカー・アプリケーション手段が、前記１以上のメタブローカー・ワイルドカード・トピックスに対してメッセージを発行し、
前記クライアントは前記１以上のメタブローカー・ワイルドカード・トピックスに対して発行されたメッセージを受信する、請求項５に記載のメッセージ・ブローカリング・システム。
【請求項７】
前記変換されたメッセージが、接続要求、パブリッシュ要求、サブスクライブ要求、アンサブスクライブ要求、又は切断要求である、請求項４に記載のメッセージ・ブローカリング・システム。
【請求項８】
ローカル・パブリッシュ／サブスクライブ・メッセージング・システムにおけるクライアントを遠隔ブローカーに接続する方法であって、
前記ローカル・パブリッシュ／サブスクライブ・メッセージング・システムは、
少なくとも１つのクライアントと、
前記クライアントが接続されている１つのコミュニティ・ブローカーであって、前記クライアントは前記コミュニティ・ブローカーのクライアントである、前記コミュニティ・ブローカーと、
遠隔ブローカーを代理するメタブローカー・アプリケーション手段であって、前記コミュニティ・ブローカーのクライアントであり、且つ、前記複数のクライアントと前記遠隔ブローカーとの間でメッセージをプロキシ処理する、前記メタブローカー・アプリケーション手段と、
前記メタブローカー・アプリケーション手段に接続されている少なくとも１の前記遠隔ブローカーと
を備えており、
前記方法は、前記メタブローカー・アプリケーション手段を使用して、
前記コミュニティ・ブローカーにサブスクライブして、遠隔ブローカーに宛てられた、クライアントからのメッセージを受信すること、及び、当該受信したメッセージを前記遠隔ブローカーに転送すること、
前記遠隔ブローカーから受信したメッセージを前記コミュニティ・ブローカーにパブリッシュすること、
を含み、
前記パブリッシュすることは、
前記遠隔ブローカーからメッセージを受信するようにサブスクライブしているクライアントに前記遠隔ブローカーから受信したメッセージが宛てられていることを示すこと、及び、
前記遠隔ブローカーからのメッセージを受信するために、前記クライアントが前記コミュニティ・ブローカーにサブスクライブすることを可能にすることを含む、前記方法。
【請求項９】
前記方法が、
前記クライアントが前記遠隔ブローカーから受信することを望む情報を示すサブスクリプション要求を前記クライアントから受信すること
前記メタブローカー・アプリケーション手段が前記情報を前記遠隔ブローカーから受信するようにサブスクライブすること
を含む、請求項８に記載の方法。
【請求項１０】
前記方法が、
前記クライアントのサブスクリプション要求により、前記メッセージを遠隔ブローカーから前記クライアントに転送すること
を含む、請求項９に記載の方法。
【請求項１１】
前記クライアントは前記遠隔ブローカーのために意図されたメッセージを前記コミュニティ・ブローカーに対するメッセージに変換し、
前記メタブローカー・アプリケーション手段が、前記変換されたメッセージをサブスクライバーとして受信する、請求項８に記載の方法。
【請求項１２】
前記クライアントは１以上のメタブローカー・ワイルドカード・トピックスに対するメッセージをパブリッシュし、
前記メタブローカー・アプリケーション手段が、前記１以上のメタブローカー・ワイルドカード・トピックスに対して発行されたメッセージを受信することをサブスクライブする、請求項１１に記載の方法。
【請求項１３】
前記メタブローカー・アプリケーション手段が、前記１以上のメタブローカー・ワイルドカード・トピックスに対してメッセージを発行し、
前記クライアントは前記１以上のメタブローカー・ワイルドカード・トピックスに対して発行されたメッセージを受信する、請求項１２に記載の方法。
【請求項１４】
前記変換されたメッセージが、接続要求、パブリッシュ要求、サブスクライブ要求、アンサブスクライブ要求、又は切断要求である、請求項１１に記載の方法。
【請求項１５】
ローカル・パブリッシュ／サブスクライブ・メッセージング・システムにおけるクライアントを遠隔ブローカーに接続するためのコンピュータ・プログラムであって、コンピュータに、請求項８〜１４のいずれか１項に記載の方法の各ステップを実行させる、前記コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パブリッシュ／サブスクライブ（パブ／サブ）メッセージング・システムに関する。
【背景技術】
【０００２】
パブリッシュ及びサブスクライブは、情報を複数のユーザに配布するための有効な方法である。パブリッシュ／サブスクライブ（パブ／サブ）・アプリケーションは、広域の動的で潜在的に多数の対象者に対して、タイミングよく、ビジネスのメッセージ及びトランザクションを取得する作業を非常に単純化するのに役立てることができる。
【０００３】
本発明の分野においては、パブ／サブ・アプリケーションは、典型的には、共通の目的をもつクライアントの「コミュニティ」のすべてが、特定のブローカーに接続して、クライアントが彼らの中でメッセージを送信及び受信することを可能にするように書かれることが知られている。明らかな例は、一方の組のクライアントがデータを作成し、別の組がそのデータを使用するプロデューサ／コンシューマ・アプリケーションである。別の例は、個々のクライアントが中央「ハブ」に接続して、請求、ゲームの更新、ハイスコアのような共通サービスにアクセスするオンライン・ゲーミングである。
【０００４】
しかし、この構成の問題は、パブ／サブ・アーキテクチャは「静的」なものであることである。クライアントの一人が、例えば、世界のどこかの異なるブローカーにパブリッシュされている何らかのデータにアクセスする必要がある場合、何らかのデータ・テーブル（例えば、或る市の一年間の平均降雨量）を更新する必要が滅多にない場合、又は、例えば、オンライン・ゲーミングのクライアントがゲーム製造業者にバグを報告する必要があったり、又は、新記録の「ハイスコア」を世界に認識させるためにパブリッシュする場合には、物事が困難になる。
【０００５】
ワールド・ワイド・ウェブ上では、ユーザは、ハイパーリンクを辿るだけで、容易に、「現在の」ウェブ・サーバから「飛び降り」て、別のウェブ・サーバに行くことができる。ウェブ・サービスにより、ユーザは、利用することを望むサービスに関する接続情報を検索することができる。しかし、これまで、このような代替的な情報の入手は、パブ／サブに可能ではなかった。
【０００６】
クライアントがその「現在の」ブローカーから切断し、異なるブローカーに再接続することは可能ではあるが、このことは、すべてのクライアントが、遠隔ブローカーに到達することを可能にする「外部」接続性を有することを前提とし、（例えば）オンライン・ゲーミング・システムの閉鎖的な世界においては、多くの場合、これは当て嵌まらない（さらに、なぜクライアントがこのような「汎用」アクセスを与えられるべきではないかといったセキュリティ上の理由がある）。そのため、解決されるべき問題は、閉鎖的なコミュニティのパブ／サブ・システムの制限された環境が与えられている場合に、パブ／サブが遠隔ブローカーにアクセスできるようにすることである。
【０００７】
米国特許第６４０５２５５号明細書は、エンティティが同じプロセスにあるか、異なるプロセスにあるかには関係のない、エンティティ間でのメッセージのパブリッシュを取り扱う。
ＷＯ  ０２／０５５０７明細書は、任意の無線ネットワーク上で、データを、モバイル・コンピュータ又は非モバイル・コンピュータ上で稼動しているプロデューサから、中間のプロキシ・コンピュータ・プログラムを通して、モバイル・コンピュータ又は非モバイル・コンピュータ上で稼動している１以上の受信者に送ることによって、携帯型のメッセージ・フォーマット形態でデータを配信するためのメッセージング・プロキシ・システムを開示する。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
したがって、中央ブローカー機能に接続された閉鎖的なパブ／サブ・コミュニティのユーザが、他の遠隔ブローカーと直接接続を取得することなく、パブ／サブ・メッセージをそれらの遠隔ブローカーと交換できるようにする必要性があり、これにより上述の欠点を緩和する。
【課題を解決するための手段】
【０００９】
本発明の第１の態様によれば、ローカル・パブリッシュ／サブスクライブ・メッセージング・システムにおけるクライアントを遠隔メッセージ・ブローカーに接続するためのメッセージ・ブローカリング・システムが提供され、このシステムは、前記遠隔ブローカーを代理するメタブローカー・アプリケーション手段を備え、前記メタブローカー・アプリケーション手段は、前記クライアントと前記遠隔ブローカーとの間でメッセージをプロキシ処理するためのパブリッシュ／サブスクライブ手段を含む。
【００１０】
クライアントと前記遠隔ブローカーとの間でメッセージをプロキシ処理するための手段は、クライアントから遠隔ブローカーに宛てられたメッセージを受信するための手段と、前記メッセージを遠隔ブローカーに転送するための手段とを含むことが好ましい。
【００１１】
受信するための手段は、遠隔ブローカーに宛てられたメッセージを受信するようにサブスクライブするための手段を含むことが好ましい。
【００１２】
クライアントと前記遠隔ブローカーとの間でメッセージをプロキシ処理するための手段は、遠隔ブローカーから、前記クライアントに宛てられたメッセージを受信するための手段を含み、メッセージ・ブローカリング・システムは、さらに、前記メッセージをクライアントに転送するための手段を含むことが好ましい。
【００１３】
メッセージ・ブローカリング・システムは、さらに、サブスクリプション要求を前記クライアントから受信するための手段を含むことが好ましい。サブスクリプション要求は、クライアントが、遠隔ブローカーから受信することを望む情報を示すことがましい。メタブローカー・アプリケーション手段は、このような情報を遠隔ブローカーから受信するようにサブスクライブするための手段を含むことが好ましい。
【００１４】
メッセージ・ブローカリング・システムは、さらに、クライアントのサブスクリプション要求により、メッセージを遠隔ブローカーからクライアントに転送するための手段を含むことが好ましい。
【００１５】
サブスクリプション要求は、クライアントが受信することを望む情報について少なくとも１つのトピックを示すことが好ましい。
【００１６】
別の態様によれば、ローカル・パブリッシュ／サブスクライブ・メッセージング・システムにおけるクライアントを遠隔メッセージ・ブローカーに接続する方法が提供され、ここでは、メタブローカー・アプリケーション手段が、前記遠隔ブローカーを代理しており、かつ、該方法は、パブリッシュ／サブスクライブを用いてメタブローカー・アプリケーション手段において受信されたメッセージを、前記クライアントと前記遠隔ブローカーとの間でプロキシ処理することを含む。
【００１７】
別の態様によれば、ローカル・パブリッシュ／サブスクライブ・メッセージング・システムにおけるクライアントを遠隔メッセージ・ブローカーに接続するメタブローカー・アプリケーションが提供され、前記メタブローカー・アプリケーションは、遠隔ブローカーを代理し、メタブローカー・アプリケーションは、メタブローカー・アプリケーション手段において受信されたメッセージを、前記クライアントと前記遠隔ブローカーとの間でプロキシ処理するパブリッシュ／サブスクライブを用いてステップを実行するようにされたプログラム・コード手段を含む。
【００１８】
メタブローカー・アプリケーションは、ローカル・パブリッシュ・サブスクライブ・メッセージング・システムのローカル・ブローカーに存在できることに注目されたい。或いは、これを、ローカル・ブローカーと関連させてもよい。
【００１９】
別の態様によれば、ローカル・パブリッシュ／サブスクライブ・メッセージング・システムにおけるクライアントを遠隔メッセージ・ブローカーに接続するメッセージ・ブローカリング・システムが提供され、このシステムは、ローカル・パブリッシュ／サブスクライブ・メッセージング・システムにおけるメッセージ・ブローカーと、前記遠隔メッセージ・ブローカーを代理するメタブローカー・アプリケーション手段とを備え、前記ローカル・メッセージ・ブローカーが、クライアントとメタブローカー・アプリケーション手段との間でメッセージをプロキシ処理するためのパブリッシュ／サブスクライブ手段を含み、前記メタブローカー・アプリケーションが、ローカル・ブローカーと遠隔ブローカーとの間でメッセージをプロキシ処理するためのパブリッシュ／サブスクライブ手段を含む。
【００２０】
別の態様によれば、ローカル・パブリッシュ／サブスクライブ・メッセージング・システムにおいて遠隔メッセージ・ブローカーに接続するためのクライアントが提供され、該クライアントは、遠隔ブローカーに対する接続を要求するための手段を含むクライアント・アプリケーションと、前記接続要求に応答して、前記要求を前記ローカル・パブリッシュ／サブスクライブ・メッセージング・システムにおけるローカル・メッセージ・ブローカーにパブリッシュするための接続手段とを含み、前記要求はメタブローカー・アプリケーション手段により受信され、前記メタブローカー・アプリケーション手段は遠隔ブローカーを代理する。
【００２１】
クライアントからの接続要求は、メッセージを遠隔ブローカーにパブリッシュする要求を含むことができる。或いは、クライアントからの接続要求は、特定の情報を遠隔ブローカーから受信するサブスクリプション要求を含むことができる。
【００２２】
一実施形態によれば、少なくとも１つのクライアント、１次ブローカー、及び２次ブローカー手段を備えたパブリッシュ／サブスクライブ・メッセージング・システムが提供され、ここでは、１次ブローカーは、２次ブローカー手段とパブリッシュ／サブスクライブ通信するように構成され、少なくとも１つのクライアントは、第１のブローカーとのパブリッシュ／サブスクライブにより、２次ブローカー手段から情報を取得するように構成される。
【００２３】
一実施形態においては、２次ブローカー手段は、メタブローカーとさらに別のブローカーとを含み、メタブローカーは、このさらに別のブローカーのプロキシとして作用するように構成される。
【００２４】
一実施形態においては、クライアントは、２次ブローカー手段に接続するためのＪＭＳサービス手段を含む。
【００２５】
一実施形態においては、ＪＭＳサービスは、ＵＤＤＩ手段を含む。
【００２６】
一実施形態においては、少なくとも１つのクライアント、１次ブローカー、及び２次ブローカー手段を有するシステムにおいて、パブリッシュ／サブスクライブ・メッセージングをする方法が提供され、この方法は、パブリッシュ／サブスクライブ・メッセージングにより１次ブローカーと２次ブローカー手段との間で通信するステップと、少なくとも１つのクライアントにおいて、第１のブローカーとのパブリッシュ／サブスクライブにより、２次ブローカー手段から情報を取得するステップとを含む。
【００２７】
本発明は、さらに、ソフトウェアによっても実施できることに注目されたい。
【００２８】
簡単に述べると、本発明の好ましい形態においては、ユーザがすでに接続されているパブ／サブ「コミュニティ」ブローカーと、該「コミュニティ」ブローカーと１以上の遠隔ブローカーとの間のゲートウェイとして作用する新しい「プロキシ」アプリケーション（ここでは「メタブローカー」と呼ばれる）とを使用することにより、ユーザが「通常」接続されているブローカー以外のブローカー上にデータをパブリッシュし、またそのブローカー上のデータにサブサブスクライブする能力を一時的に取得するための機構を提供する。
【００２９】
この機構の重要な利点は、「コミュニティ」ブローカーに接続された幾つかのクライアントが、「メタブローカー」から遠隔ブローカーへの単一の接続を使用できることであり、このことは、すべてのクライアントの代わりに、メタブローカーが処理することができる、拡張性、接続性、又はファイアウォールの問題がある場合に有益である。
【００３０】
遠隔ブローカーのサービスは、ウェブ・サービス・ディスクリプション・ランゲージ（ＷＳＤＬ）、ユニバーサル・ディスクリプション・ディスカバリー・アンド・インテグレーション（ＵＤＤＩ）のようなウェブ・サービス機構を通して記述及び宣伝することができ、遠隔ブローカーに対する接続をどのように配置し、確立するかを見出すのに利便性のある方法を与える。
【００３１】
既存のパブ／サブ接続により、メッセージを遠隔ブローカーに「プロキシ処理する」このようなシステムは、接続の詳細がウェブ・サービス形式の検索を用いて取得され、「メッセージ・ブローカー・ウェブ・サービスを持ち、異種の多数のブローカーがプロキシ処理するオンデマンド・システム」と考えることができる。
【発明を実施するための最良の形態】
【００３２】
ここで、添付図面を参照して、単なる一例に過ぎないものとして、本発明の好ましい実施形態を含む、メッセージ・ブローカー・ウェブ・サービスを持ち、異種の多数のブローカーがプロキシ処理するオンデマンド・システムを説明する。
【００３３】
図１を参照すると、パブ／サブ・メッセージング・システム１００は、多数のパブ／サブ・クライアント（その中の３つである１１０、１２０、及び１３０が示される）を有しており、これらの各々は、ローカルの「コミュニティ」ブローカー１４０に接続されている。「メタブローカー」アプリケーション１５０もまた「コミュニティ」ブローカー１４０のクライアントであり、これは永続的に接続されているもので、ワイルドカード・トピック「メタブローカー／＃」（「＃」はトピックのワイルドカード記号である）にサブスクライブして、「ｍｅｔａｂｒｏｋｅｒ」の名前が前に付いたトピック、例えば、：ｍｅｔａｂｒｏｋｅｒ／ａ／ｂ、を有するすべてのメッセージを受け取るようになっている。
【００３４】
クライアント・アプリケーションが遠隔ブローカー１６０にアクセスすることを望む場合には、「メタブローカー」Ｊａｖａ（商標）  Ｍｅｓｓａｇｅ  Ｓｅｒｖｉｃｅ（ＪＭＳ）サービスに対して接続を要求する（Ｊａｖａ及びすべてのＪａｖａ関連の商標は、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，Ｉｎｃ．の米国及びその他の国における商標又は登録商標）。
【００３５】
このＪＭＳサービスは、実際には、クライアント上で稼動している（ＪＭＳ  ＡＰＩ−アプリケーション・プログラミング・インターフェース−１１４、メタブローカー  ＪＭＳ  ＴｏｐｉｃＣｏｎｎｅｃｔｉｏｎＦａｃｔｏｒｙ（ＴＣＦ）１１６、及びコミュニティＪＭＳ  ＴＣＦ１１８で構成された）ソフトウェア・ライブラリ１１２であり、クライアント・アプリケーションには、遠隔ブローカーと接続しているという印象を与えるが、実際は、メタブローカー１５０がサブスクライバとして受信するメッセージを、コミュニティ・ブローカー１４０にパブリッシュすることにより、コミュニティ・ブローカー１４０に対する「通常の」（既存の）接続を使用して、特別なメッセージをメタブローカー１５０に送信する。メタブローカー１５０は、要求される遠隔ブローカー１６０に接続し、クライアント・アプリケーション１１０への及びクライアント・アプリケーション１１０からのメッセージをプロキシ処理し、これらはすべて、コミュニティ・ブローカー１４０を通るパブ／サブにより行われる。事実上、これは「パブ／サブ上のパブ／サブ」と考えることができる。
【００３６】
ＪＭＳ接続オブジェクトを作成する場合には、クライアント・アプリケーションは、ユーザが使用することを望む遠隔ブローカーのサービスに関する識別子をパラメータとして送る。これは、ＩＰアドレス及びポート、又はドメイン名及びポートのように明示的なものであってもよいし、ウェブ・サービスのサービス名として処理される「サービス名」であってもよく、ＵＤＤＩ検索は、そのブローカーのサービスに関する接続情報を解決するように実行される。「サービス名」から物理的な接続の詳細をマッピングするには多数の方法があり、ＵＤＤＩは一例に過ぎないことが理解される。
【００３７】
メタブローカー・サービスのためのＪＭＳの実装は、クライアントが、通常、メッセージをメタブローカーに、及びメタブローカーから流すように接続されているコミュニティ・ブローカー１４０に対する既存の接続を使用する。このことは、ＪＭＳインターフェースによって行ってもよいし、パブリッシュ／サブスクライブ・メッセージング・モデルをサポートする他のメッセージング機能によって行ってもよい。
【００３８】
以下では、パブ／サブ・メッセージング・システムにおけるメタブローカー・アプリケーションにより、パブ／サブ・メッセージング・モデルを実装するのに用いることができるトピック及びメッセージ構造の１つの可能性のある実装が述べられる。以下の説明においては、メッセージ本体は、例えば、ＸＭＬ又は名前／値の対のような好適に構造化されたデータ表現を用いることを前提とする。クライアントの動作が述べられる場合には、これは、典型的には、クライアント・アプリケーションがアクセスするライブラリとして実装される、メタブローカーのＪＭＳサービスのクライアント側の実装であることが理解される。メタブローカー・アプリケーションの動作は、明確にすることが必要である場合に説明される。クライアント・アプリケーションは、単に、通常のＪＭＳ  ＡＰＩを呼び出して、ＪＭＳライブラリ層（すなわち、図の１１２）において起こっているコミュニティ・ブローカーによるプロキシ処理に気付くことなく、論理的に接続された遠隔ブローカー上にデータをパブリッシュし、また遠隔ブローカー上のデータにサブスクライブする。
【００３９】
換言すると、クライアント・アプリケーションは、すでに、どのようにコミュニティ・ブローカーに到達するかを知っている（又は、どのように接続するかについての命令をどのディレクトリに要求するかを知っている。例えば、Ｊａｖａネーミング及びディレクトリ・インターフェース検索）。コミュニティ・ブローカーは、パブリッシュ／サブスクライブを用いてメタブローカー・アプリケーションと通信し、メタブローカー・アプリケーションが遠隔ブローカーに接続する。
【００４０】
接続
アプリケーションからの「接続」要求に応答して、クライアントは：
トピック：ｍｅｔａｂｒｏｋｅｒ／ｒｅｑｕｅｓｔ／ｃｏｎｎｅｃｔ
メッセージ：
−このクライアントの代わりにメタブローカーが接続する遠隔ブローカーの識別情報（ＩＰアドレス及びポート、又はメタブローカーがＵＤＤＩディレクトリ照会を用いてＩＰアドレス及びポートに解決することになるウェブ・サービスのサービス名とすることができる）
−可能な認証情報（例えば、ユーザＩＤ、パスワード）
−（一時的に用いるための）クライアント独自の識別子（クライアントＵＩＤ）
を送信する。
クライアントは、
トピック：ｍｅｔａｂｒｏｋｅｒ／ｒｅｓｐｏｎｓｅ／｛ｃｌｉｅｎｔ  ＵＩＤ｝ｃｏｎｎａｃｋ
にサブスクライブする。
アドレス解決及び遠隔ブローカーへの接続が成功すると、メタブローカー・アプリケーションは、メッセージをコミュニティ・ブローカーにパブリッシュする：
トピック：ｍｅｔａｂｒｏｋｅｒ／ｒｅｓｐｏｎｓｅ／｛ｃｌｉｅｎｔ  ＵＩＤ｝ｃｏｎｎａｃｋ
メッセージ：
−メタブローカー・アプリケーションによる遠隔ブローカーへの接続が成功したかどうかを示す結果コード
−セッション識別子（セッションＩＤ）
【００４１】
接続が成功したと仮定して（戻りコードにより示される）、クライアントは、コミュニティ・ブローカーにおいて：
ｍｅｔａｂｒｏｋｅｒ／ｒｅｓｐｏｎｓｅ／｛ｃｌｉｅｎｔ  ＵＩＤ｝ｃｏｎｎａｃｋ
からアンサブスクライブし、コミュニティ・ブローカーにおいて：
ｍｅｔａｂｒｏｋｅｒ／ｒｅｓｐｏｎｓｅ／｛ｓｅｓｓｉｏｎ  ＩＤ｝＃
（すなわち、ｍｅｔａｂｒｏｋｅｒ／ｒｅｓｐｏｎｓｅ／｛ｓｅｓｓｉｏｎ  ＩＤ｝で始まるいずれかのトピック）
にサブスクライブする。
クライアントは、応答メッセージをメタブローカーから受信し（サブスクリプションにより）、適当なＪＭＳ戻りコードを通して、要求の結果をアプリケーションに通知できるようになる。
【００４２】
パブリッシュ
アプリケーションからの「パブリッシュ」要求に応答して、クライアントは：
トピック：ｍｅｔａｂｒｏｋｅｒ／ｒｅｑｕｅｓｔ／｛ｓｅｓｓｉｏｎ  ＩＤ｝／ｐｕｂｌｉｓｈ
メッセージ：
−アプリケーションから渡されたトピック
−アプリケーションから渡されたメッセージ本体
−サービスの質／永続性配信命令フラグ
−クライアント・メッセージ識別子（メッセージＩＤ）
を送信する。
メッセージが、メタブローカー・アプリケーションにより遠隔ブローカーに首尾よくパブリッシュされた場合には、メタブローカーは、メッセージをコミュニティ・ブローカーにパブリッシュする：
トピック：ｍｅｔａｂｒｏｋｅｒ／ｒｅｓｐｏｎｓｅ／｛ｓｅｓｓｉｏｎ  ＩＤ｝／ｐｕｂａｃｋ
メッセージ：
−メッセージＩＤ
−場合によっては結果コード
クライアントは、このメッセージを受信し（サブスクリプションにより）、適当なＪＭＳ戻りコードを通して、要求の結果をアプリケーションに通知できるようになる。
【００４３】
サブスクライブ
アプリケーションからの「サブスクライブ」要求に応答して、クライアントは、
トピック：ｍｅｔａｂｒｏｋｅｒ／ｒｅｑｕｅｓｔ／｛ｓｅｓｓｉｏｎ  ＩＤ｝／ｓｕｂｓｃｒｉｂｅ
メッセージ：
−アプリケーションにより要求されたトピック
−他のサブスクリプション・フラグ（例えば、サービスの質、耐久性）
−クライアント・メッセージＩＤ（メッセージＩＤ）
を送信する。
メタブローカーは、このメッセージを受信し、クライアントの代わりに要求されたトピックにサブスクライブする。
遠隔サブスクリプションが確認された場合には、メタブローカーは、メッセージをコミュニティ・ブローカーにパブリッシュする：
トピック：ｍｅｔａｂｒｏｋｅｒ／ｒｅｓｐｏｎｓｅ／｛ｓｅｓｓｉｏｎ  ＩＤ｝／ｓｕｂａｃｋ
メッセージ：
−メッセージＩＤ
−サブスクリプション確認結果コード
クライアントは、このメッセージを受信し（サブスクリプションにより）、適当なＪＭＳ戻りコードを通して、要求の結果をアプリケーションに通知できるようになる。
【００４４】
アンサブスクライブ
アンサブスクライブは、サブスクライブと同様な方法により実装され、さらに詳細に述べる必要はない。
【００４５】
着信パブリケーション
メタブローカーが遠隔ブローカーから、メタブローカー・アプリケーションを通して遠隔ブローカーのセッションを有するコミュニティ・ブローカーのクライアントの１つに宛てられたメッセージを受け取った場合には、該メタブローカーは、このメッセージがどのクライアント宛てであるかを判断し（ルックアップ表、及び、場合によっては、図示されていないパブリケーション「マッチング・エンジン」を用いて）、メッセージをコミュニティ・ブローカーにパブリッシュする：
トピック：ｍｅｔａｂｒｏｋｅｒ／ｒｅｓｐｏｎｓｅ／｛ｓｅｓｓｉｏｎ  ＩＤ｝／ｐｕｂｌｉｓｈ
メッセージ：
−トピック
−メッセージ本体
クライアント・アプリケーションは、メッセージを受信し、適当な機構を起動させて、先に配置されたサブスクリプションと適合する着信メッセージを受信したことをアプリケーションに通知する。
遠隔ブローカーは、インタレストを登録した（サブスクライブした）各々のクライアントにパブリケーション・メッセージのコピーを送信することに注目されたい。メタブローカー・アプリケーションは、１つのこのようなサブスクライバであり、コミュニティ・ブローカーによる「サブスクライブ」要求に基づいて、そのクライアントの代わりにサブスクライブしている。
幾つかのブローカー（又は、幾つかの接続プロトコル）は、その時点で実際には接続されていなかったとしても、メッセージをサブスクライバに対して保持することを可能にする。すなわち、メタブローカーは（このようなプロトコルを使用していた場合には）、そのクライアントの１つの代わりに幾つかのトピックにサブスクライブし、次いで切断され、後でブローカーに戻り、そのサブスクリプションと適合するメッセージを収集し、次いで、これらをそのクライアントに転送することができる。ＩＢＭのＷｅｂＳｐｈｅｒｅ  ＭＱは１つのこのようなプロトコルである。このようなサブスクリプションは、「永続サブスクリプション」として知られており、すなわち、これらは、クライアントが切断した場合でも「続き」、要求されなくなったときには、明示的にキャンセル（アンサブスクライブ）されねばならない。
【００４６】
切断
クライアントが、遠隔ブローカーからの切断を要求した場合には、クライアントのライブラリは、メッセージをパブリッシュする：
トピック：ｍｅｔａｂｒｏｋｅｒ／ｒｅｑｕｅｓｔ／｛ｓｅｓｓｉｏｎ  ＩＤ｝／ｄｉｓｃｏｎｎｅｃｔ
遠隔ブローカーから切断した後、メタブローカーは、メッセージをコミュニティ・ブローカーにパブリッシュする：
トピック：ｍｅｔａｂｒｏｋｅｒ／ｒｅｓｐｏｎｓｅ／｛ｓｅｓｓｉｏｎ  ＩＤ｝／ｄｉｓｃａｃｋ
クライアントは、このメッセージを受信し（サブスクリプションにより）、適当なＪＭＳ戻りコードを通して、要求の結果をアプリケーションに通知できるようになる。
クライアントは、次いで、コミュニティ・ブローカーにおいて、：
ｍｅｔａｂｒｏｋｅｒ／ｒｅｓｐｏｎｓｅ／｛ｓｅｓｓｉｏｎ  ＩＤ｝＃
からアンサブスクライブする。
【００４７】
上述の、メッセージ・ブローカー・ウェブ・サービスを持ち、異種の多数のブローカーがプロキシ処理するオンデマンド・システムは、以下の利点を与えることが理解される。
「コミュニティ」ブローカーに接続されたクライアントは、この「コミュニティ」ブローカーに対する単一の既存の接続を使用することにより、直接のネットワーク接続なしで、遠隔パブ／サブ・ブローカーにアクセスすることができる。
「コミュニティ」ブローカーに接続された幾つかのクライアントは、「メタブローカー」から遠隔ブローカーへの単一の接続を使用することができ、このことは、すべてのクライアントの代わりに、メタブローカーが処理することができる、拡張性、接続性、又はファイアウォールの問題がある場合に有益である。
遠隔ブローカーのサービスは、ＷＳＤＬ、ＵＤＤＩのようなウェブ・サービス機構を通して記述及び宣伝することができ、遠隔ブローカーに対する接続をどのように配置し、確立するかを見出すのに利便性のある方法を与える。
【００４８】
パブリッシュ／サブスクライブ・メッセージングのための上述の方法は、プロセッサ（図示せず）上で稼動しているソフトウェアで実行することができ、このソフトウェアは、磁気又は光学コンピュータ・ディスクのような任意の好適なデータ・キャリア（図示せず）で配布されるコンピュータ・プログラム要素として提供することができることが理解される。
【００４９】
要約すると、上述の、メッセージ・ブローカー・ウェブ・サービスを持ち、異種の多数のブローカーがプロキシ処理するオンデマンド・システムは、「コミュニティ」ブローカーに接続されたクライアントが、この「コミュニティ」ブローカーに対する単一の既存の接続を使用することにより、直接のネットワーク接続なしで、遠隔パブ／サブ・ブローカーにアクセスすることができるという利点を与えることが理解される。さらに、「コミュニティ」ブローカーに接続された幾つかのクライアントは、「メタブローカー」から遠隔ブローカーへの単一の接続を使用することができ、このことは、すべてのクライアントの代わりに、メタブローカーが処理することができる拡張性、接続性、又はファイアウォールの問題がある場合に有益である。遠隔ブローカーのサービスは、ＷＳＤＬ、ＵＤＤＩ、のようなウェブ・サービス機構を通して記述及び宣伝することができ、遠隔ブローカーに対する接続をどのように配置し、確立するかを見出すのに利便性のある方法を与える。
【図面の簡単な説明】
【００５０】
【図１】本発明の好ましい実施形態を含むパブリッシュ・システムのブロック概略図を示す。
【図１】
0004452274.tif 000002