Как отложить отключение AMQ до завершения работы Camel Route в тесте PaxExam - PullRequest
0 голосов
/ 08 апреля 2020

я бегу

  • SerivceMix 6.1.2
  • Верблюд 2.16.3
  • PaxExam 4.10
  • ActiveMQ 5.12.3, встроенный в ServiceMix как функция @Configure для имитации внешнего

Когда я тестирую свои маршруты Camel, имеющие конечные точки AMQ, и метод тестирования завершается, AMQ отключается раньше, чем маршруты Camel. Причинение конечным точкам маршрутов приводит к большому количеству исключений потерянного соединения, особенно когда есть перелеты. Стартовый уровень AMQ намного ниже моих маршрутов. Как я могу обеспечить последовательность выключения: - route, - amq, - servicemix?

1 Ответ

0 голосов
/ 02 мая 2020

Укажите, что ваш маршрут Camel (или тестовый комплект) зависит от брокерской службы ActiveMQ. Когда пакеты отключаются, они будут отключаться в порядке обратной зависимости, и брокер (который не зависит ни от одной из ваших закодированных служб) должен завершить работу к концу.

<bean id="pooledConnectionFactory" 
class="org.apache.activemq.pool.PooledConnectionFactory"
init-method="start" destroy-method="stop">
 ...
</bean>

Обновлено:

  1. Добавить ссылку на ваш файл проекта в сервисе, предоставляющем брокера
  2. Добавить атрибут «зависит от» в ваш маршрут Camel
  3. Это позволяет OSGi для детерминированной настройки правильного запуска и выключения на основе явной зависимости от произвольной (то, что у вас есть сейчас) или порядкового номера.

    <camelContext depends-on="activemq-broker">
    </camelContext>
    
    <reference id="activemq-broker" 
        availability="mandatory" 
        timeout="5000"
        interface="org.osgi.service.cm.ManagedService" 
        filter="(service.pid=org.apache.servicemix.activemq.service)"/> 
    

...