2009-07-27 8 views
1

メッセージングミドルウェアソリューション(JMS、Tibcoなど)は、特定の「トピック」のすべてのメッセージを購読するためにワイルドカードを使用して、「トピック」フィルタリングを使用してパブリッシュ/サブスクライブすることができます。 SUBSCRIBE( "アカウント。*")トピックでは、 "ACCOUNT.WITHDRAW"メッセージと "ACCOUNT.CHECKBALANCE"メッセージの両方を購読できます。メッセージング・ミドルウェア - ワイルドカード・サブスクリプションで再入国を避けるにはどうすればいいですか?

問題は、そのようなサブスクリプションが私自身の公開メッセージを受信することです。

私はトランスポート層によって送信されているデータを乱さずにオンまたはオフにできるUDPマルチキャストループバックと同様のメカニズムを探しています。

非常に同じサービスインスタンスが公開しているメッセージを受信しないようにミドルウェアを構成するには、宣言的な(カスタムコードなし、構成のみ)方法がありますか?理想的には、これは同じ「種類」のすべてのサーバー(ノード)によって発行されたすべてのものを除外することもできるはずです。

ありがとうございます。

答えて

0

誰も答えていないので、私は(手のような方法で)チャイムインします。

トピックレシーバーで自分のメッセージを送り返すかどうかを制御することは、JMS specには何もありません。したがって、このような機能はポータブルではないベンダーの機能になります。特に、JMSクライアントの「種類」と、送信/受信を行う同じ接続に基づくコントロールの2つ目の要件には、

コードやメッセージのコンテンツ(プロパティ)を柔軟に変更できない場合は、移植性の高いソリューションはないと思います。そして、おそらく、その第2の「種類」の要件のための解決策はありません。

ベンダー固有のオプションを調べる場合は、興味のあるベンダーを教えてください。何も得られないかもしれませんが、尋ねることなく知る方法はありません。

+0

ありがとう。私が必要とする機能をサポートするソリューション/ベンダーに興味がありました。そのような基本的な機能は標準的ではないことに少し驚いていましたが(それは非常に些細なメッセージブロードキャストメカニズムでもあります - UDP) – Borka

+0

あなたは、このタイプのものは、メッセージのプロパティとコンシューマセレクタです。しかし、これにはコードを変更する際の柔軟性が必要です。 このような機能を提供するベンダーを知ることはありません。私はちょうど推測していた... –

1

JMS APIには、TopicSubscribersのためのこのオプションが含まれています。 TIBCO EMSでは、「noLocal」プロパティを持つコンシューマを作成します。つまり、同じ接続で公開されたメッセージはなく、同じ接続でクライアントによって消費されます。

「noLocal」オプションを使用してトピックのサブスクライバを作成する方法をここで見てください。 https://docs.tibco.com/pub/enterprise_message_service/7.0.1-march-2013/doc/html/tib_ems_api_reference/api/javadoc/javax/jms/TopicSession.html

関連する問題