我正在为我的应用程序使用以下设置的spring DMLC,我面临着DMLC的奇怪行为,如果我在侦听器队列上发送1000条消息,只有~1990条消息很快到达dmlc,而~10条消息卡在服务器上,进一步分析我发现这 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>