-2

私は ActiveMQ の初心者なので、いくつか質問があります... サーバー側で activemq を使用するクライアント サーバー アプリケーションを作成します。すべてのクライアントがメッセージを送信するため、サーバーにはすべてのクライアントからメッセージを受信する単一のキューがあります。私が理解しているように、それは問題ではありません。

しかし、別のことがあります... メッセージを受信した後、サーバーはそれを処理し、受信メッセージごとに応答メッセージを形成します。このメッセージは、送信者だけでなく、すべてのクライアントに配信する必要があります。また、現時点で一部のクライアントへの接続がない場合、接続が回復したときに、クライアントは、このクライアントがオフラインであった間にサーバーが送信したすべてのメッセージを (損失なしで) 受信する必要があります。

ActiveMQ の学習を開始すると、解決策が見つかりました。サーバーには特定の数の「出力キュー」があり、この数はクライアントの数と同じです。そのため、回答を作成した後、サーバー アプリケーションはすべての「出力キュー」を通過し、メッセージを各キューに入れます。このバリアントでは、各クライアントは一意の ID を持ち、独自のキュー (すべての応答メッセージを含む) をリッスンするため、サーバーでは、各クライアントが受信したメッセージの数を監視できます (有利です)。しかし、それは最善の解決策ではないと思います(キュー内の同一のオブジェクトが多数あり、サーバー側で各クライアントを手動で追加することは欠点です)。

activemq について詳しく学ぶと、トピックと永続的なサブスクライバーが見つかりました。問題の説明に必要なもののように見えます。しかし今、私の質問は - どうすればトピックメッセージを監視できますか? ブラウザの管理者ツールや jconsole でも見ようとしましたが、まだこのメッセージは表示されません。出来ますか?今後の質問はありますか?トピックを使用することは、この問題に適していますか? または、私が説明したように、特定の数の出力キューを使用する方がよいでしょうか?

4

1 に答える 1

1

永続的なサブスクリプションは、おそらく進むべき道です。しかし、これまで経験してきたように、運用の透明性を少し犠牲にする必要があります。

問題を解決できる可能性のある仮想宛先も確認することをお勧めします。

http://activemq.apache.org/virtual-destinations

于 2013-04-09T05:58:46.467 に答える