[go: up one dir, main page]

JP2014515152A - 発行/購読メッセージング・システムにおいてメッセージの購読を管理するための方法および装置、ならびにコンピュータ・プログラム - Google Patents

発行/購読メッセージング・システムにおいてメッセージの購読を管理するための方法および装置、ならびにコンピュータ・プログラム Download PDF

Info

Publication number
JP2014515152A
JP2014515152A JP2014510908A JP2014510908A JP2014515152A JP 2014515152 A JP2014515152 A JP 2014515152A JP 2014510908 A JP2014510908 A JP 2014510908A JP 2014510908 A JP2014510908 A JP 2014510908A JP 2014515152 A JP2014515152 A JP 2014515152A
Authority
JP
Japan
Prior art keywords
message
smi
subscription
subscriber
broker
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2014510908A
Other languages
English (en)
Inventor
ベアダール、ギャヴィン、デイヴィッド
バンクス、アンドリュー、デイヴィッド
ディック、エイドリアン、デイヴィッド
ホームウッド、ブライアン、クライブ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2014515152A publication Critical patent/JP2014515152A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/562Brokering proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

【課題】発行/購読メッセージング・システムにおいてメッセージの購読を管理するための方法、装置、またはコンピュータ・プログラム製品を提供すること。
【解決手段】ブローカ・アプリケーション・プログラムでサブスクライバ・アプリケーション・プログラムの状態を保有するように、発行/購読メッセージング・システムにおいてメッセージ・ブローカ・アプリケーション・プログラムおよびメッセージ・サブスクライバ・アプリケーション・プログラムを管理するための方法、装置、またはコンピュータ・プログラム製品が開示される。
【選択図】図2

Description

