基本上我有一组大字符串,它们以较小的块发送到聚合器。我想将它们聚合成完整的字符串。
标头有一个strId,我想用它作为相关键。当我们收到带有新strId的标头时,前一个字符串的聚合应该是完整的。
我想知道这是否可以使用驼峰聚合器
答案 0 :(得分:3)
您可以使用bean来保存简单状态,使用completionPredicate
聚合器。
from("direct:aggregator")
.aggregate(constant(true), myAggregationStrategy)
.completionPredicate(method(new MyBean(), "changed(${header.strId})"))
.eagerCheckCompletion()
.log("COMPLETE: ${body}")
;
和一个简单的bean:
public static class MyBean {
public String oldval;
public boolean changed(String newval) {
boolean changed = oldval!=null && !newval.equals(oldval);
oldval = newval;
return changed;
}
}
请注意,在strId
更改之前,您不会收到正在汇总的排队邮件。