繁体   English   中英

Apache Camel-JUNIT测试中的终结点上没有可用的使用者

[英]Apache Camel - No Consumers available on endpoint in JUNIT test

我正在使用骆驼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:端点上没有可用的使用者:Endpoint [direct-vm:demo-get-order-details]。 Exchange [消息:[[Ljava.lang.Object; @ 6dd62653]]

启动日志说

[主要] SpringCamelContext信息路线:orderdetails开始并在以下位置消费:Endpoint [direct-vm:demo-get-order-details]

再次。 如果我将其部署在tomcat上,则一切正常。

该路线应有一个出发地,目前已丢失

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

在调用目标路由时设置block=true可以解决该问题,即

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

现在我宁愿假设它只是在服务器上运行,这只是一个巧合,并且可能也很少会在服务器上给出相同的错误,即在服务器启动且目标路由为还没有。 通常这不会真正发生……但是有可能,因此目标路线上的路障还是值得的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM