2011-05-06 12 views
0

サブスクライバに障害が発生した場合にEMSパブリッシャに通知する方法に関する回答を検索しようとしています。 パブリッシャー→EMSサーバー→サブスクライバーの場合、サブスクライバーが失敗した場合は、パブリッシャーに是正措置を取るよう通知する必要があります。耐久性/パーシステンスに関して気にならず、私の意義は時間です。トレーディングシステムでは、取引先にマーケット注文を送り、取引先に送ると、失敗した場合、別の話題のメッセージを別の取引先(別の取引所)にパブリッシャーで発行させる必要があります。 すべてのアイデアは高く評価されています。サブスクライバに障害が発生した場合にTIBCO EMS通知を発行者に送信する

答えて

1

アクセス権があるかどうかわからない場合は、QueueInfoまたはTopicInfoのReceiverCountまたはConsumerCountを調べてみてください。tibjms.adminパッケージが必要です。公開して選択的に公開する前にこれをクエリできますか?オーバーヘッドが何であるか分かりません。

JMSの性質上、AFAIKはトランザクションの状態を表しません(XAトランザクションを使用しない限り、そのすべてのオーバーヘッドで)、または肯定応答はEMSブローカを介して伝播します。私は常にパブリッシャーとブローカーと消費者とブローカーの間にあります。

上記に失敗した場合、役割が逆になっている別のackトピックを試すことができますが、失敗の場合はタイムアウトになります。これは分かりやすいとは思いません。

注文がどの交換に行くかは本当に気にしない - トピック/キューを排他的にして、両方の消費者が消費しようとしないようにする - 最初のものがすべてのメッセージを処理する - (定期的に再試行できますが、正常に接続できる可能性があります)。また、両方のキューに注文を処理させることもできます。メッセージは単一のコンシューマによってのみ処理されます...

本当に表示されません

+0

お返事ありがとうございます。私はアイディアを持って私のチームと議論しなければならないでしょう。 –

3

tibjmsadmin.jarライブラリには、サブスクライバが切断されたときを検出するメソッドが含まれています。コードを書くよりも簡単、次のことができます。あなたがホークを持っている場合

  • 、モニター 話題 に耳を傾け、加入者にイベントに 切断、または
  • をホークルール を書くこと tibjmsadmin.hmaを使用します$ sys.monitor.connection.disconnect - メッセージの本文は、どのサブスクライバが切断されたかを に伝えます。

しかし、これらの「監視」方法では、パブリッシャの障害を検出してパブリッシャをリダイレクトする際に、重要な問題があります。メッセージが通過して機能しなくなることがありますキュー。あなたは$ 10Mの取引に起こってこれを見ないでください!

EMSは、加入者が接続されているかどうかを知っており、これを利用する必要があります。

"分散キュー"を使用すると、失敗したときに新しいサブスクライバに切り替えるためにロジックをアプリケーションにコーディングする必要はありません。これは、メッセージ損失なしで発生し、メッセージの順序を維持します。ロード・バランシングおよびフェイルオーバー・ロジックをコードおよびJMSプロバイダーの管理セットアップから保護することも、アーキテクチャーの習慣としては優れています。

基本的に、キューに複数のサブスクライバを設定します(各サブスクライバによって表されるエクスチェンジ)。デフォルトのアクションは、EMSがラウンドロビン方式でユーザにメッセージをロードバランシングすることです。しかし、キューを「排他的」に設定すると、メッセージは一度に1つのサブスクライバにのみ送信されます。そのアクティブなサブスクライバに障害が発生すると、メッセージは別のサブスクライバに転送されます。

これらのトピックの詳細については、EMSマニュアルを参照してください。

+0

答えていただきありがとうございます.iは確かにドキュメントをチェックします。 –

関連する問題