有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用Executor创建Jersey 2客户端

我用下面的代码创建了一个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号的客户

经过一番搜索,我找到了泽西2号的this。但它是可用的 在jersey 2(2.26)的最新版本中。我正在使用2.25.1泽西版本。如何实现2.25.1版本的相同功能


共 (1) 个答案

  1. # 1 楼答案

    我只是在翻查资料,发现了^{}^{}。如果实现前者并用后者注释,则只要请求是异步(在编辑之前我注意到您正在寻找同步),并且您向客户端注册了提供程序,就应该使用执行器

    @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()