本発明は、発行/購読メッセージング・システムにおいてメッセージの購読を管理するための方法、装置、またはコンピュータ・プログラム製品に関する。
コンピュータ化された発行/購読メッセージング・システムにおいては、サブスクライバ・アプリケーション・プログラム(サブスクライバ)が、発行されたメッセージを受信するために単一のメッセージ・ブローカ・アプリケーション・プログラム(メッセージ・ブローカ)を購読する可能性がある。このメッセージ・ブローカが故障する場合、サブスクライバは、もはやメッセージを受信することができない。サブスクライバは、メッセージ・ブローカに再接続されるときには、いくつかのメッセージを見逃してしまっている恐れがある。
一部の発行/購読メッセージング・システムは、購読サービスの喪失または中断の可能性を減らすために高信頼性高可用性(high reliability high availability)(HRHI)メッセージ・ブローカを提供する。言い換えると、そのようなHRHIサービスは、所与の購読に関してメッセージの順序を維持し、メッセージを失わないように構成される。
そのような購読サービスは、複数の購読ストリーム(subscription stream)を提供する複数のブローカを同時に購読することによって提供され得る。購読は、複数のメッセージ・ブローカから直接受信されるか、または中間メッセージ・ブローカを1つ購読することによって受信され得る。
そのようなHRHI購読サービスの1つの問題は、それらのサービスが、メッセージ・サブスクライバ・アプリケーション・プログラムまたはメッセージ・ブローカ・アプリケーション・プログラムのどちらかで必要とされる処理の点で比較的コストが高いことである。例えば、サブスクライバの状態が保有される必要があり、つまり、所与の購読からのどのメッセージが受信されたかの記録が保有される必要がある。状態は、関連するメッセージ・ブローカから切断された後に購読を適切に修復することを可能にする。さらに、単一の購読が複数のメッセージ・ブローカから受信される場合、冗長なまたは重複するメッセージを管理することは、比較的複雑なプロセスである。
本発明の一実施形態は、発行/購読メッセージング・システムのメッセージ購読アプリケーション・プログラムでメッセージの購読を管理するための方法を提供し、方法は、
メッセージ・ブローカの組のそれぞれによって並列に提供される購読を購読するステップであって、購読は共通の順番のメッセージを含み、それぞれの共通のメッセージは共通のシーケンシャル・メッセージ識別子(sequential message identifier)(SMI)に関連付けられる、ステップと、
メッセージ・ブローカのうちの選択された1つからメッセージを取得し、メッセージ・ブローカにおける購読に関する関連するSMIの保存をトリガするステップと、
メッセージ・サブスクライバの再始動に応じて、メッセージ・ブローカの組に戻って、メッセージ・ブローカのうちの任意の1つで購読に関する最も新しい保存されたSMIを判定するステップと、
メッセージ・ブローカのうちの選択された1つから、最も新しいSMIに関連するメッセージの続きのメッセージを要求することによって購読を再開するステップとを含む。
方法は、
選択されたメッセージ・ブローカから購読を再開するステップに応じて、その組の残りのメッセージ・ブローカのそれぞれに、判定された最も新しいSMIに関連するメッセージ以前の、順番の中のすべてのキューに入れられたメッセージを破棄するように指示するさらなるステップを含み得る。
所与のメッセージの受信の肯定応答が、SMIの保存をトリガする可能性がある。メッセージは、所定のプロトコルにしたがって次々に各ブローカから順番に要求される可能性がある。プロトコルは、ラウンド・ロビン・プロトコルであっても良い。
別の実施形態は、発行/購読メッセージング・システムのメッセージ・ブローカ・アプリケーション・プログラムでメッセージの購読を管理するための方法を提供し、方法は、
メッセージ・サブスクライバからの購読要求に応じて購読を購読するステップであって、購読は共通の順番のメッセージを含み、それぞれの共通のメッセージは共通のシーケンシャル・メッセージ識別子(SMI)に関連付けられる、ステップと、
メッセージ・サブスクライバにメッセージを送信し、メッセージ・ブローカにおいて関連するSMIを購読に関連して記録するステップと、
メッセージ・サブスクライバからの要求に応じてSMIをメッセージ・サブスクライバに送信するステップとを含む。
方法は、
所与のSMIに対する続きのメッセージの要求に応じて、続きのメッセージを送信するさらなるステップを含み得る。方法は、
続きのメッセージを送信するステップに応じて、続きのメッセージおよび順番の中のすべてのキューに入れられた前のメッセージを破棄するさらなるステップを含み得る。
メッセージ・サブスクライバにメッセージを送信するステップおよび購読に関するSMIを記録するステップは、単一の処理単位で実行される可能性がある。SMIは、永続的ストレージに保存しても良い。
さらなる実施形態は、発行/購読メッセージング・システムのメッセージ購読アプリケーション・プログラムでメッセージの購読を管理するための装置を提供し、装置は、
メッセージ・ブローカの組のそれぞれによって並列に提供される購読を購読することであって、購読は共通の順番のメッセージを含み、それぞれの共通のメッセージは共通のシーケンシャル・メッセージ識別子(SMI)に関連付けられる、ことと、
メッセージ・ブローカのうちの選択された1つからメッセージを取得し、メッセージ・ブローカにおける購読に関する関連するSMIの保存をトリガすることと、
メッセージ・サブスクライバの再始動に応じて、メッセージ・ブローカの組に戻って、メッセージ・ブローカのうちの任意の1つで購読に関する最も新しい保存されたSMIを判定することと、
メッセージ・ブローカのうちの選択された1つから、最も新しいSMIに関連するメッセージの続きのメッセージを要求することによって購読を再開することとを行うように動作可能である。
別の実施形態は、発行/購読メッセージング・システムのメッセージ・ブローカ・アプリケーション・プログラムでメッセージの購読を管理するための装置を提供し、装置は、
メッセージ・サブスクライバからの購読要求に応じて購読を購読することであって、購読は共通の順番のメッセージを含み、それぞれの共通のメッセージは共通のシーケンシャル・メッセージ識別子(SMI)に関連付けられる、ことと、
メッセージ・サブスクライバにメッセージを送信し、メッセージ・ブローカにおいて関連するSMIを購読に関連して記録することと、
メッセージ・サブスクライバからの要求に応じてSMIをメッセージ・サブスクライバに送信することとを行うように動作可能である。
さらなる実施形態は、コンピュータ可読媒体に記憶され、コンピュータの内部メモリにロードされ得るコンピュータ・プログラムであって、コンピュータで実行されるときに、発行/購読メッセージング・システムのメッセージ購読アプリケーション・プログラムでメッセージの購読を管理するための方法を実行するように構成されたソフトウェア・コード部分を含む、コンピュータ・プログラムを提供し、方法は、
メッセージ・ブローカの組のそれぞれによって並列に提供される購読を購読するステップであって、購読は共通の順番のメッセージを含み、それぞれの共通のメッセージは共通のシーケンシャル・メッセージ識別子(SMI)に関連付けられる、ステップと、
メッセージ・ブローカのうちの選択された1つからメッセージを取得し、メッセージ・ブローカにおける購読に関する関連するSMIの保存をトリガするステップと、
メッセージ・サブスクライバの再始動に応じて、メッセージ・ブローカの組に戻って、メッセージ・ブローカのうちの任意の1つで購読に関する最も新しい保存されたSMIを判定するステップと、
メッセージ・ブローカのうちの選択された1つから、最も新しいSMIに関連するメッセージの続きのメッセージを要求することによって購読を再開するステップとを含む。
さらなる実施形態は、コンピュータ可読媒体に記憶され、コンピュータの内部メモリにロードされ得るコンピュータ・プログラムであって、コンピュータで実行されるときに、発行/購読メッセージング・システムのメッセージ・ブローカ・アプリケーション・プログラムでメッセージの購読を管理するための方法を実行するように構成されたソフトウェア・コード部分を含む、コンピュータ・プログラムを提供し、方法は、
メッセージ・サブスクライバからの購読要求に応じて購読を購読するステップであって、購読は共通の順番のメッセージを含み、それぞれの共通のメッセージは共通のシーケンシャル・メッセージ識別子(SMI)に関連付けられる、ステップと、
メッセージ・サブスクライバにメッセージを送信し、メッセージ・ブローカにおいて関連するSMIを購読に関連して記録するステップと、
メッセージ・サブスクライバからの要求に応じてSMIをメッセージ・サブスクライバに送信するステップとを含む。
ここで、本発明の実施形態が、添付の図面を参照して単なる例として説明される。
コンピュータ化された発行/購読メッセージング・システムの概略図である。 図1の発行/購読メッセージング・システムによって実行される処理の図示された例を示す図である。 図1の発行/購読メッセージング・システムによって実行される処理の図示された例を示す図である。 図1の発行/購読メッセージング・システムによって実行される処理の図示された例を示す図である。 図1の発行/購読メッセージング・システムのメッセージ・サブスクライバ・アプリケーション・プログラムによって実行される処理を示す流れ図である。 図1の発行/購読メッセージング・システムのメッセージ・サブスクライバ・アプリケーション・プログラムによって実行される処理を示す流れ図である。 図1の発行/購読メッセージング・システムのメッセージ・サブスクライバ・アプリケーション・プログラムによって実行される処理を示す流れ図である。 図1の発行/購読メッセージング・システムのメッセージ・サブスクライバ・アプリケーション・プログラムによって実行される処理を示す流れ図である。
図1を参照すると、コンピュータ化された発行/購読メッセージング・システム101は、ネットワーク108によって相互に接続され、1つまたは複数のアプリケーション・プログラムを実行するための処理環境を提供するように構成されたオペレーティング・システム109をそれぞれが搭載した6つのコンピュータ102、103、104、105、106、107を含む。第1のコンピュータ102は、メッセージ・パブリッシャ・アプリケーション・プログラム(パブリッシャ)110を実行するように構成される。第2、第3、第4、および第5のコンピュータ103、104、105、106は、メッセージ・ブローカA、B、C、およびDをそれぞれ提供するメッセージ・ブローカ・アプリケーション・プログラム(ブローカ)111を実行するようにそれぞれ構成される。第6のコンピュータ107は、メッセージ・サブスクライバ・アプリケーション・プログラム(サブスクライバ)112を実行するように構成される。この実施形態においては、発行/購読メッセージング・システム101用のソフトウェアは、IBMのIBM(R)WebSphere(R)メッセージ・ベース・ミドルウェア・システムによって提供される。IBMおよびWebSphereは、世界中の多くの管轄機関に登録されたIBMの商標である。
図2を参照すると、この実施形態において、パブリッシャ110は、ブローカA 111にメッセージを発行するように構成される。ブローカA 111は、サブスクライバ112からの要求に応じて、残りの3つのブローカB、CおよびD 111を介して高信頼性高可用性(HRHI)の購読を提供するように構成される。パブリッシャ110は、そのパブリッシャ110が発行するメッセージの順番で各メッセージに一意のシーケンシャル・メッセージ識別子(SMI)を割り振るようにさらに構成される。SMIは、所与の購読に関するメッセージの順番で任意のメッセージを一意に特定するように構成され、所与のメッセージに対して順番が前のまたは後のメッセージを特定するための手段も提供する。
HRHIブローカB、C、およびD 111は、HRHIの購読を提供し、HRHIの購読に関する未読メッセージを記憶するための関連するメッセージ・キュー201を保有するように構成される。サブスクライバ112からブローカB、C、およびD 111のうちの所与の1つに対する要求に応じて、関連するブローカ111は、要求されたメッセージを提供するように構成される。さらに、ブローカ111は、送信されたメッセージに関する関連するSMIを、そのブローカ111の関連するメッセージ・キュー201に関する状態変数として記憶するように構成される。言い換えると、保存されるSMIは、所与のブローカ111上のHRHIの購読の状態を示す。それぞれの順番に保存されるSMIは、前の保存されたすべてのSMIを上書きする。SMIは、ブローカ111に何らかの故障が発生した場合に修復可能であるように関連するブローカ111の永続的メモリに保存される。所与のメッセージに関する関連するSMIは、要求元のサブスクライバ112がメッセージを正常に受信した場合にのみ保存される。この実施形態において、所与のメッセージの送信および関連するSMIの保存は、単一の処理単位で、つまり、単一のトランザクションとして関連するブローカ111によって処理されるように構成される。
サブスクライバ112は、所定のプロトコルにしたがって次々にブローカB、C、およびD 111のそれぞれからのHRHIの購読に関するメッセージを要求するように構成される。この実施形態においては、サブスクライバは、ラウンド・ロビン・プロトコルを使用する。サブスクライバ112は、最も新しく正常に受信されたメッセージのSMIのコピーを記憶するようにさらに構成される。SMIのサブスクライバのコピーは、サブスクライバ112に関するHRHIの購読の状態を示す。サブスクライバ112は、記憶されたSMIを用いて、ラウンド・ロビン・メッセージ要求プロトコルにしたがってブローカB、C、およびD 111のうちの次のブローカから要求するべき、HRHIの購読の順番が次のメッセージを決定する。サブスクライバ112は、所与のメッセージの成功した受信に応じてブローカB、C、およびD 111に破棄メッセージを送信することによってメッセージ・キュー201を管理するようにさらに構成される。言い換えると、サブスクライバ112は、所与のメッセージを受信するとき、そのメッセージのSMIによって受信されたメッセージを特定するすべてのブローカB、C、およびD 111に破棄メッセージを発行する。そのような破棄メッセージに応じて、ブローカB、C、およびD 111のそれぞれは、破棄メッセージで受信されたSMIに対応するメッセージ以前の、それらのブローカ111のそれぞれのメッセージ・キュー201のすべてのメッセージを破棄するように構成される。
図2は、サブスクライバ112によるHRHIの購読の初期化時の、HRHIの購読を提供するブローカB、C、およびD 111のそれぞれのメッセージ・キュー201の状態と、さらに、サブスクライバ112の状態とを示す。起動時に、サブスクライバ112は、この実施形態においてはHRHIの購読を提供するためのブローカの事前に構成された組であるブローカB、C、およびD 111への接続を行う。サブスクライバ112は、そのサブスクライバ112自体の状態と、ブローカB、C、およびD 111のそれぞれの状態とが未定義であると判定する。したがって、図2に示された状態から進むとき、サブスクライバは、第1のメッセージ、つまり、ブローカB、C、およびD 111のうちの選択された1つ、例えばブローカB 111からのメッセージAを読む。メッセージAがブローカB 111から正常に受信されると、サブスクライバは、メッセージAに関する「1」であるSMIを記録する。次に、サブスクライバは、SMI=1とした破棄メッセージをブローカB、C、D 111に送信する。それから、サブスクライバ112は、ラウンド・ロビン・プロトコルを用いて、順番の中で次のメッセージ、つまりSMI=2であるメッセージBを取得するべきブローカC、D 111のうちの次のブローカを選択する。そして、プロセスは、同様にして継続する。
図3は、サブスクライバ112が故障した後に再始動したときの、HRHIの購読を提供するブローカB、C、およびD 111のそれぞれのメッセージ・キュー201の状態と、さらに、サブスクライバ112の状態とを示す。そのような故障の結果として、サブスクライバ112の故障前の状態である最後に受信されたSMIの非永続的コピーはもはや利用できない。したがって、再始動に応じて、サブスクライバ112は、ブローカB、C、およびD 111に再接続し、次に、それぞれの記憶されたSMIの形態の関連するメッセージ・キュー201の状態のそれらのブローカ111のコピーをそれぞれのブローカ111に問い合わせるように構成される。図3の例においては、5である最も大きなSMIが、ブローカB 111に記憶されている。これに応じて、サブスクライバ112は、SMI=5を示すデータを含む破棄メッセージをブローカB、C、D 111に送信する。それから、サブスクライバ112は、次のブローカ111を選択するためにラウンド・ロビン・プロトコルを用いてメッセージを要求することを再開し、動作を再開する。
図4は、ブローカD 111への接続またはブローカD 111自体がクラッシュし、サブスクライバ112がもはやブローカD 111からメッセージを取得できなくなった後の、HRHIの購読を提供するブローカB、C、およびD 111のそれぞれのメッセージ・キュー201の状態と、さらに、サブスクライバ112の状態とを示す。ブローカDがダウンしていた間、サブスクライバ112は、その他のブローカB、C 111から途切れていない一連のメッセージを受信し続けていた。したがって、ブローカD 111の状態およびメッセージ・キュー201は、残りのブローカ111と同期していない。したがって、ブローカDが再び利用可能になることに応じて、サブスクライバ112は、サブスクライバの現在の状態、つまりSMI=5を含む破棄メッセージを再接続されたブローカD 111に送信するように構成される。破棄メッセージは、メッセージ2から5までを破棄し、ブローカの状態をSMI=5に設定することによって、再接続されたブローカD 111のメッセージ・キュー201および状態を再び同期させる効果がある。
要するに、サブスクライバ112が実行されたままである場合、ブローカ111のうちの1つが実行されたままである限り、途切れていない一連のメッセージが、サブスクライバ112によって重複なく受信される。サブスクライバ112が故障する場合は、その後の再始動時に、最新のSMIを有するブローカ111が実行されている限り、サブスクライバ112は、途切れていない一連のメッセージを重複なく受信することになる。
HRHIの購読を設定するときにサブスクライバ112によって実行される処理が、以降、図5の流れ図を参照してさらに説明される。処理は、サブスクライバ・アプリケーション・プログラム112の起動によって開始され、処理は、ステップ502に進む。ステップ502において、HRHIの購読のために、接続されたブローカ111に要求が送信され、処理はステップ503に進む。ステップ503において、HRHIの購読を提供するブローカ111の組を特定するデータの受信に応じて、それぞれのブローカ111への接続が行われ、処理はステップ504に進む。ステップ504において、サブスクライバの状態がゼロに初期化され(SMI=0)、HRHIブローカ111の組のうちの第1のブローカ111が、ラウンド・ロビン・プロトコルにしたがって選択され、処理はステップ505に進む。ステップ505において、この実施形態においてはSMI=1を有する、順番の中で第1のメッセージが、選択されたブローカから要求され、処理はステップ506に進む。ステップ506において、要求されたメッセージの正常な受信および肯定応答に応じて、新しい状態がサブスクライバ112において記録され、処理はステップ507に進む。ステップ507において、メッセージに関連するSMIによって最後に読まれたメッセージを特定する破棄メッセージが、HRHIブローカ111の組に送信され、処理はステップ508に進む。ステップ508において、ラウンド・ロビン・プロトコルにしたがって次のブローカが選択され、処理はステップ505に進み、上述のように進行する。
サブスクライバ112からのメッセージ要求に応じてブローカ111のうちの1つによって実行される処理が、以降、図6の流れ図を参照してさらに説明される。処理は、HRHIの購読に関するメッセージ要求の受信によってステップ601において開始され、処理は、ステップ602に進む。ステップ602において、要求されたメッセージが要求元に送信され、処理はステップ603に進む。ステップ603において、要求元によるメッセージの受信の肯定応答が待たれ、受信されると、処理はステップ604に進む。ステップ604において、正常に送信されたメッセージのSMIが、関連するHRHIメッセージ・キュー201の状態として記録される。次いで、処理はステップ605に進み、終了する。
故障またはクラッシュの後で再始動するときにサブスクライバ112によって実行される処理が、以降、図7の流れ図を参照してさらに説明される。処理は、サブスクライバ・アプリケーション・プログラム112の再始動によって開始され、処理は、ステップ702に進む。ステップ702において、HRHIブローカ111の組への接続が再確立され、処理はステップ703に進む。ステップ703において、HRHIブローカ111のそれぞれの関連するキュー201の状態が判定され、処理はステップ704に進む。ステップ704において、最新のブローカの状態、つまり、ブローカの組からの最も大きなSMIが特定され、処理はステップ705に進む。ステップ705において、最新のブローカの状態のSMIを特定する破棄メッセージが、HRHIブローカ111の組に送信され、処理はステップ706に進む。ステップ706からステップ709まで、処理は、等価なステップ505から508までに関して図5を参照して上で説明されたように進む。
HRHIブローカ111への接続の喪失に応じてサブスクライバ112によって実行される処理が、以降、図8の流れ図を参照してさらに説明される。処理は、HRHIブローカ111への接続の喪失によって開始され、処理は、ステップ802に進む。ステップ802において、処理は、ステップ803に進む前に、切断されたブローカが利用可能になるのを待つ。ステップ803において、ブローカ111への接続が再確立され、処理はステップ804に進む。ステップ804において、サブスクライバ112の現在の状態(SMI)を特定する破棄メッセージが、再接続されたブローカ111に送信される。次いで、処理はステップ805に進み、終了する。
さらなる実施形態において、ブローカは、すべての破棄を協力して処理する。言い換えると、各ブローカは、破棄する機能をサブスクライバからなくすために、HRHIブローカの組のその他のブローカにそのブローカが破棄することを伝えることができる。ブローカは、そのブローカの故障またはサブスクライバへのそのブローカの接続の故障の後に再接続すると、HRHIの組のその他のブローカに問い合わせて、破棄すべき適切なメッセージを決定するように構成される。サブスクライバが再始動するときは、破棄プロセスは、図7を参照して上で説明されたように進行する。
別の実施形態においては、サブスクライバからブローカへのHRHIの購読の要求に応じて、ブローカは、新規のHRHIブローカの組をオン・ザ・フライで集めるように構成される。
さらなる実施形態においては、中間ブローカが、要求元のサブスクライバにHRHIの購読を提供するように構成される。中間HRHIブローカは、要求された購読を提供するHRHIブローカの組の処理からサブスクライバを分離するように構成される。中間HRHIブローカは、実質的に、上述のサブスクライバの機能を有する中間サブスクライバとして働く。要求元のサブスクライバは、関連するシステムに関する標準的なサブスクライバの機能以外の追加的な機能を持つ必要がない。例えば、中間HRHIブローカは、ブローカ選択プロトコルを実行し、関連する破棄メッセージによってHRHIブローカの関連するHRHIメッセージ・キューを管理する。末端のサブスクライバは、HRHIの購読が提供されていることを知る必要がないか、または高信頼性の購読を明確に選択するためのオプションを提供される可能性がある。
別の実施形態においては、サブスクライバは、再始動時にすべてのブローカが利用可能でない場合、機能しないように構成される可能性がある。これは、特定の故障の場合にサブスクライバが何らかの重複するメッセージを受信する可能性を回避する。その故障の場合に、サブスクライバ112が、1つのブローカ111からのメッセージを読んだ直後、次のブローカ111に連絡してそのメッセージを破棄する前に故障する場合、これは、最新のSMIが1つのブローカにしかない結果となる可能性がある。再始動時にその特定のブローカが利用可能でない場合、重複したメッセージが読まれる。
本発明の実施形態は、軽量で高可用性の発行/購読メッセージングを提供する。クライアントに状態を記憶するのではなく、実施形態は、ブローカの永続的ストレージを用いて最後のシーケンス番号を保持し、ブローカ上で単純なトランザクションしか必要としない。これは、サブスクライバとブローカの間の複雑で同期されたトランザクションを回避する。有効なメッセージがブローカから読まれるたびに、そのメッセージのシーケンス番号が、その同じブローカの永続的ストレージに、1つの処理単位で、関連する購読またはトピックに関連する場所に書き戻される。現在のシーケンス番号以下のシーケンス番号を有するすべての他のメッセージが、ブローカから破棄される。ブローカ・アプリケーションが、メッセージを破棄するときに実際にメッセージ全体を取得する必要はなく、シーケンス番号だけが、メッセージが必要とされているか否かを判断するために要求される。したがって、大量のデータに関して、冗長なメッセージを破棄するオーバーヘッドが削減される。ブローカが利用できなくなる場合、その他のブローカのいずれかが、次のメッセージを取得し、最も新しい有効なシーケンス番号を記憶するために使用され得る。少なくとも1つのブローカが利用可能である限り、データの喪失はなく、メッセージの順序が維持される。サブスクライバが切断されるか、またはすべてのブローカが故障する場合、再接続すると、サブスクライバは、最も大きなシーケンス番号に関してすべてのブローカの永続的ストレージを調べ、そのシーケンス番号を、再びメッセージの受信を開始するための開始点として使用する。サブスクライバが購読を止める場合、購読中止メッセージがブローカの間で送信される。購読中止メッセージが送信されるときにブローカが利用可能でない場合、ブローカは、再始動時に購読中止メッセージを処理するように構成される。
当業者によって理解されるであろうように、本発明の実施形態は、任意の好適な発行/購読システムを用いて実装され得る。
本発明の一部またはすべてを具現化する装置は、本発明の実施形態の一部またはすべてを提供するように構成されたソフトウェアを有する汎用デバイスである可能性があることが当業者に理解されるであろう。デバイスは、単一のデバイスまたはデバイスのグループである可能性があり、ソフトウェアは、単一のプログラムまたはプログラムの組である可能性がある。さらに、本発明を実装するために使用されるソフトウェアのいずれかまたはすべては、ソフトウェアが1つまたは複数のデバイスにロードされ得るように任意の好適な送信または記憶手段を介して伝達される可能性がある。
本発明がその実施形態の説明によって示され、実施形態がかなり詳細に説明されたが、出願人は、添付の特許請求の範囲の範囲をそのような詳細に制限するか、または何らかの形で限定することを意図していない。さらなる利点および修正が、当業者には容易に分かるであろう。したがって、本発明は、本発明のより広い態様において、代表的な装置および方法、ならびに図示され、説明された例示的な例の特定の詳細に限定されない。ゆえに、出願人の包括的な発明の概念の範囲を逸脱することなく、そのような詳細から離れることができる。

