首页 > 解决方案 > Quarkus RestClient 关闭()

问题描述

我想知道当通过 CDI 注入 RestClient 时 quarkus 的行为是什么。

在下面的示例中它会自动关闭客户端吗?

@Produces(APPLICATION_JSON)
@Consumes(APPLICATION_JSON)
@RegisterRestClient
@RegisterClientHeaders
public interface CarClient {
   @GET
   @Path("/cars/{id}")
   @Timeout(4500L)
   Car getCar(@PathParam("id") String id);
}

@Inject
@RestClient
CarClient carClient;

或者 Quarkus 要求它像下面的示例一样扩展 AutoCloseable?

@Produces(APPLICATION_JSON)
@Consumes(APPLICATION_JSON)
@RegisterRestClient
@RegisterClientHeaders
public interface CarClient extends AutoCloseable {
   @GET
   @Path("/cars/{id}")
   @Timeout(4500L)
   Car getCar(@PathParam("id") String id);
}

@Inject
@RestClient
CarClient carClient;

我们收到了一些警告,我们需要确定是否一切都已关闭。

WARN: RESTEASY004687: Closing a class org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient43Engine instance for you. Please close clients yourself.

PS:建议 quarkus 团队在有问题的客户警告中显示 :)

标签: quarkus

解决方案


Quarkus 团队表示需要在 RestClient 接口中扩展 AutoCloseable,以便自动关闭连接。


推荐阅读