何千もの宛先 (トピック) からのメッセージを消費するメッセージング シナリオを実装する必要があります。これらのトピックのスループットは非常に低いため、Spring を使用simplemessagelistenercontainer
して、activemq がメッセージを適切なリスナーにプッシュできるようにしています。
alwaysSessionAsync=false は、組み込みブローカーへの vm 接続がセッションごとに 1 つのスレッドを作成しないようにします (リスナーごとに 1 つのセッションと何千ものリスナーがあるため)。
このように、私の設定は内部のactivemqタスクスレッドでsimplemessagelistenercontainerを開始し、コンテナはそれをスレッドプールにスケジュールします。残念ながら、activemq タスク スレッドは非常に遅いです。
したがって、async=false (jms.sendAsync ではない) を使用して、メッセージ送信スレッドを使用してメッセージを処理し、それをリスナーにプッシュして、そこでスケジュールされたハンドラー スレッド プールに入れたいと思います。
残念ながら、これはデッドロックを引き起こします (yourkit によると)。
これら2つのプロパティを機能させるにはどうすればよいですか? または、代わりに:非同期送信用に埋め込まれたactivemqを高速化するにはどうすればよいですか?