3

我对 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 允许聚合交换通过到路线的其余部分?

提前感谢您提供全面的见解!

4

0 回答 0