我正在使用camel.version:2.12.1
我有一条需要的路线
到目前为止,我有
org.apache.camel.model.ProcessorDefinition.recipientList().method(beanInstance, "methodName")
路由一个传入的Camel消息。
如何在行级实现动态路由?
提前致谢。
答案 0 :(得分:0)
将拆分模式与自定义调度程序一起使用:
public class MessageRouter {
public String routeTo(final String row) {
String id;
if (row.contains("1")) {
id = "sub1";
} else if (row.contains("2")) {
id = "sub2";
} else {
id = "default";
}
return "direct:" + id;
}
}
路线定义:
@Override
public void configure() {
from("direct:start")
.split(body().tokenize("\n"))
.recipientList()
.method(MessageRouter.class);
from("direct:token1")
.log("Token1: body = ${body}");
from("direct:token2")
.log("Token2: body = ${body}");
from("direct:default")
.log("default: body = ${body}");
}
测试:
ProducerTemplate template = context.createProducerTemplate();
template.sendBody("direct:start", "token1\ntoken2\ntoken3");
这导致以下输出:
INFO sub1: body = token1
INFO sub2: body = token2
INFO default: body = token3