1

在我的代码中:spring-integration,分散收集通道在那里,散射通道使用任务执行程序并行地调用两个微服务并收集收集通道中的响应。我使用记录器通道在分散采集通道中记录请求响应。我可以看到来自两个服务的响应来收集频道,但坚持不去下一个频道。如果我不使用线程(任务执行程序),我怀疑收集通道的发布策略可能无法正常工作,但同样工作。建议一些东西。谢谢。任务执行程序不停止

+0

将是巨大的,有一些简单的代码从我们身边玩。听起来像与Scatter-Gather无关,但在分散阶段你会以某种方式丢失相关标题。 –

回答

0

我想你们之间有一些持久的消息存储,所以replyChannel头在消息序列化过程中被移除。

我建议您使用<header-enricher>header-channels-to-string选项将replyChannel转换为字符串表示形式。

与此同时,您可以在Scatter-Gather中自由提出有关此问题的JIRA。我们可以作出这样的字符串转换为外的现成功能,就像它是现在那里的gatherResultChannel

PollableChannel gatherResultChannel = new QueueChannel(); 

Object gatherResultChannelName = this.replyChannelRegistry.channelToChannelName(gatherResultChannel); 

Message<?> scatterMessage = getMessageBuilderFactory() 
      .fromMessage(requestMessage) 
      .setHeader(GATHER_RESULT_CHANNEL, gatherResultChannelName) 
      .setReplyChannel(this.gatherChannel) 
      .build();