首页 > 解决方案 > 非控制器 SpringBoot 异常拦截器

问题描述

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

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

`@ControllerAdvice 没有删减它,因为没有控制器。

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

从工作流通道捕获异常并向适当的用户发送通知(电子邮件/松弛/其他)的“弹簧方式”是什么?

标签: spring-bootexceptionspring-integration

解决方案


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

在文档中查看更多信息:

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


推荐阅读