Я должен исправить унаследованное приложение от другой компании, и у меня есть ошибка, которая мне не понятна: слушатель jms перестает работать без всякой очевидной причины.ActiveMQ Spring прослушиватель suddently перестает работать
Это клиент пружинной основе, здесь есть контекст:
<bean id="amqConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory" >
<property name="useAsyncSend" value="false" />
<property name="useCompression" value="true" />
<property name="optimizeAcknowledge" value="true" />
<property name="messagePrioritySupported" value="true" />
<property name="brokerURL" value="failover:(tcp://${brokerHost}:61616)?timeout=3000&jms.redeliveryPolicy.maximumRedeliveries=-1&jms.redeliveryPolicy.maximumRedeliveryDelay=1000000&jms.redeliveryPolicy.useExponentialBackOff=true" />
<property name="maxThreadPoolSize" value="60" />
<property name="closeTimeout" value="2000" />
<property name="nonBlockingRedelivery" value="true" />
<property name="exclusiveConsumer" value="false" />
</bean>
<bean id="jmsConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" >
<property name="connectionFactory" ref="amqConnectionFactory" />
<property name="maxConnections" value="50" />
<property name="maximumActiveSessionPerConnection" value="100" />
<property name="idleTimeout" value="20000" />
<property name="expiryTimeout" value="15000" />
</bean>
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate" abstract="true">
<property name="connectionFactory" ref="jmsConnectionFactory"/>
<property name="explicitQosEnabled" value="true"/>
<property name="sessionTransacted" value="true" />
<property name="sessionAcknowledgeModeName" value="CLIENT_ACKNOWLEDGE" />
<property name="receiveTimeout" value="4000" />
</bean>
<bean id="actionsJmsTemplate" parent="jmsTemplate">
<property name="defaultDestination" ref="actionPendingDestination"/>
</bean>
<bean id="jmsActionsListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="jmsConnectionFactory"/>
<property name="destination" ref="actionPendingDestination"/>
<property name="messageSelector" value="" />
<property name="messageListener" ref="actionsListener" />
<property name="sessionTransacted" value="true"/>
<property name="cacheLevelName" value="CACHE_SESSION" />
<property name="maxConcurrentConsumers" value="50" />
<!-- <property name="transactionManager" ref="transactionManager" /> -->
<property name="transactionTimeout" value="1000" />
</bean>
<!-- ActiveMQ Destinations -->
<bean id="actionPendingDestination" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="actions.pending.queue.>"/>
боб «actionsListener», который обрабатывает сообщения внутри приложения, реализует javax.jms.MessageListener и org.springframework.beans. factory.BeanNameAware. И он не делает ничего подобного признанию сеанса или управлению транзакцией. В этом классе нет такого кода.
В версии библиотек:
- Весна: 3.2.5.RELEASE
- ActiveMQ клиент: 5,9
- JDK: 1,6
Видите ли вы какие-либо проблемы с этим конфигурация?
Спасибо!
Carlos
Сколько сообщений обрабатывается до того, как он перестанет работать? – Tim