使用分割样式与自定义调度:
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
将行分割为单独的记录(即通过标记\ n)后,识别端点的逻辑是什么?你是说在分裂之后,记录是否代表终点?你能提供一个输入样本吗? – Narita