Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 处理多线程拆分器/聚合器编排内部的异常,以转到聚合器,而不是MessagingGatewaySupport';s错误通道_Java_Spring_Spring Integration - Fatal编程技术网

Java 处理多线程拆分器/聚合器编排内部的异常,以转到聚合器,而不是MessagingGatewaySupport';s错误通道

Java 处理多线程拆分器/聚合器编排内部的异常,以转到聚合器,而不是MessagingGatewaySupport';s错误通道,java,spring,spring-integration,Java,Spring,Spring Integration,我目前有一个拆分器,它可以将消息拆分为类似的消息,其中我只添加一个头值,当消息通过编排时,该头值将导致不同的响应 最后,将这些消息发送到聚合器以将响应聚合在一起 目前,它们以多线程方式工作,但当在拆分器/聚合器业务流程中引发运行时异常,并且它向errorChannel发送消息时,就会出现问题,该消息是在我实例化MessageGatewaySupport类时设置的 我想知道是否有一种方法可以将异常发送到聚合器,这将允许我的程序继续运行,并在我这边设置为多状态响应 下面是拆分器/聚合器编排的简化设置

我目前有一个拆分器,它可以将消息拆分为类似的消息,其中我只添加一个头值,当消息通过编排时,该头值将导致不同的响应

最后,将这些消息发送到聚合器以将响应聚合在一起

目前,它们以多线程方式工作,但当在拆分器/聚合器业务流程中引发运行时异常,并且它向errorChannel发送消息时,就会出现问题,该消息是在我实例化MessageGatewaySupport类时设置的

我想知道是否有一种方法可以将异常发送到聚合器,这将允许我的程序继续运行,并在我这边设置为多状态响应

下面是拆分器/聚合器编排的简化设置


拆分器

public List splitHeaderParamByFieldName(消息消息)抛出XPathExpressionException{
列表结果=新建ArrayList();
Object paramValue=message.getHeaders().get(splitFieldName);
if(参数值instanceof List){
for(对象值:(列表)参数值){
Message newMessage=MessageBuilder.withPayload(Message.getPayload())
.copyHeaders(message.getHeaders()).setHeader(“customHeader”,value).setHeader(“receiveTimeout”,60000).build();
结果.添加(newMessage);
}
}否则{
结果。添加(消息);
}
返回结果;
}
现在我只在xslt中抛出运行时异常,xslt将消息转换为对第三方应用程序的请求。当此异常发生时,它会导致它通过MessagingGatewaySupport类中定义为错误通道的通道发送,是否有办法使此异常改为发送到聚合器

其次,我在xslt下面有一个网关,gatway的输出通道也必须是聚合器吗?我还没有从该网关抛出异常


如果您需要更多信息来帮助我完成此请求,请告诉我。我很感激你能帮我解决各种问题

在拆分器和链之间需要另一个网关,在其错误通道上有一个流来转换故障并将其发送到聚合器

来自内部网关的回复将转到链的输出通道