複数のconcurrentConsumersを持つDefaultMessageListenerContainerについて質問がありますが、コンテナはコンシューマごとに異なるセッションを作成しますが、私の問題はコンテナがすべてのコンシューマ間で1つのメッセージリスナーインスタンスしか共有できないことです各スレッドがリスナーが使用可能になるのを待つため、並行して処理します。各コンシューマに、メッセージを処理するためのメッセージリスナーの排他的インスタンスを持たせることはできません。DefaultMessageListenerContainer concurrentConsumers
0
A
答えて
1
コンテナは、スレッドセーフ(ステートレス)リスナー、つまり保護されていないグローバル状態で使用するように設計されています。
状態を保護するためにを使用するように聞こえます。これにより、一度に1つのリスナースレッドしか許可されません。
リスナーBeanをスレッドセーフにすることができない場合は、複数のコンテナを使用する必要があります。それぞれ異なるリスナーBean(プロトタイプスコープを使用できるため、コンテナごとに独自のBeanを取得できます)を使用する必要があります。
関連する問題
- 1. DefaultMessageListenerContainerあまりにも多くのメッセージを処理するためのconcurrentConsumersとmaxConcurrentConsumersの最大制限
- 2. Spring DefaultMessageListenerContainer MDPの初期化
- 3. Spring DefaultMessageListenerContainerコンシューマ
- 4. JMSTemplateとDefaultMessageListenerContainer
- 5. SpringのDefaultMessageListenerContainerのtaskExecutorプロパティの目的
- 6. リスナー内からDefaultMessageListenerContainerを取得
- 7. DefaultJmsListenerContainerFactory/DefaultMessageListenerContainer動的スケーリング:どのように機能しますか?
- 8. 'メイン'スレッドでDefaultMessageListenerContainerを実行する方法
- 9. sessionTransacted = trueからの非トランザクション・コールの呼び出しDefaultMessageListenerContainer
- 10. Spring 3.0 Lazy-initはDefaultMessageListenerContainerには受け入れられませんか?
- 11. SetsessiontransactedはPub/subモデルのJMSTemplateとDefaultMessageListenerContainerでどのように動作するのですか
- 12. DefaultMessageListenerContainerが自動的に起動しないようにするにはどうすればよいですか?
- 13. JMS DefaultMessageListenerContainerがメッセージを再試行する回数を制限する方法を教えてください。
- 14. 春の統合 - 複数の宛先を解決するためにDefaultMessageListenerContainerを設定する
- 15. Spring-ActiveMQ:DefaultMessageListenerContainerが破棄されない
- 16. はどのようにいくつかの単語でシャットダウンラムダ
- 17. Atomikosトランザクション管理スプリングブート/スプリングジャム
- 18. Spring統合電子メール再配信例外の場合
- 19. SpringブートApache Artemis埋め込みJMSキューサンプル
- 20. Apache Camelでのスレッド名の設定
- 21. Spring JMSトランザクションのロールバック - メッセージがActiveMQからデキューされる
- 22. logbackとslf4jを使用してすべてのトランザクションに一意のIDを割り当てる方法
- 23. 耐久性のあるリスナ/コンシューマのユースケースシナリオ
- 24. スプリングDMLCポーラー周波数変更
- 25. JMSメッセージは、生成されたノード上でのみ受信されます。
- 26. 耐久性のある複数のリスナー。彼らは同時に働きますか?
- 27. プールでActiveMQを正しく設定するにはどうしたらいいですか?緩いメッセージ -
- 28. NullPointerExceptionがMockito
- 29. Azureサービスバスキュー - 宛先例外のJMSメッセージリスナーの呼び出し側のセットアップが失敗しました
- 30. は、データベースの再起動とhickups
説明ありがとう、ありがとう、私はデザインを理解しています。 私は4つの並行コンシューマがある場合、唯一のインスタンス**(1つのDMLCで使用される場合はシングルトン)**がスレッド間で共有され、1つのスレッドがそのコードを実行するリスナークラス)は、独自の実行スタックにラップされている間に別のスレッドが待機していても、同期化されていなくても、このリスナーを並列実行するマルチコア/プロセッサの利益を得ることはできません。 特に、私は各メッセージのために実行する長いビジネスがある場合。 –
いいえ、オブジェクトがステートレスで、 'synchronized'ブロックを持たない限り(特に、リスナーメソッドは' synchronized'としてマークされていません)、スレッドはリスナーコードを同時に実行します。 –
この場合はありがとうございます。 –