有一个控制器:
@Controller
@CircuitBreaker
public class ExampleController {
@Get("/")
public Single<String> endpoint() {
return Single.fromSupplier(this::serviceCall);
}
private String serviceCall() {
throw new RuntimeException();
}
}
拳头通话绝对没问题。但是,如果在 CircuitBreaker 打开时发生第二次调用,则不会因相同的异常而失败。相反,它会在 micronaut 基础设施中出现 CircuitOpenException,从而导致请求中断。
有解决该问题的方法吗?
完整示例:https ://github.com/artfable/micronaut-test
更新:
创建了一个问题:https ://github.com/micronaut-projects/micronaut-rxjava3/issues/87
注释适用于来自 rxjava2 的 Single。因此,作为一种解决方法,使用将具有注释并返回 rxjava2 Single 的服务,在控制器中转换为 rxjava3 Single。