2016-11-18 6 views
0

私は、Pub/Sub通信用のTibco EMS Topicsを使用してクライアントサーバアプリケーションを開発中です。我々は> 200kの「科目」に分割分あたりのメッセージの数百万を送信する必要が私たちのユースケースの一つでメッセージセレクタvs Tibco EMSのメッセージフィルタリングのトピック

各クライアントは、サブスクリプションする必要があるサブジェクトの小さなサブセットに関心があります。

質問は、より合理的であるこれらの実装され、次のとおりです。

  1. は、単一のトピックの上にすべてのメッセージを送信し、関連する科目でフィルタするメッセージセレクタを使用します。

  2. 各サブジェクトに非静的トピックを作成し、クライアントに関連するサブジェクトのトピックをサブスクライブさせます。

+0

Tibco EMSは、サーバー側またはクライアント側でメッセージセレクタを実装していますか?セレクタがクライアント側だけであれば、私はセレクタを避けるでしょう。 – Nicholas

答えて

2

メッセージセレクタはパフォーマンスに多少の影響を与えると噂されています...意味があります。 したがって、本質的には、トレードオフのパラメータを把握する必要があります。 メッセージセレクタにどれくらいの利益をもたらし、一方でパフォーマンスのコストを許容することができますか。

要約すると、メッセージングアーキテクチャ(ご質問)とキャパシティパフォーマンステストなどのアクティビティが最終的に答えを与えます。メッセージングアーキテクチャについて

、質問事項がたくさんあります。

  • あなたはどのように多くの異なる被験者を持っていますか?
  • そのリスト(それは頻繁に変更さん)
    • サブ質問どのように動的である:どのようにクライアントは、リストが変更とことを知っていますか?
  • 階層が関係していますか?

あなたの質問は、種類と個数とその性質に大きく依存しています。

メッセージセレクタは、サブジェクトが関連し、一部のサブスクライバがサブセットのみに関心がある場合に非常に便利です。

例1:1つのTopic REPORTS、JMSヘッダー "ReportType"が存在する。 この場合、一部のクライアントマイグレーションはすべてのメッセージをスクラブすることを好みますが、他の人は "ReportType = SalesまたはReportType = Weekly"を購読することがあります。 この例題は、主題のリストがいつも変化しているならば、非常にスケッチになるかもしれません...どのプログラムがすべてのレポートを取得するのに興味があるのですか、それとも知らないのでしょうか(彼らは役に立つと自己説明する必要があります)

例2:サブジェクトが階層内で関連している場合... EMSとMQのサブスクリプションは、特定の1つのブランチになることができます。 REPORTS、REPORTS.WEEKLY、REPORTS.SALESの3つのトピックを想像してみましょう クライアントはEMSのREPORTS。*に日没することができます。これはメッセージセレクタなしで実行されます。

例3:非静的トピック。この例では、トピックを作成しますが、多くのことを心配する必要があります。スケーリングのテスト、クライアントへの件名リストの取得、件名の非推奨化の管理、クライアントが多くの科目を聞く(非常に難しい)など..倍数接続???)、

幸運デザイン、

サイドノートで:あなたは...を目指しているのパフォーマンスについてはFTLを見てすることを躊躇しない(別のTIBCOあなたの容量/ perfテストがEMSで満足できるものではなく、JMS機能を失うことに気をつけていない場合は、RabbitMQのような製品が必要です。 EMSは非常に強力で、かなり多くかかる可能性がありますが、他の製品は軽くてパフォーマンスに重点を置くことができます。

関連する問題