Rest 如何处理int http:outbound gateway中的404返回码(按设计)?

Rest 如何处理int http:outbound gateway中的404返回码(按设计)?,rest,spring-integration,spring-integration-http,Rest,Spring Integration,Spring Integration Http,我编写了一个Spring集成路由,用于查询SOAP和REST WS,并以某种方式聚合结果。我使用一个bean作为有效负载来收集沿途的有用信息,使用两个有效负载丰富器来查询web服务,最后使用一个转换器来构建结果 现在我的问题是,如果系统没有关于我正在查询的实体的信息,RESTWS将返回(按设计)HttpStatus.NOT_FOUND(404)。这需要被视为一个标称用例。SpringIntegration在默认情况下认为这是一个错误,并退出。我需要正确处理这种情况,在我的bean或类似的东西中存

我编写了一个Spring集成路由,用于查询SOAP和REST WS,并以某种方式聚合结果。我使用一个bean作为有效负载来收集沿途的有用信息,使用两个有效负载丰富器来查询web服务,最后使用一个转换器来构建结果

现在我的问题是,如果系统没有关于我正在查询的实体的信息,RESTWS将返回(按设计)HttpStatus.NOT_FOUND(404)。这需要被视为一个标称用例。SpringIntegration在默认情况下认为这是一个错误,并退出。我需要正确处理这种情况,在我的bean或类似的东西中存储null(我可以处理它),然后继续

因此,我尝试将错误处理程序添加到出站网关,但无法实现这一点。如果我告诉你这不是一个错误(覆盖hasError()),那么SI会尝试解组响应的主体,这显然不起作用;如果我重写handleError()而不执行任何操作,也是一样的


也许我走的方向不对,但我错过了一个更好的主意,所以。。。感激地接受任何帮助。

您可以为
表达式添加一个
评估请求HandlerAdvice
作为嵌套的
,并使用其选项:
onFailureExpression
returnFailureExpressionResult=true
。您也可以考虑使用<代码>故障通道< /> >

这样,您可以捕获
404notfound
异常,并返回您认为合适的补偿结果


您可以在中找到更多信息,并且还有一个关于此问题的项目。

谢谢!我花了几天的时间才弄清楚确切的设置,但这绝对是正确的选择。很高兴看到文档存在,即使它不是我期望的地方;-)文档和示例的两个指针特别有用(非常感谢)。@Her Bak虽然这篇文章发布已经有一段时间了,但如果您能够使用“精确设置”更新此答案或问题,这将对Spring集成知识库非常有帮助。