Корректное завершение работы встроенного брокера ActiveMQ - PullRequest
3 голосов
/ 03 февраля 2012

У меня есть простая конфигурация 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 не помогло. Спасибо за вашу помощь.

1 Ответ

2 голосов
/ 03 февраля 2012

Насколько я могу судить, невозможно отключить встроенный AMQ без этих исключений.Код AMQ рассматривает этот EOF как относительно безвредное событие, но регистрирует это исключение.Вы можете попробовать открыть JIRA в проекте Apache ActiveMQ.

...