首页 文章

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

提问于
浏览
1

我正在使用spring集成来使用jms-int:message-driven-channel-adapter从TIBCO EMS队列中读取消息 . 我面临的问题是:经过一段时间说5-10小时(随机间隔发生),即使jms队列中有消息,jms通道适配器也会停止选择消息

下面是我的spring集成上下文:

<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

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

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

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

相关问题