有没有办法在聚合后刷新相关ID或通道?

时间:2017-10-10 15:57:38

标签: spring-integration

My Spring Integration(使用HTTP入站网关)应用程序具有以下流程:

  • 最终客户端发布带有UUID的XML输入消息,用于唯一标识(让我们称之为XML,"整个")和其他业务元素
  • Splitter组件将其分解为更小的XML,每个" part"具有与"整体"相同的UUID的XML XML
  • 聚合器使用某些业务逻辑聚合部分以及使用传入"部分"的#U;的@CorrelationStrategy。消息

我正在尝试探索清除/刷新聚合器的inputChannel或在关联操作之后重置关联策略的方法,以使不同的POST请求能够重用传入的"整个" XML输入消息。

此时,正在发生的事情是,一旦整个"如果另一个HTTP POST发送"整个"成功处理XML输入消息。具有相同UUID的XML输入消息,流程悬而未决,可能是因为它无法理解如何处理@CorrelationStrategy或者在UUID方面处于陈旧状态。

坦率地说,UUID的定义意味着它必须为每个HTTP请求唯一生成,但只是想要适应最终客户端最终为每个POST发送相同UUID的情况。

这是我的Aggregator类及其方法的外观:

@MessageEndpoint 
public class ProductAggregator {
...
...

@Aggregator(inputChannel="compositeMessagesForAggregation", 
outputChannel="upstreamResponses")
public Message<BusinessComposite> 
generateAggregatedResponse(List<Message<BusinessComposite>> 
listOfCompositeMessagesForAggregation) {
...
...
}

@CorrelationStrategy
public UUID correlateByUUID(Message<BusinessComposite> 
compositeMessageForAggregation) { 
...
...
}

提前致谢! 此致 巴拉斯

1 个答案:

答案 0 :(得分:0)

在聚合器上将expireGroupsUponCompletionexpireGroupsUponExpiry设置为true以重复使用相同的相关ID;否则&#34;迟到&#34;消息被丢弃。