1

何千もの宛先 (トピック) からのメッセージを消費するメッセージング シナリオを実装する必要があります。これらのトピックのスループットは非常に低いため、Spring を使用simplemessagelistenercontainerして、activemq がメッセージを適切なリスナーにプッシュできるようにしています。

alwaysSessionAsync=false は、組み込みブローカーへの vm 接続がセッションごとに 1 つのスレッドを作成しないようにします (リスナーごとに 1 つのセッションと何千ものリスナーがあるため)。

このように、私の設定は内部のactivemqタスクスレッドでsimplemessagelistenercontainerを開始し、コンテナはそれをスレッドプールにスケジュールします。残念ながら、activemq タスク スレッドは非常に遅いです。

したがって、async=false (jms.sendAsync ではない) を使用して、メッセージ送信スレッドを使用してメッセージを処理し、それをリスナーにプッシュして、そこでスケジュールされたハンドラー スレッド プールに入れたいと思います。

残念ながら、これはデッドロックを引き起こします (yourkit によると)。

これら2つのプロパティを機能させるにはどうすればよいですか? または、代わりに:非同期送信用に埋め込まれたactivemqを高速化するにはどうすればよいですか?

4

1 に答える 1

0

async=false&jms.copyMessageOnSend=false&jms.useAsyncSend=false&jms.alwaysSessionAsync=false&jms.dispatchAsync=false

私がやりたかったことをします。ただし、メッセージを消費しているときにメッセージを送信すると、デッドロックが発生します。

于 2012-06-25T12:16:46.657 に答える