我最近转向Spring启动并开始将所有XML转换为Java Configs。 @Aggregate注释没有expireGroupUponCompletion和persistenceStore作为输入。还有其他方法我们可以指定这些东西吗?
答案 0 :(得分:1)
我们还有其他方法可以指定这些东西吗?
使用Spring Integration Java DSL:
.aggregate(a -> a.expireGroupsUponCompletion(true)
.sendPartialResultOnExpiry(true)
.messageStore(messageStore(), null)
第二个null
参数意味着我们对某些endpoint
自定义不感兴趣,只是依赖于默认状态。我们保留了该语法以避免Lambda参数的显式类型:
.aggregate((AggregatorSpec a) -> a.expireGroupsUponCompletion(true)
.sendPartialResultOnExpiry(true)
.messageStore(messageStore())
答案 1 :(得分:1)
感谢Artem。我能够通过以下配置解决问题。
@Bean
public IntegrationFlow pollingFlow() {
return IntegrationFlows.from(splitSegment())
.aggregate( a -> a
.expireGroupsUponCompletion(true)
.messageStore(persistenceMessageStore())
.sendPartialResultOnExpiry(true)
.discardChannel(aggregateSegments())
.correlationStrategy(m -> m.getPayload())
.releaseStrategy(g -> g.getMessages().size() > 5)
.outputProcessor(g -> {
CountDB ag = new CountDB();
ag.setId((Long) g.getOne().getPayload());
ag.setActiveUsers((long)g.getMessages().size());
return ag;
})
,
null)
.channel(aggregateSegments())
.get();