Apache Camel - нет доступных потребителей на конечной точке в тесте JUNIT

1

Я использую Camel 2.13.1 и имею странное поведение. Если я хочу проверить свои маршруты, я написал в XML.

Я всегда получаю сообщение на одном маршруте, что потребители не доступны. Если я развожу это на Tomcat, все работает нормально. Даже при запуске я вижу журнал, в котором четко указано, что маршрут потребляется.

Мои маршруты выглядят так:

<route id="demo-polling-consumer">
  <from uri="timer:demo-polling?fixedRate=true&amp;period=60s" />
  <to uri="bean:demo?method=selectDemoCustomer" />
  <to uri="direct-vm:demo-get-new-orders" />
  <split>
    <simple>${body}</simple>
    <to uri="direct-vm:demo-get-order-details" />
  </split>
</route>

<route id="epunkt-get-new-jobadverts">
  <from uri="direct-vm:demo-get-order-details" />
  <to uri="bean:demo?method=getOrderDetail" />
</route>

Я начинаю тест следующим образом:

@RunWith(SpringJUnit4ClassRunner.class)
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
@ContextConfiguration(locations = { "classpath:spring-module.xml" })
public class FirstBirdContextTest {

  @EndpointInject(uri = "mock:out")
  private MockEndpoint mockOut;
  @Produce(uri = "direct:in")
  private ProducerTemplate in;

  @Test
  public void testPayloadIsTransformed() throws InterruptedException, FileNotFoundException, JAXBException {

  }

Я просто начинаю свой весенний контекст. Spring-module.xml загружает несколько файлов camel-context.xml.

Ошибка говорит:

org.apache.camel.component.directvm.DirectVmConsumerNotAvailableException: потребители не доступны в конечной точке: конечная точка [direct-vm: demo-get-order-details]. Exchange [Сообщение: [[Ljava.lang.Object; @6dd62653]]

В стартовом журнале говорится:

[main] SpringCamelContext INFO Route: заказные записи начинаются и используются с: Endpoint [direct-vm: demo-get-order-details]

Еще раз. Если я развожу это на tomcat, все будет хорошо.

Теги:
spring
junit4
apache-camel

2 ответа

0

Параметр block=true при вызове целевого маршрута может решить эту проблему, т.е.

<to uri="direct-vm:demo-get-order-details?block=true" />

Теперь я скорее предполагаю, что это было просто совпадение, что он работал на сервере и что, возможно, был небольшой шанс, что он также дал бы такую же ошибку на сервере, а именно, когда сервер запускается, а целевой маршрут не является Пока еще нет. Обычно этого не произойдет, но это может быть так, поэтому блок на вашем целевом маршруте может стоить того же.

0

Этот маршрут должен иметь от, который в настоящее время отсутствует

   <route id="epunkt-get-new-jobadverts">
        <to uri="direct-vm:demo-get-order-details" />
        <to uri="bean:demo?method=getOrderDetail" />
    </route>
  • 0
    Эй, извините, это была проблема копирования и вставки. На самом деле, извините, это была проблема копирования и вставки. В мс фактический маршрут от установлен правильно! Я изменяю сниппет соответственно, роут от которого настроен правильно! Я изменяю фрагмент соответственно

Ещё вопросы

Сообщество Overcoder
Наверх
Меню