我正在尝试将聚合器添加到我的代码中。 我面临的几个问题。 1.如何仅使用注释设置消息库。 2.聚合器的设计是否有任何设计?基本上是一些图片解释相同。
@MessageEndpoint
public class Aggregator {
@Aggregator(inputChannel = "abcCH",outputChannel = "reply",sendPartialResultsOnExpiry = "true")
public APayload aggregatingMethod(List<APayload> items) {
return items.get(0);
}
@ReleaseStrategy
public boolean canRelease(List<Message<?>> messages){
return messages.size()>2;
}
@CorrelationStrategy
public String correlateBy(Message<AbcPayload> message) {
return (String) message.getHeaders().get(RECEIVED_MESSAGE_KEY);
}
}
答案 0 :(得分:1)
在Reference Manual我们有一个注释:
Aggregator组件的注释配置(
@Aggregator
和其他)仅涵盖简单的用例,其中大多数默认选项都足够。如果您需要使用注释配置更多地控制这些选项,请考虑对@Bean
使用AggregatingMessageHandler
定义,并使用@Bean
标记其@ServiceActivator
方法:
还有一点:
从版本4.2开始,
AggregatorFactoryBean
可用,以简化AggregatingMessageHandler
的Java配置。
因此,实际上您应该将AggregatorFactoryBean
配置为@Bean
并配置@ServiceActivator(inputChannel = "abcCH",outputChannel = "reply")
。
还要考虑使用Spring Integration Java DSL来简化Java配置的生活。