Claims (21)

  1. 発行/購読メッセージング・システムのメッセージ購読アプリケーション・プログラムでメッセージの購読を管理するための方法であって、
    メッセージ・ブローカの組のそれぞれによって並列に提供される購読を購読するステップであって、前記購読は共通の順番のメッセージを含み、それぞれの共通のメッセージは共通のシーケンシャル・メッセージ識別子(SMI)に関連付けられる、ステップと、
    前記メッセージ・ブローカのうちの選択された1つからメッセージを取得し、前記メッセージ・ブローカにおける前記購読に関する関連するSMIの保存をトリガするステップと、
    メッセージ・サブスクライバの再始動に応じて、メッセージ・ブローカの前記組に戻って、前記メッセージ・ブローカのうちの任意の1つで前記購読に関する最も新しい保存されたSMIを判定するステップと、
    前記メッセージ・ブローカのうちの選択された1つから、前記最も新しいSMIに関連するメッセージの続きのメッセージを要求することによって前記購読を再開するステップとを含む、方法。
  2. 前記選択されたメッセージ・ブローカから前記購読を再開する前記ステップに応じて、前記組の残りのメッセージ・ブローカのそれぞれに、前記判定された最も新しいSMIに関連する前記メッセージ以前の、前記順番の中のすべてのキューに入れられたメッセージを破棄するように指示するさらなるステップを含む請求項1に記載の方法。
  3. 所与のメッセージの受信の肯定応答が、前記SMIの前記保存をトリガする請求項1または2のいずれかに記載の方法。
  4. 前記メッセージが、所定のプロトコルにしたがって次々に各ブローカから順番に要求される請求項1ないし3のいずれかに記載の方法。
  5. 前記プロトコルが、ラウンド・ロビン・プロトコルである請求項4に記載の方法。
  6. 発行/購読メッセージング・システムのメッセージ・ブローカ・アプリケーション・プログラムでメッセージの購読を管理するための方法であって、
    メッセージ・サブスクライバからの購読要求に応じて購読を購読するステップであって、前記購読は共通の順番のメッセージを含み、それぞれの共通のメッセージは共通のシーケンシャル・メッセージ識別子(SMI)に関連付けられる、ステップと、
    前記メッセージ・サブスクライバにメッセージを送信し、前記メッセージ・ブローカにおいて関連するSMIを前記購読に関連して記録するステップと、
    前記メッセージ・サブスクライバからの要求に応じて前記SMIを前記メッセージ・サブスクライバに送信するステップとを含む、方法。
  7. 所与のSMIに対する続きのメッセージの要求に応じて、前記続きのメッセージを送信するさらなるステップを含む請求項6に記載の方法。
  8. 前記続きのメッセージを送信する前記ステップに応じて、前記続きのメッセージおよび前記順番の中のすべてのキューに入れられた前のメッセージを破棄するさらなるステップを含む請求項7に記載の方法。
  9. 前記メッセージ・サブスクライバに前記メッセージを送信する前記ステップおよび前記購読に関する前記SMIを記録する前記ステップが、単一の処理単位で実行される請求項6ないし8のいずれかに記載の方法。
  10. 前記SMIが、永続的ストレージに保存される請求項6ないし9のいずれかに記載の方法。
  11. 発行/購読メッセージング・システムのメッセージ購読アプリケーション・プログラムでメッセージの購読を管理するための装置であって、
    メッセージ・ブローカの組のそれぞれによって並列に提供される購読を購読することであって、前記購読は共通の順番のメッセージを含み、それぞれの共通のメッセージは共通のシーケンシャル・メッセージ識別子(SMI)に関連付けられる、ことと、
    前記メッセージ・ブローカのうちの選択された1つからメッセージを取得し、前記メッセージ・ブローカにおける前記購読に関する関連するSMIの保存をトリガすることと、
    メッセージ・サブスクライバの再始動に応じて、メッセージ・ブローカの前記組に戻って、前記メッセージ・ブローカのうちの任意の1つで前記購読に関する最も新しい保存されたSMIを判定することと、
    前記メッセージ・ブローカのうちの選択された1つから、前記最も新しいSMIに関連するメッセージの続きのメッセージを要求することによって前記購読を再開することとを行うように動作可能である、装置。
  12. 前記選択されたメッセージ・ブローカから前記購読を前記再開することに応じて、前記組の残りのメッセージ・ブローカのそれぞれに、前記判定された最も新しいSMIに関連する前記メッセージ以前の、前記順番の中のすべてのキューに入れられたメッセージを破棄するように指示するようにさらに動作可能である請求項11に記載の装置。
  13. 所与のメッセージの受信の肯定応答が、前記SMIの前記保存をトリガする請求項11または12のいずれかに記載の装置。
  14. 前記メッセージが、所定のプロトコルにしたがって次々に各ブローカから順番に要求される請求項11ないし13のいずれかに記載の装置。
  15. 前記プロトコルが、ラウンド・ロビン・プロトコルである請求項14に記載の装置。
  16. 発行/購読メッセージング・システムのメッセージ・ブローカ・アプリケーション・プログラムでメッセージの購読を管理するための装置であって、
    メッセージ・サブスクライバからの購読要求に応じて購読を購読することであって、前記購読は共通の順番のメッセージを含み、それぞれの共通のメッセージは共通のシーケンシャル・メッセージ識別子(SMI)に関連付けられる、ことと、
    前記メッセージ・サブスクライバにメッセージを送信し、前記メッセージ・ブローカにおいて関連するSMIを前記購読に関連して記録することと、
    前記メッセージ・サブスクライバからの要求に応じて前記SMIを前記メッセージ・サブスクライバに送信することとを行うように動作可能である、装置。
  17. 所与のSMIに対する続きのメッセージの要求に応じて、前記続きのメッセージを送信するようにさらに動作可能である請求項16に記載の装置。
  18. 前記続きのメッセージを前記送信することに応じて、前記続きのメッセージおよび前記順番の中のすべてのキューに入れられた前のメッセージを破棄するようにさらに動作可能である請求項17に記載の装置。
  19. 前記メッセージ・サブスクライバに前記メッセージを前記送信することおよび前記購読に関する前記SMIを前記記録することが、単一の処理単位で実行される請求項16ないし18のいずれかに記載の装置。
  20. 前記SMIが、永続的ストレージに保存される請求項16ないし19のいずれかに記載の装置。
  21. コンピュータ可読媒体に記憶され、コンピュータの内部メモリにロードされ得るコンピュータ・プログラムであって、コンピュータで実行されるときに、請求項1ないし10のいずれかに記載の方法を実行するように構成されたソフトウェア・コード部分を含む、コンピュータ・プログラム。
