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
必须存在。
我有一组简单的 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
必须存在。