AggregatorFactoryBean - 设置空 CorrelationStrategy
AggregatorFactoryBean - set empty CorrelationStrategy
如何配置 AggregatorFactoryBean
以在没有 CorrelationStrategy(尝试使用空字符串)或对所有内容进行分组的策略的情况下对所有消息进行分组?
我没有共同领域或header。
因为我不关心群组,而是大量的消息。
我发现只有肮脏的解决方案来传递 returns 空字符串的 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 "";
}
}
CorrelationStrategy
是一个 @FunctionalInterface
,所以有一个简单的 lambda 和一个常量可以产生:
aggregatorFactoryBean.setCorrelationStrategy(message -> 1);
并且它会将所有消息聚合到同一个组。
另一方面,如果您只谈论缓冲消息而不是将它们以某种方式关联并单独处理,您可能最好考虑使用真正存储已发送消息的 QueueChannel
。每当您需要获取当前缓冲区进行处理时,您将其称为 clear()
其中 returns 为您的 List<Message<?>>
.
如何配置 AggregatorFactoryBean
以在没有 CorrelationStrategy(尝试使用空字符串)或对所有内容进行分组的策略的情况下对所有消息进行分组?
我没有共同领域或header。
因为我不关心群组,而是大量的消息。
我发现只有肮脏的解决方案来传递 returns 空字符串的 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 "";
}
}
CorrelationStrategy
是一个 @FunctionalInterface
,所以有一个简单的 lambda 和一个常量可以产生:
aggregatorFactoryBean.setCorrelationStrategy(message -> 1);
并且它会将所有消息聚合到同一个组。
另一方面,如果您只谈论缓冲消息而不是将它们以某种方式关联并单独处理,您可能最好考虑使用真正存储已发送消息的 QueueChannel
。每当您需要获取当前缓冲区进行处理时,您将其称为 clear()
其中 returns 为您的 List<Message<?>>
.