1

誰かがこれについて私が正しいか間違っているかを確認してください。「セレクター」操作は MessageConsumer 実装内で行われるようです。(つまり、すべてのメッセージが Message Broker から MessageConsumer にディスパッチされ、それらのメッセージに対して「セレクター」操作が実行されます)。この問題は、関心のない (つまり、セレクターに一致しない) メッセージが大量にある場合に発生します。これらのメッセージは、プリフェッチまたはキャッシュの制限により、最終的に MessageConsumer の内部キューをいっぱいにします。その結果、新しいメッセージ、特にセレクターで関心のあるメッセージを受信できなくなります。

では、MessageBroker 側でセレクター操作を実行するように AMQ を構成する方法はありますか? 「インターセプター」を調べて、独自の BrokerPlugin を作成する必要がありますか? この問題を回避する方法について何かアドバイスはありますか?

どんな答えでも本当に感謝しています。

ありがとう、Soonthorn A.

4

1 に答える 1

1

セレクターは実際には、クライアント側ではなくブローカーで適用されます。セレクターがまばらで、宛先に大量のトラフィックが見られる場合は、ブローカーがセレクターに一致するメッセージをページングしていない可能性が高く、宛先からより多くのメッセージが消費されるまで、コンシューマーには一致が表示されません。

問題は、ブローカーの宛先ポリシーにあります。デフォルトでは、ブローカはブラウザに対して 200 メッセージのみをページングして、利用可能なすべてのメモリを使い果たし、全体的なパフォーマンスに影響を与えないようにします。この数は、activemq.xml の独自の DestinationPolicy で増やすことができます。こちらのドキュメント ページを参照してください。

于 2011-04-27T11:35:48.647 に答える