2017-03-06 2 views
0

私は、さまざまなクライアントが短期間に一日のうちに接続するメッセージブローカーを持っています。ActiveMQ - 関心のある加入者がいるデータのみを公開する戦略?

ブローカーは、何千もの物件の価格を公表できるトピックを管理していますが、現在接続しているクライアントの集合は、これらの物の小さなサブセットにのみ関心があります。

緊密に結合されたシステムでは、クライアントは特定のものを明示的にサブスクライブし、サーバーは低レベルのクライアント接続/切断イベント(切断されたクライアントの自動登録解除)を追跡し、クライアントが購読しているものの価格のみを公開します。

ActiveMQなどのメッセージングシステムのより疎結合の世界では、この種の問題を処理するための最良の方法はありますか?

私の場合、ブローカーは、第三者のシステムから価格を入手する際に価格を公表する物の数を最小限に抑えなければなりません。これは、価格が任意の時点でストリーミングできる物の数時間。

私の最初の傾向は、現在接続しているブローカーに知らせる低レベルのイベントを追跡したり、クライアントが特定のアイテムの価格にはもはや関心がないことを明示的に通知する必要はありません。

代わりに、クライアントは定期的に特定の商品セットの価格に対する関心を発表します。ブローカーは積極的な関心があったものについては価格を公表し、最終的に顧客が最近関心を示していないものについては価格を公表しないようにします。

より緊密に結合されたシステムとは異なり、クライアントは価格が欲しい物品に関心を再発表する必要がありますが、決して関心の終わりを宣言する必要はありません。

この種の問題に対して、標準的なアプローチまたはより一般的なアプローチがありますか?いずれの場合

答えて

1

あなたのプロデューサーが接続されて、消費者とそのセレクタを認識する必要がありますので、私は思う:

1 - 彼はあなたが維持するために必要なものを公開すると、このような理由のために知っているセレクタのリストを維持する必要があります起動時に助言メッセージhttp://activemq.apache.org/advisory-message.html

AdvisorySupport.getConsumerAdvisoryTopic() 

2 - 消費者を使用して、このリストには、自分の興味を持っているとあなたが別の目的地にしたい場合に使用する、多分その先何の情報にそれを通知し、退会通知したりするのプロデューサーにメッセージを送信します興味を停止する。

3単純にファイヤー・アンド・フォージェットEIPパターンを維持する

関連する問題