JP2014510908A 2011-05-18 2012-05-02 発行/購読メッセージング・システムにおいてメッセージの購読を管理するための方法および装置、ならびにコンピュータ・プログラム Pending JP2014515152A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP11166502 2011-05-18
EP11166502.2 2011-05-18
PCT/IB2012/052191 WO2012156851A1 (en) 2011-05-18 2012-05-02 Managing a message subscription in a publish/subscribe messaging system

Publications (1)

Publication Number Publication Date
JP2014515152A true JP2014515152A (ja) 2014-06-26

Family

ID=47176358

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014510908A Pending JP2014515152A (ja) 2011-05-18 2012-05-02 発行/購読メッセージング・システムにおいてメッセージの購読を管理するための方法および装置、ならびにコンピュータ・プログラム

Country Status (6)

Country Link
US (1) US8954504B2 (ja)
JP (1) JP2014515152A (ja)
CN (1) CN103562890B (ja)
DE (1) DE112012002097T5 (ja)
GB (1) GB2509390B (ja)
WO (1) WO2012156851A1 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI557722B (zh) * 2012-11-15 2016-11-11 緯創資通股份有限公司 語音干擾的濾除方法、系統,與電腦可讀記錄媒體
CN105027079A (zh) 2013-03-28 2015-11-04 汤姆逊许可公司 发布-订阅环境中的对象生命周期管理
US10313221B1 (en) * 2014-01-28 2019-06-04 Sprint Communication Company L.P. Endpoint monitoring for a messaging framework
GB2532490B (en) * 2014-11-21 2017-02-22 Ibm Publish/subscribe messaging using message structure
US10609155B2 (en) 2015-02-20 2020-03-31 International Business Machines Corporation Scalable self-healing architecture for client-server operations in transient connectivity conditions
US10230696B2 (en) * 2015-06-09 2019-03-12 Intel Corporation System, apparatus and method for managing lifecycle of secure publish-subscribe system
US11308264B2 (en) 2015-07-07 2022-04-19 International Business Machines Corporation Managing document annotations in a publish/subscribe system
US10447626B2 (en) * 2015-07-07 2019-10-15 International Business Machines Corporation Control of messages in publish/subscribe system
US9804913B2 (en) * 2015-09-25 2017-10-31 Intel Corporation Management of a fault condition in a computing system
CN105681462B (zh) * 2016-03-14 2019-03-01 南京邮电大学 一种基于消息路由的集群系统及数据通信中转方法
US9602450B1 (en) * 2016-05-16 2017-03-21 Machine Zone, Inc. Maintaining persistence of a messaging system
US10574619B2 (en) 2017-01-02 2020-02-25 International Business Machines Corporation Cluster assisted MQTT client coverage for fat-pipe cloud applications
CN108063803B (zh) * 2017-12-04 2020-10-13 苏州狗尾草智能科技有限公司 基于分布式订阅发布消息系统的消息管理方法及系统
TWI678087B (zh) * 2018-11-22 2019-11-21 財團法人工業技術研究院 訊息佇列發佈與訂閱之同步方法及其系統
CN110247957A (zh) * 2019-05-22 2019-09-17 东软集团股份有限公司 网络系统及其数据传输方法、电子设备
US11340828B2 (en) 2020-08-10 2022-05-24 Bank Of America Corporation Restoring messages to a memory utilized by a topic in a publish-subscribe environment
US11354161B2 (en) 2020-08-10 2022-06-07 Bank Of America Corporation Controlling memory utilization by a topic in a publish-subscribe environment
KR20220097555A (ko) * 2020-10-21 2022-07-08 한국전자기술연구원 다중 메시지 프로토콜을 지원하는 컨테이너 오케스트레이터 기반의 메모리 공유 방법

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7080385B1 (en) 1997-08-18 2006-07-18 Tibco Software Inc. Certified message delivery and queuing in multipoint publish/subscribe communications
US6510429B1 (en) * 1998-04-29 2003-01-21 International Business Machines Corporation Message broker apparatus, method and computer program product
JP3620010B2 (ja) * 1998-05-22 2005-02-16 富士通株式会社 無線通信システムで用いられる装置とプログラム記録媒体
US7283463B2 (en) 1999-03-30 2007-10-16 International Business Machines Corporation Non-disruptive reconfiguration of a publish/subscribe system
FI19991861L (fi) * 1999-09-01 2001-03-01 Nokia Networks Oy Sijainti-informaation hallinta
US7162524B2 (en) * 2002-06-21 2007-01-09 International Business Machines Corporation Gapless delivery and durable subscriptions in a content-based publish/subscribe system
US7287066B2 (en) 2003-10-31 2007-10-23 Sap Aktiengesellschaft Publish-subscribe system having a reliability mechanism
US20050210109A1 (en) 2004-03-22 2005-09-22 International Business Machines Corporation Load balancing mechanism for publish/subscribe broker messaging system
US7624144B1 (en) 2004-04-29 2009-11-24 Sap Ag System and method for reducing data traffic associated with a messaging service in a clustered server environment
US7822801B2 (en) * 2004-10-14 2010-10-26 International Business Machines Corporation Subscription propagation in a high performance highly available content-based publish/subscribe system
US20060168331A1 (en) 2005-01-06 2006-07-27 Terevela, Inc. Intelligent messaging application programming interface
US7706895B2 (en) 2005-02-25 2010-04-27 Rockwell Automation Technologies, Inc. Reliable messaging instruction
US20070245018A1 (en) 2006-04-12 2007-10-18 International Business Machines Corporation Dynamic access control in a content-based publish/subscribe system with delivery guarantees
US7606808B2 (en) 2006-08-25 2009-10-20 Microsoft Corporation Maintaining and establishing subscriptions with load-balanced servers
JP2008141361A (ja) * 2006-11-30 2008-06-19 Hitachi Ltd データ配信方法、データ配信システム及びノード装置
JP5233175B2 (ja) * 2007-06-08 2013-07-10 ソニー株式会社 コンテンツ配信システム、配信サーバ、端末及びコンテンツ配信方法
US7453812B1 (en) 2008-01-27 2008-11-18 International Business Machines Corporation Method for detecting and correcting publish-subscribe looping in a messaging network
US8140630B2 (en) 2008-03-05 2012-03-20 International Business Machines Corporation Publish/subscribe message broker for message sequences

