Spring Integration DSL提供的ScatterGather模式实现无法传播所引发的下游异常。 经过数小时的调查,我发现ScatterGatherHandler没有设置errorChannel。如果将errorChannel设置为collectChannel,则线程将挂起。
Message<?> scatterMessage = getMessageBuilderFactory()
.fromMessage(requestMessage)
.setHeader(GATHER_RESULT_CHANNEL, gatherResultChannelName)
.setReplyChannel(this.gatherChannel)
.build();
看到此代码后,我想手动将replyChannel复制到errorChannel,它能够传播错误,但由于结果缺少correlationId而未能汇总。
有人尝试过使用scattergather进行错误处理。