私のカスタムシリアライズ可能なメッセージをActiveMQ Queueから消費するSpringBootアプリケーションがあります。これまでのところ、消費率は非常に悪く、わずか1〜20 msg /秒です。Springboot JMS LIstener ActiveMQが非常に遅い
@JmsListener(destination = "${channel.consumer.destination}", concurrency="${channel.consumer.maxConcurrency}")
public void receive(IMessage message) {
processor.process(message);
}
上記の私のチャンネルの消費者クラスの抜粋である、それはプロセッサインスタンス(autowired、注入さを持っており、その中に私が@Asyncサービスを持っているので、私は、メインスレッドがメッセージを入力するとすぐにリリースされると仮定することができます@非同期方式)ともそれは私がアプリケーションプロパティ通知する価値
# ACTIVEMQ (ActiveMQProperties)
spring.activemq.broker-url= tcp://localhost:61616?keepAlive=true
spring.activemq.in-memory=true
spring.activemq.pool.enabled=true
spring.activemq.pool.expiry-timeout=1
spring.activemq.pool.idle-timeout=30000
spring.activemq.pool.max-connections=50
いくつかのことから設定springboot ActiveMQのデフォルトCONN工場使用しています:
1.私は私の地元のラップトップですべてのもの(Eclipseの、ActiveMQの、MYSQL)を実行し
2.これの前に、私も試しましたカスタムスレッドプールタスクエグゼキュータを備えたカスタム接続ファクトリ(デフォルトのAMQ、プーリング、およびキャッシング)を使用しても、同じ結果が得られます。以下は、私もnotive JVMモニターで使用されるヒープが
私が欲しいインクリメント保つスナップショットのパフォーマンス私が撮ったキャプチャと更新ごとに1秒
3です。知る:
1.私のステップから何か間違っている/紛失していますか?メッセージレートで数百に触れることはできません
2. Annotat ed @ JmsListenerメソッドはprocess asyncまたはsyncを実行しますか?
3.可能な限りサポートされていれば、従来のsync receive()をSpringBootで適切かつ丁寧に使用する方法は?私は似た何かをチェックしています