spring-boot - 非控制器 SpringBoot 异常拦截器
问题描述
我有一个没有控制器端点的 Spring Boot 微服务。它完全在一个工作流上运行,inbound-channel-adapter
用于查询数据库并在必要时执行一些服务操作。
我想拦截所有异常并在适当的时候明智地向适当的各方发送警报。
`@ControllerAdvice 没有删减它,因为没有控制器。
关于如何通过 ExceptionHandler 或 Filter 或其他方式捕获异常的任何建议?我们的应用程序使用 org.springframework.integration.handler.LoggingHandler 来记录异常,扩展它可能是一个选项。我不希望我的所有服务都扩展一个定义@ExceptionHandler
.
从工作流通道捕获异常并向适当的用户发送通知(电子邮件/松弛/其他)的“弹簧方式”是什么?
解决方案
正如 Martin 在他的评论中指出的那样,一种errorChannel
方法是使用 Spring Integration 来处理流中的异常。请参阅error-channel
关于该选项的选项inbound-channel-adapter
。默认情况下,它errorChannel
确实有LoggingHandler
一个订阅者。您可以保持原样使用该全球性产品errorChannel
,并且只需拥有自己service-activator
的订阅者即可。或者,您可以配置自己的、特定于流的错误通道及其订阅者。
在文档中查看更多信息:
推荐阅读
- javascript - 同时向多个屏幕传递参数
- python-3.x - OSError: [WinError 126] 导入 seaborn 包时
- r - 加入两个数据框以填充缺失的数据
- google-app-engine - 如何在 Google App Engine 上使用电报 webhook?
- express - GraphQl,Sequelize-CLi,模型捆绑器 - sequelize.import 不是函数
- arrays - 为什么带有过滤器管道的ngFor会导致无限循环?
- c# - 在 Visual Studio 中调试应用程序时,Settings.Default.Save() 不会持续存在
- powershell - 如何在 Powershell 中使用 OR 操作
- xcode - Swift 故事板和 Hello World
- python - 尝试抓取我的蜘蛛时出错 (NotImplementedError)