我对 Camel (2.24.x) 比较陌生,我正在尝试在 Java DSL 中使用 AggregationStrategy,但有一些相关的问题/顾虑。另请注意,虽然我选择使用 Java DSL,但我也会接受 Spring Camel XML 格式的答案/解释,如果这是我能得到的最好的!
我正在尝试像“阀门”一样使用 AggregationStrategy,这意味着,收集/聚合入站交换,直到它确定它准备好将该聚合交换移动到路由的其余部分,但不允许任何交换/消息通过它,直到它下定决心。所以本质上,这个“阀门”(聚合器)是关闭的,直到它确定它已经充分聚合了 1 次以上的交换,然后一旦它做出这个决定,它就会“打开”。
要实现 AggregationStrategy 接口,准系统代码如下:
public class RunValve implements AggregationStrategy {
@Override
public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
return null;
}
}
oldExchange 和 newExchange 分别对应什么?oldExchange 是否是我们正在聚合的消息,而 newExchange 只是我们可以(可选)附加到 oldExchange 的下一条消息?aggregate(...) 方法应该返回什么,oldExchange 还是 newExchange?或者是其他东西?!
然后,一旦我确定(在 aggregate(...) 方法内)是时候“打开阀门”了(例如,我们已经成功聚合 100%),我如何告诉 Camel 允许聚合交换通过到路线的其余部分?
提前感谢您提供全面的见解!