Micronaut 中断路器的错误行为

问题描述

一个控制器:

@Controller
@CircuitBreaker
public class ExampleController {

    @Get("/")
    public Single<String> endpoint() {
        return Single.fromsupplier(this::serviceCall);
    }

    private String serviceCall() {
        throw new RuntimeException();
    }
}

Fist call 效果很好。但是,如果在 CircuitBreaker 打开时发生,第二次调用不会因相同的异常而失败。相反,它会在 micronaut 基础设施中引发 CircuitOpenException,这将导致请求中断。

是否有解决该问题的方法

完整示例:https://github.com/artfable/micronaut-test

更新:

创建了一个问题:https://github.com/micronaut-projects/micronaut-rxjava3/issues/87

注释与 rxjava2 中的 Single 一起工作正常。因此,作为一种解决方法,使用具有注释的服务并返回 rxjava2 Single,在控制器中转换为 rxjava3 Single。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)