2016-08-05 48 views
4

我有以下结构。弹簧集成聚合器无法正常工作。

<int:publish-subscribe-channel id="updateProjectRequest" /> 
<int:channel id="aggregate-project"/> 

<int:service-activator input-channel="updateProjectRequest" output-channel="aggregate-project" ref="updateProjectResponseHandler" method="createFolder"/> 
<int:service-activator input-channel="updateProjectRequest" output-channel="aggregate-project" ref="updateProjectResponseHandler" method="createRepo"/> 

<int:aggregator input-channel="aggregate-project" ref="projectAggregator"> 

以下是我的Aggregator类。

@Component("projectAggregator") 
public class ProjectAggregator { 

@Aggregator 
public boolean aggregatingMethod(List<Map<String, List<Project>>> items) { 
//////// CODE ////// 
} 

@ReleaseStrategy 
public boolean releaseChecker(List<Message<?>> messages) { 
//////CODE///// 
} 

@CorrelationStrategy 
public Map<String, List<Project>> correlateBy(Map<String, List<Project>> item) { 
    return item; 
} 

问题是如果我打印@ReleaseStrategy方法的消息长度它始终保持1.据我所知,这应该增加。你能帮我找出上面提到的代码有什么问题吗?

回答

1

如果您稍后想要汇总发送给发布/订阅渠道订阅者的邮件,则需要将apply-sequence设置为true

如果属实,则将correlationId和序列信息添加到消息标题中。

<xsd:attribute name="apply-sequence" type="xsd:string" default="false"> 
    <xsd:annotation> 
     <xsd:documentation> 
      Specify whether the sequence size, sequence number, and correlation id 
      headers should be set on 
      Messages that are sent through this channel. 
     </xsd:documentation> 
    </xsd:annotation> 
</xsd:attribute>