所以,在阅读了一些文档并从这里获得了很多帮助后,我终于实现了一个动态选择端点的收件人列表(动态收件人列表):
在我的代码中,MainApp_A每10秒生成一次报告,我希望它能够同时向所有服务器发送报告,而不是逐个发送报告。因此,我开发了以下路线。
MainApp_A
main.addRouteBuilder(new RouteBuilder(){
@Override
public void configure() throws Exception {
from("direct:start").multicast().parallelProcessing()
.beanRef("recipientListBean", "route").end()
.log("${body}");
}
});
RecipientListBean
@RecipientList
public Set<String> route(String body) {
return servers; //returns a collection of several severs
}
我还检查了多播模式和动态路由的文档:
现在我有几个问题,我很困惑。所以我有几个问题:
答案 0 :(得分:11)
我建议你阅读Gregor Hohpe和Bobby Woolf的EAI模式,了解一些背景和见解。
多播允许硬编码的配方列表,recipientList(..)
允许在朗姆酒时计算端点。两者都是“recipient lists”。
如果您没有很多逻辑(比如DB查找)计算收件人列表中的端点,它们可能会同样有效 - 端点的调用可能是Camel最难实现的部分。无论如何 - 静态“多播”更具可读性。
在Camel中,选择一个构造而不是另一个构造的原因通常是路线的可读性。您应该能够查看路线并遵循它的作用(假设您知道EIP)。至少,这是一个很好的目标。