Also Published As

Publication number Publication date
US20130138737A1 (en) 2013-05-30
GB201321252D0 (en) 2014-01-15
US8954504B2 (en) 2015-02-10
GB2509390A (en) 2014-07-02
GB2509390B (en) 2018-02-21
CN103562890A (zh) 2014-02-05
DE112012002097T5 (de) 2014-07-24
CN103562890B (zh) 2016-01-20
WO2012156851A1 (en) 2012-11-22

Similar Documents

Publication Publication Date Title
JP2014515152A (ja) 発行/購読メッセージング・システムにおいてメッセージの購読を管理するための方法および装置、ならびにコンピュータ・プログラム
CN110297801B (zh) 基于容错fpga的事务系统的正好一次事务语义的系统和方法
JP5714571B2 (ja) キャッシュクラスタを構成可能モードで用いるキャッシュデータ処理
US9325757B2 (en) Methods and systems for fault-tolerant distributed stream processing
CN100591031C (zh) 实现高可用性光纤信道交换机的方法和装置
EP2321908B1 (en) Method and system for message processing
JP4144897B2 (ja) 共通作業キュー環境における最適格サーバ
US7529855B2 (en) Dynamic modification of fragmentation size cluster communication parameter in clustered computer system
CN112118315A (zh) 数据处理系统、方法、装置、电子设备和存储介质
WO2013078689A1 (zh) 一种云消息服务中实现消息传递的方法和装置
CN105338086A (zh) 一种分布式的消息转发方法
CN114338651A (zh) 文件传输方法、装置、电子设备及可读存储介质
US20060233322A1 (en) Methods and apparatus for switching between data streams
US20080196039A1 (en) Method, Apparatus and Software for Managing a Transactional Message Queue
CN110825505B (zh) 任务调度方法、装置、计算机设备及存储介质
CN109905459B (zh) 一种数据传输方法及装置
US20090106781A1 (en) Remote call handling methods and systems
US8089987B2 (en) Synchronizing in-memory caches while being updated by a high rate data stream
JP2009217765A (ja) 複数宛先への同期送信方法、その実施システム及び処理プログラム
WO2014203728A1 (ja) メッセージ制御システム、メッセージ制御装置、メッセージ制御方法及びプログラム
CN116155849B (zh) 一种消息投递方法、装置、电子设备及存储介质
WO2024052981A1 (ja) 処理装置、処理方法およびプログラム
Romano et al. A lightweight and scalable e-Transaction protocol for three-tier systems with centralized back-end database
CN118524142A (zh) 消息发送订阅的方法、装置、设备及介质
CN116155678A (zh) 一种离线消息的处理方法与系统