Spring集成JMS消息驱动的通道适配器在一定时间间隔后停止选择消息

时间:2015-06-24 12:06:19

标签: spring-integration spring-jms

我正在使用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的功能,并且适配器可以在选择消息时随时启动/停止,但此时,启动/停止功能也不起作用。请提出建议!

1 个答案:

答案 0 :(得分:0)

这似乎是Spring Integration jms message driven channel adapter fails的重复(但是不同的贡献者,所以我会在这里再次回答)......

这通常是由下游流中的某些组件不间断地挂起容器线程引起的(例如,从没有超时的套接字读取,没有数据到达)。

要进行诊断,请在发生挂起时进行线程转储(例如jstack),以找出侦听器容器线程正在执行的操作。