Spring integration AggregatorFactoryBean-设置空关联策略
如何配置Spring integration AggregatorFactoryBean-设置空关联策略,spring-integration,Spring Integration,如何配置AggregatorFactoryBean对所有消息进行分组,而不使用CorrelationStrategy(使用空字符串尝试)或对所有消息进行分组的策略 我没有公共字段或标题 因为我不关心群组,而是关心大量的信息 我找到了唯一脏的解决方案来传递返回空字符串的correlationStrategy方法 AggregatorFactoryBean aggregatorFactoryBean = new AggregatorFactoryBean(); aggregato
AggregatorFactoryBean
对所有消息进行分组,而不使用CorrelationStrategy(使用空字符串尝试)或对所有消息进行分组的策略
我没有公共字段或标题
因为我不关心群组,而是关心大量的信息
我找到了唯一脏的解决方案来传递返回空字符串的correlationStrategy方法
AggregatorFactoryBean aggregatorFactoryBean = new AggregatorFactoryBean();
aggregatorFactoryBean.setMethodName("aggregatingMethod");
aggregatorFactoryBean.setCorrelationStrategy(new MethodInvokingCorrelationStrategy(aggregator,"correlateBy"));
//not working-> // aggregatorFactoryBean.setCorrelationStrategy(new ExpressionEvaluatingCorrelationStrategy(""));
aggregatorFactoryBean.setReleaseStrategy(new MessageCountReleaseStrategy(10));
aggregatorFactoryBean.setCorrelationStrategy(new MethodInvokingCorrelationStrategy(aggregator,"correlateBy"));
class MyAggregator {
public List<Item> aggregatingMethod(List<List<Item>> items) {
return ...
}
public String correlateBy(Item item) {
return "";
}
}
AggregatorFactoryBean AggregatorFactoryBean=新的AggregatorFactoryBean();
aggregatorFactoryBean.setMethodName(“aggregatingMethod”);
SetCorrelationsStrategy(新方法调用CorrelationsStrategy(聚合器,“correlateBy”));
//不工作->//aggregatorFactoryBean.SetCorrelationsStrategy(新表达式EvaluationCorrelationsStrategy(“”));
setReleaseStrategy(新MessageCountReleaseStrategy(10));
SetCorrelationsStrategy(新方法调用CorrelationsStrategy(聚合器,“correlateBy”));
类聚合器{
公共列表聚合方法(列表项){
返回。。。
}
公共字符串相关项(项){
返回“”;
}
}
相关策略是一个@功能界面
,因此有一个简单的lambda和一个常数就足以产生:
aggregatorFactoryBean.setCorrelationStrategy(message -> 1);
它会将所有消息聚合到同一个组中
另一方面,如果您谈论的只是缓冲消息,而不是以某种方式关联消息并单独处理,那么您可能最好考虑使用真正存储发送消息的QueueChannel
。当您需要获取当前缓冲区进行处理时,您可以调用它的clear()
,它会为您的a列表返回。我想控制组中消息的数量以及释放前的超时时间。也许将来我会根据一些标准进行关联。谢谢