Очередь ActiveMQ не используется из приложения Spring Integration

У меня есть приложение Spring Integration (4.1.6), работающее на Wildfly 9.0.1 с AcitveMQ 5.13. Я использую только около 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.

Остальные очереди, которые я использую, настроены таким же образом.

Может ли кто-нибудь увидеть что-то неладное, или кто-нибудь сталкивался и решал что-то подобное?


person Joseph Nelson    schedule 22.01.2016    source источник


Ответы (1)


Наиболее частая причина - зависание потока опроса (застревание в пользовательском коде). то есть что-то ниже gnfChannelIn вешает нить.

Используйте jstack или jvisualvm / jconsole, чтобы получить дамп потока, чтобы увидеть, что делают поток (ы).

person Gary Russell    schedule 22.01.2016