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<?>>.