У меня есть простая конфигурация Spring для модульных тестов, включающая встроенный брокер ActiveMQ, производителя JMS и слушателя JMS. Тесты пройдены успешно, но при выключении я вижу некоторые исключения. Как это:
[ WARN] [ActiveMQ Connection Executor: tcp://localhost/127.0.0.1:61616 03:16:23] (SingleConnectionFactory.java:onException:301) Encountered a JMSException - resetting the underlying JMS Connection
javax.jms.JMSException: java.io.EOFException
Моя конфигурация:
<beans>
<amq:queue id="defaultDestination" physicalName="example.A"/>
<bean id="jmsProducerTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"/>
<property name="defaultDestination" ref="defaultDestination"/>
</bean>
<bean id="jmsMessageSender" class="package.JMSMessageSender"/>
<amq:broker id="broker" useJmx="false" persistent="false" destroyApplicationContextOnStop="true" >
<amq:transportConnectors>
<amq:transportConnector uri="tcp://localhost:61616"/>
</amq:transportConnectors>
</amq:broker>
<bean id="messageListener" class="package.MessageReceiver"/>
<bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory" depends-on="broker">
<property name="targetConnectionFactory">
<amq:connectionFactory brokerURL="tcp://localhost:61616"/>
</property>
</bean>
<jms:listener-container connection-factory="connectionFactory" container-type="default">
<jms:listener destination="example.A" ref="messageListener"/>
</jms:listener-container>
</beans>
Я предполагал, что брокер закрывается, а затем фабрика соединений теряет соединение. Но depends-on
не помогло.
Спасибо за вашу помощь.