如何使用@Aggregator注释设置expire-groups-upon-completion?

时间:2018-07-13 18:23:07

标签: spring-integration

参考手册讨论了如何在XML中进行设置,我看到Jira issue@Aggregator的高级配置已完成,但没有看到这些高级属性。那么,如果使用注释,如何设置过期组?

1 个答案:

答案 0 :(得分:0)

好吧,根据JIRA票证,Reference Manual中确实存在一个示例:

@ServiceActivator(inputChannel = "aggregatorChannel")
@Bean
public MessageHandler aggregator(MessageGroupStore jdbcMessageGroupStore) {
     AggregatingMessageHandler aggregator =
                       new AggregatingMessageHandler(new DefaultAggregatingMessageGroupProcessor(),
                                                 jdbcMessageGroupStore);
     aggregator.setOutputChannel(resultsChannel());
     aggregator.setGroupTimeoutExpression(new ValueExpression<>(500L));
     aggregator.setTaskScheduler(this.taskScheduler);
     return aggregator;
}

对此事有明确的说明:

  

@Aggregator组件的注释配置(Aggregator和其他配置)仅涵盖简单的用例,其中大多数默认选项已足够。如果您需要使用注释配置对这些选项进行更多控制,请考虑为@Bean使用AggregatingMessageHandler定义,并用@Bean标记其@ServiceActivator方法

使用此方法甚至更好:

  

从版本4.2开始,AggregatorFactoryBean可用,以简化AggregatingMessageHandler的Java配置。

对我来说,文档中涵盖了所有内容。有什么遗漏吗?

我的意思是AggregatorFactoryBean有一个您需要的选项:

public void setExpireGroupsUponCompletion(Boolean expireGroupsUponCompletion) {

还不够吗?