4

Spring MessageListenerによってリッスンされるActiveMQでメッセージが受信されると、バックグラウンドでテキスト処理ジョブを実行するWebアプリケーションがあります。私が直面している問題は、約30のバックグラウンドジョブを処理すると、ActiveMQが発生することです。メッセージの処理を停止し、SpringメッセージリスナーがJMS接続を失い、ActiveMQログに開いているファイルが多すぎるというエラーが表示されることがあります。

LinuxでActiveMQプロセスに対して「lsof」(ファイルを開くリスト)コマンドを実行したところ、JmsTemplateによってキューに入れられ、公開され、受信されたほとんどのメッセージについて、新しい接続が開かれていることがわかりました。これは正常ですか?

これが私の設定です:

<bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
    <constructor-arg ref="amqConnectionFactory" />
    <property name="exceptionListener" ref="jmsExceptionListener" />
    <property name="sessionCacheSize" value="100" />
</bean>
4

1 に答える 1

1

ActiveMQ が提供する PooledConnectionFactory を使用する必要があります。ここで完全な構成を確認できます。JmsTemplate Gotchasも必ず読んでください。

于 2011-06-23T10:57:32.873 に答える