gpt4 book ai didi

java - Apache camel 2.16 enrich - JUnit 端点上没有消费者可用

转载 作者:行者123 更新时间:2023-11-29 08:43:42 26 4
gpt4 key购买 nike

我升级到 camel 2.16,我的一条路线单元测试开始失败。

这是我的路线定义:

public class Route extends RouteBuilder{

@Override
public void configure() throws Exception {

from(start).enrich("second");

from("direct:second")
.log(LoggingLevel.DEBUG, "foo", "Route [direct:second] started.");

}
}

这是我的测试:

@RunWith(MockitoJUnitRunner.class)
public class RouteTest extends CamelTestSupport {

private Route builder;

@Produce(uri = "direct:start")
protected ProducerTemplate template;

@Before
public void config() {
BasicConfigurator.configure();
}

@Override
protected RouteBuilder createRouteBuilder() {
builder = new Route();
return builder;
}

@Override
protected CamelContext createCamelContext() throws Exception {
SimpleRegistry registry = new SimpleRegistry();
return new DefaultCamelContext(registry);
}

@Test
public void testPrimeRouteForSubscriptionId() {
Exchange exchange = ExchangeBuilder.anExchange(new DefaultCamelContext()).build();
exchange.getIn().setBody(new String("test"));
template.send(exchange);
}
}

我在运行测试时遇到的错误是:

org.apache.camel.component.direct.DirectConsumerNotAvailableException: No consumers available on endpoint: Endpoint[direct://second]. Exchange[][Message: test]

值得注意的是 camel 2.16 注释中的以下行: http://camel.apache.org/camel-2160-release.html

resourceUri 和 resourceRef 属性已被删除,因为它们现在支持从表达式计算的动态 uris。

在此先感谢您的帮助。

最佳答案

交换顺序,使直接路由在丰富之前启动。 http://camel.apache.org/configuring-route-startup-ordering-and-autostartup.html

或者在单元测试中使用 seda 而不是 direct:http://camel.apache.org/seda

或者在直接 uri 中使用 ?block=true 来告诉 Camel 阻塞并等待消费者启动并准备好,然后再向其发送消息:http://camel.apache.org/direct

关于java - Apache camel 2.16 enrich - JUnit 端点上没有消费者可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38080078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com