rverExceptionHandler处理了这个异常,这是quarkus框架的默认处理逻辑
- DefaultAsyncObserverExceptionHandler只是输出了日志,这样的处理对于真实业务是不够的(可能需要记录到特定地方,调用其他告警服务等),所以,我们需要自定义默认的异步事件异常处理器
- 自定义的全局异步事件异常处理器如下
package com.bolingcavalry.service.impl;
import io.quarkus.arc.AsyncObserverExceptionHandler;
import io.quarkus.logging.Log;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.spi.EventContext;
import javax.enterprise.inject.spi.ObserverMethod;
@ApplicationScoped
public class NoopAsyncObserverExceptionHandler implements AsyncObserverExceptionHandler {
@Override
public void handle(Throwable throwable, ObserverMethod<?> observerMethod, EventContext<?> eventContext) {
// 异常信息
Log.info("exception is - " + throwable);
// 事件信息
Log.info("observer type is - " + observerMethod.getObservedType().getTypeName());
}
}
- 此刻,咱们再执行一次单元测试,如下图所示,异常已经被NoopAsyncObserverExceptionHandler#handler处理,异常和事件相关的信息都能拿到,您可以按照实际的业务需求来进行定制了
- 另外还要说明一下,自定义的全局异步事件异常处理器,其作用域只能是ApplicationScoped或者Singleton
- 至此,《quarkus依赖注入》系列全部完成,与bean相关的故事也就此结束了,十三篇文章凝聚了欣宸对quarkus框架bean容器的思考和实践,希望能帮助您更快的掌握和理解quarkus最核心的领域
- 虽然《quarkus依赖注入》已经终结,但是《quarkus实战》系列依然还在持续更新中,有了依赖注入的知识作为基础,接下来的quarkus之旅会更加轻松和高效
欢迎关注博客园:程序员欣宸
学习路上,你不孤单,欣宸原创一路相伴...