quarkus mutiny 休息客户端的错误处理

Error handling on quarkus mutiny rest client

在我的 quarkus rest 项目中,我有一个使用 mutiny 的 restclient:

@Path("/")
@RegisterRestClient(configKey = "my-api")
@RegisterClientHeaders
@RegisterProvider(MyExceptionMapper.class)
public interface MyClient {

  @POST
  @Path("path")
  Uni<MyBean> get(String body);
}

我想处理 属性 非 2XX httpError 所以我制作了我的 ExceptionMaper

public class MyExceptionMapper implements ResponseExceptionMapper<MyException> {
  @Override
  public MyException toThrowable(Response response) {
    //TODO
    return new MyException();
  }
}

客户端上的一次错误调用显示 MyExceptionMapper 处理了响应,但引发了异常并且没有成为我的 Uni Client 响应对象上的故障

Uni<MyBean> bean = myClient.get("") // i do not have a failure in case of 4XX http 
   .onFailure().invoke(fail -> System.out.println("how can i get here?"));

我是否以错误的方式在 rest 客户端上使用 mutiny?

谢谢

更新

好的,我忘了添加依赖项 quarkus-rest-client-mutiny,添加这个我注意到两件事,

ExceptionMapper 在这种情况下会变得无用吗?

我认为这是 quarkus-rest-client-mutiny 中的错误。我根据你的发现创建了一个 Github issue

如果您切换到 quarkus-rest-client-reactive

,它将如您所愿地工作