我创建了一个带有以下代码的球衣2客户端
ClientConfig clientConfig = new ClientConfig();
clientConfig.property(ClientProperties.READ_TIMEOUT, 5000);
clientConfig.property(ClientProperties.CONNECT_TIMEOUT, 10000);
Client client = ClientBuilder.newClient(clientConfig);
我能够提出要求,而且每件事情都可以。但我想控制客户端执行线程的数量。在球衣1中,我们可以使用如下所示的相同实现,
Client client = Client.create();
client.setConnectTimeout(5000);
client.setReadTimeout(10000);
client.setExecutorService(Executors.newFixedThreadPool(10));
我想复制同样的事情,
client.setExecutorService(Executors.newFixedThreadPool(10))
与泽西2客户。
经过一番搜索后,我发现this代表球衣2.但它可以使用 在最新版本的球衣2(2.26)。我正在使用2.25.1球衣版。如何在2.25.1版本中实现相同的目标?
答案 0 :(得分:0)
我只是挖掘了源代码,发现了ExecutorServiceProvider
和@ClientAsyncExecutor
。如果你实现前者并用后者注释它,只要请求是异步就应该使用你的执行者(我在编辑之前注意到你正在寻找同步)并向客户注册提供商。
@ClientAsyncExecutor
static class MyExecutorServiceProvider implements ExecutorServiceProvider {
@Override
public ExecutorService getExecutorService() {
System.out.println("Calling getExecutorService()");
return Executors.newFixedThreadPool(10);
}
@Override
public void dispose(ExecutorService executorService) {
executorService.shutdown();
}
}
Client client = ClientBuilder.newClient()
client.register(new MyExecutorServiceProvider());
Future<Response> res = client.target("test").async().get()