非控制器SpringBoot异常拦截器

时间:2020-03-16 22:13:26

标签: spring-boot exception spring-integration

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

我想拦截所有例外情况,并在适当的时候明智地向相关各方发送警报。

`@ControllerAdvice不会剪切它,因为没有控制器。

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

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

1 个答案:

答案 0 :(得分:1)

正如Martin在其评论中指出的那样,Spring Integration使用errorChannel方法来处理流中的异常。请参见该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