【问题标题】:Error handling on quarkus mutiny rest clientquarkus mutiny rest 客户端上的错误处理
【发布时间】:2021-12-17 20:42:09
【问题描述】:

在我的 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?"));

我是否以错误的方式在休息客户端上使用兵变?

谢谢

更新

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

  • 我还是通过 Myexceptionmapper

  • 我也产生了 Uni.failure,但是失败的异常不是我在 MyExceptionmapper 中创建的自定义异常,而是 RestEasyWebApplicationException

    失败:org.jboss.resteasy.client.exception.ResteasyWebApplicationException:未知错误,状态码 400 在 org.jboss.resteasy.client.exception.WebApplicationExceptionWrapper.wrap(WebApplicationExceptionWrapper.java:107) 在 org.jboss.resteasy.microprofile.client.DefaultResponseExceptionMapper.toThrowable(DefaultResponseExceptionMapper.java:21)

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

【问题讨论】:

    标签: quarkus mutiny


    【解决方案1】:

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

    如果您切换到quarkus-rest-client-reactive,它将按您的预期工作

    【讨论】:

    • 但是使用 quarkus-rest-client 响应式我失去了 Uni 接口并且必须切换到 CompletionStage?
    • 不,Uni 工作得很好。经典的quarkus-rest-client需要quarkus-rest-client-mutiny支持Uniquarkus-rest-client-reactive 没有。
    • 好的,我忘了添加依赖项quarkus-rest-client-mutiny,添加这个我注意到2件事,我仍然通过Myexceptionmapper并产生失败,但是失败的异常不是自定义的我在 MyExceptionmapper 中创建的异常但是 RestEasyWebApplicationException
    猜你喜欢
    • 2020-02-15
    • 1970-01-01
    • 2022-01-08
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    • 2022-07-14
    相关资源
    最近更新 更多