2017-07-02 7 views
0

DefaultMessageListenerContainerを使用してQueueからのメッセージ(たくさんのメッセージ)を同時に聞きたいです。DefaultMessageListenerContainerあまりにも多くのメッセージを処理するためのconcurrentConsumersとmaxConcurrentConsumersの最大制限

<bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> 
    <property name="connectionFactory" ref="connectionFactory"/> 
    <property name="destinationName" ref="queue"/> 
    <property name="messageListener" ref="myMessageListener"/> 
    <property name ="concurrentConsumers" value ="10"/> 
    <property name ="maxConcurrentConsumers" value ="10000"/>   
</bean> 

私は最大5〜10 concurrentConsumersがconcurrentConsumersとmaxConcurrentConsumersで指定することができspring_Forumから読み取ります。 。

質問1:

私はできるだけ速く、あまりにも多くのメッセージを読むことをお勧めします。

それは、1万またはそれ以上にconcurrentConsumers & maxConcurrentConsumersを増やすことで可能になることはできますか?

質問2:

それはあまりにも多くのメッセージのための効率的な方法ではない場合は、他の方法を提案してください?システムで実行されている(maxConcurrentConsumers等しい)と仮定

Threadsは、それが狂っコンテキストは、すべての実行中のプロセス(Threads)を切り替えるようにスラッシングを開始しようとしています。

答えて

0

メッセージを処理するスレッドの最適な数は、実際の作業に依存します。これは、JMSに直接関係しない一般的なトピックです。例えば、hereを参照してください。

JMS自体に関連する可能性のある最適化は、まず接続とセッションのキャッシュになります。 this discussionを参照してください。もう一つの方法は、これを買う余裕があれば、永続性を落とすことです。

関連する問題