Spring 集成,在错误通道上捕获异常可以防止 return

Spring Integration, catching exception on error channel prevents return

我有一组简单的 REST 服务,它们都配置了 error-channel 以允许 service-activator 指定的 bean 捕获异常。

当确实发生异常时,会按预期调用 bean 中的方法,并且记录异常。但是,调用者(即 HTTP 客户端)永远不会得到响应。

我需要做什么才能 return 将某种错误(或任何错误)返回给客户端?

我假设我遗漏了一些明显的东西!

我猜你的 service-activator 没有 return 任何东西,但它不适合 request-reply 的情况。对于 top-level HTTP 组件,无论您是否在 error-channel 内捕获到异常都无关紧要,它无论如何都需要响应。

即使您在 service-activator 中捕获并记录该异常,它也必须 return 特定于响应状态的内容,例如一些字符串消息。

此外,您可以从那里或使用 <header-enricher>.

填充 HttpHeaders.STATUS_CODE 消息 header

在这种情况下,您应该只依赖请求消息 header 中的 TemporaryReplyChannel,因此不要在 [=28= 中的结束组件中提供任何 output-channel ].但是无论如何,有效的 return 必须存在。