使用分割樣式與自定義調度:
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