非Controller的SpringBoot异常拦截器

non-Controller SpringBoot exception interceptor

我有一个没有控制器端点的 spring 启动微服务。它完全在使用 inbound-channel-adapter 查询数据库并在必要时执行某些服务操作的工作流上运行。

我想拦截所有异常,并在适当的时候明智地向相关方发送警报。

`@ControllerAdvice 不会削减它,因为没有控制器。

关于如何通过 ExceptionHandler 或 Filter 或其他方式捕获异常的任何建议? 我们的应用程序使用 org.springframework.integration.handler.LoggingHandler 来记录异常,扩展它可能是一个选项。我不想让我的所有服务都扩展一个定义 @ExceptionHandler.

的基础 class

什么是 "spring way" 从工作流渠道捕获异常并将通知 (email/slack/otherwise) 发送给适当的用户?

正如 Martin 在他的评论中指出的那样,使用 errorChannel 方法 Spring 集成来处理流程中的异常。请参阅 inbound-channel-adapter 上的 error-channel 选项。默认情况下它是 errorChannel,它确实有一个 LoggingHandler 作为订阅者。您可以保持原样使用该全局 errorChannel,并只拥有您自己的 service-activator 作为订阅者。或者您可以配置您自己的、特定于流的错误通道及其订阅者。

在文档中查看更多信息:

https://docs.spring.io/spring-integration/docs/current/reference/html/error-handling.html#error-handling