如何使用 Executor 创建 Jersey 2 客户端
How to create Jersey 2 client with Executor
我用下面的代码创建了一个 jersey 2 客户端,
ClientConfig clientConfig = new ClientConfig();
clientConfig.property(ClientProperties.READ_TIMEOUT, 5000);
clientConfig.property(ClientProperties.CONNECT_TIMEOUT, 10000);
Client client = ClientBuilder.newClient(clientConfig);
我可以提出要求,一切正常。但是我想控制客户端执行线程的数量。在 jersey 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 版本中实现相同的功能?
我只是在挖掘源代码并找到了 ExecutorServiceProvider
and @ClientAsyncExecutor
。如果你实现前者并用后者注释,只要请求是 异步 就应该使用你的执行器(我在你编辑之前注意到你正在寻找 synchronous) 并向客户端注册提供程序。
@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()
我用下面的代码创建了一个 jersey 2 客户端,
ClientConfig clientConfig = new ClientConfig();
clientConfig.property(ClientProperties.READ_TIMEOUT, 5000);
clientConfig.property(ClientProperties.CONNECT_TIMEOUT, 10000);
Client client = ClientBuilder.newClient(clientConfig);
我可以提出要求,一切正常。但是我想控制客户端执行线程的数量。在 jersey 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 版本中实现相同的功能?
我只是在挖掘源代码并找到了 ExecutorServiceProvider
and @ClientAsyncExecutor
。如果你实现前者并用后者注释,只要请求是 异步 就应该使用你的执行器(我在你编辑之前注意到你正在寻找 synchronous) 并向客户端注册提供程序。
@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()