我的骆驼路线定义如下:
from(source).routeId("source processor")
.filter(liabilityMessageFilter)
.log(LoggingLevel.INFO, LOGGER, "Some log")
.process("myMessageProcessor");
我有一个测试来检查路线定义:
@Test
public void myTest() {
ModelCamelContext mcc = camelContext.adapt(ModelCamelContext.class);
final List<RouteDefinition> routeDefinitions = mcc.getRouteDefinitions();
assertThat(((LogDefinition) routeDefinitions.get(0).getOutputs().get(1)).getMessage(), is("some log"));
}
问题是
routeDefinitions.get(0).getOutputs()
仅返回过滤器对象,而不返回其余对象。但是,如果我更改过滤器的顺序并登录路由定义,它就可以工作。我无法使用上面给定的路由定义到达路由元素的其余部分?原因是什么?我是否做错了什么?
例如:如果我没有过滤器,
routeDefinitions.get(0).getOutputs()
返回日志和流程元素。
filter()
就像一段代码,一直适用到 end()
发生,或者直到路线结束。
所以过滤器是路由定义的唯一输出。然后,过滤器有两个自己的“嵌套”输出。
Definition = routeDefinitions.get(0)
Filter = <Definition>.getOutputs().get(0)
Log = <Filter>.getOutputs().get(0)
Process = <Filter>.getOutputs().get(1)