Spring Integration应用程序

时间:2016-01-22 20:29:46

标签: java activemq spring-integration wildfly-9

我有一个使用AcitveMQ 5.13在Wildfly 9.0.1上运行的spring integration(4.1.6)应用程序。我只使用了大约11个队列。

我有一个卡住的队列而且消息没有消耗(大多数情况下)。我所拥有的每个其他队列都按照计划使用入站通道适配器上的轮询器正常消耗。

我当前的Spring Integration配置如下所示:

<beans:bean id="gnfReportConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
    <beans:property name="targetConnectionFactory">
        <beans:bean class="org.apache.activemq.ActiveMQConnectionFactory" >
            <beans:property name="brokerURL" value="${activemq.broker.url}" />
            <beans:property name="checkForDuplicates" value="false" />
        </beans:bean>
    </beans:property>
    <beans:property name="sessionCacheSize" value="100" />
    <beans:property name="cacheProducers" value="true" />
    <beans:property name="cacheConsumers" value="true" />
    <beans:property name="reconnectOnException" value="true" />
</beans:bean>

<!-- Email Router -->
<channel id="gnfChannelIn" />
<channel id="gnfChannelOut" />

<beans:bean id="gnfReportQueue" class="org.apache.activemq.command.ActiveMQQueue">
    <beans:constructor-arg value="${gnf.report.queue}" name="name" />
</beans:bean>

<int-jms:inbound-channel-adapter id="gnfReportChannelAdapter" connection-factory="gnfReportConnectionFactory" destination="gnfReportQueue" channel="gnfChannelIn" auto-startup="true">
    <poller fixed-delay="60" time-unit="SECONDS" max-messages-per-poll="-1" receive-timeout="10000" />
</int-jms:inbound-channel-adapter> 

其中一个有趣的事情是,当我反弹所有东西(ActiveMQ和Wildfly)时,大部分时间会导致队列中的消息被消耗掉。有时,只是弹跳Wildfly会触发消息消费。有时,如果我让它坐下,消息就会被消耗掉。消息是简单的XML。

我正在使用的其他队列都以相同的方式配置。

任何人都可以看到任何不妥之处或有任何人遇到任何类似的东西吗?

1 个答案:

答案 0 :(得分:1)

最常见的原因是挂起的轮询线程(卡在用户代码中)。即console下游的东西悬挂线程。

使用jstack或jvisualvm / jconsole获取线程转储以查看线程正在做什么。