Java 实施";阀式;apachecamel中的聚合器模式

Java 实施";阀式;apachecamel中的聚合器模式,java,apache-camel,aggregator,integration-patterns,Java,Apache Camel,Aggregator,Integration Patterns,我对Camel(2.24.x)比较陌生,正在尝试在JavaDSL中使用AggregationStrategy,但有一些相关的问题/顾虑。另外请注意,当我选择使用JavaDSL时,我也会接受SpringCamelXML格式的答案/解释,如果这是我能得到的最好答案的话 我试图像“阀门”一样使用AggregationStrategy,意思是收集/聚合入站交换,直到它确定可以将该聚合交换移动到路由的其余部分,但在它做出该决定之前,不允许任何交换/消息通过它。所以从本质上说,这个“阀门”(聚合器)是关闭的

我对Camel(2.24.x)比较陌生,正在尝试在JavaDSL中使用AggregationStrategy,但有一些相关的问题/顾虑。另外请注意,当我选择使用JavaDSL时,我也会接受SpringCamelXML格式的答案/解释,如果这是我能得到的最好答案的话

我试图像“阀门”一样使用AggregationStrategy,意思是收集/聚合入站交换,直到它确定可以将该聚合交换移动到路由的其余部分,但在它做出该决定之前,不允许任何交换/消息通过它。所以从本质上说,这个“阀门”(聚合器)是关闭的,直到它确定它已经充分聚合了1+交换,然后一旦它做出这个决定,它就会“打开”

要实现AggregationStrategy接口,基本代码如下:

public class RunValve implements AggregationStrategy {

    @Override
    public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
        return null;
    }

}
oldExchange和newExchange对应什么?oldExchange是我们正在聚合的邮件,而newExchange只是我们可以(可选)附加到oldExchange的下一条邮件吗?聚合(…)方法应该返回什么,oldExchange还是newExchange?还是别的什么

然后,一旦我(在聚合(…)方法中)确定是“打开阀门”的时候了(例如,我们已经成功聚合了100%),我如何告诉Camel允许聚合交换通过路线的其余部分


提前感谢您提供的所有见解

这是感谢@Bedla的典型用例,我认为这两个EIP都不支持对我的需求至关重要的“阀门”概念。