以下の設定でアプリケーションにSpring DMLCを使用しています.DMLCで奇妙な動作に直面しています.リスナーキューで1000メッセージを送信すると、〜1990のみがdmlcに非常に迅速に到達し、〜10がサーバーでスタックし、さらに分析するとiこれらの 10 に対して確認応答が返されないことがわかったので、数分後に確認応答が返されますが、非常にゆっくりとサーバー上で確認できます。
これについてさらにcacheConsumers=false
CachingConnectionFactory で試してみましたが、すべてうまくいきましたが、これにより mq サーバーへのバインド/バインド解除が頻繁に行われ、jmv で巨大なコンシューマー オブジェクトが作成されます。この問題を解決する方法はあります cacheConsumers=true
か?
<bean id="listenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="cachingjmsQueueConnectionFactory" />
<property name="destination" ref="queueDestination" />
<property name="messageListener" ref="queueDestination" />
<property name="concurrency" value="10-10" />
<property name="cacheLevel" value="1" />
<property name="transactionManager" ref="dbTransactionManager" />
<property name="sessionTransacted" value="true" />
</bean>
<bean id="cachingjmsQueueConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
<property name="targetConnectionFactory" ref="jmsQueueConnectionFactory" />
<property name="reconnectOnException" value="true" />
<property name="cacheConsumers" value="true" />
<property name="cacheProducers" value="true" />
<property name="sessionCacheSize" value="1" />
</bean>