我正在使用spring集成来使用jms-int:message-driven-channel-adapter从TIBCO EMS队列中读取消息。我面临的问题是:经过一段时间说5-10小时(以随机间隔发生),即使jms队列中有消息,jms通道适配器也会停止选择消息
以下是我的春季整合背景:
<bean id="jmsConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
<property name="targetConnectionFactory" ref="connectionFactory"/>
<property name="sessionCacheSize" value="${sessionCacheSize}"/>
<property name="cacheProducers" value="${cacheProducers}"/>
<property name="cacheConsumers" value="${cacheConsumers}"/>
</bean>
<bean id="jmsQueue" class="${queueClassName}">
<constructor-arg value="${jmsQueue}" />
</bean>
<int-jms:message-driven-channel-adapter
id="jmsMessageDrivenAdapter" connection-factory="jmsConnectionFactory" channel="jmsListenerChannel" destination="jmsQueue"
error-channel="integrationErrorChannel" max-concurrent-consumers="${maxConcurrentConsumers}" auto-startup="${jms.autostart}"/>
我有启动/停止jmsMessageDrivenAdapter的功能,并且适配器可以在选择消息时随时启动/停止,但此时,启动/停止功能也不起作用。请提出建议!
答案 0 :(得分:0)
这似乎是Spring Integration jms message driven channel adapter fails的重复(但是不同的贡献者,所以我会在这里再次回答)......
这通常是由下游流中的某些组件不间断地挂起容器线程引起的(例如,从没有超时的套接字读取,没有数据到达)。
要进行诊断,请在发生挂起时进行线程转储(例如jstack),以找出侦听器容器线程正在执行的操作。