Jetty HTTP 2客户端共享相同的线程池

时间:2017-12-18 16:15:49

标签: jetty http2

使用Jetty 9.4.7

我们正在使用此代码创建2个客户端:

    client = new HTTP2Client();
    client.setIdleTimeout(-1);//disable client session timeout
    client.setExecutor(httpThreadPool);
    client.setConnectTimeout(connectionTimeoutMs);
    try {
      client.addBean(this.sslContextFactory);
      client.start();         
      FuturePromise<Session> sessionPromise = new FuturePromise<>();
      client.connect(sslContextFactory, new InetSocketAddress(this.host, this.port), new CustomSessionListener(clientInstanceName, this), sessionPromise);
      this.session = sessionPromise.get(this.connectionTimeoutMs, TimeUnit.MILLISECONDS);
    } catch(...

httpThreadPool在两个客户端之间很常见。它是一个ThreadPoolExecutor,核心池大小为4,最大池大小为128。

第一个客户端已成功创建。第二个客户端因TimeoutException失败(无论目标服务器如何,我们甚至将它们指向同一服务器)。

如果我们分配单独的线程池(或让客户端构造自己的默认QueuedThreadPool),一切正常。

除了有关问题本身的建议外,还有什么方法可以解开连接Http2客户端时抛出的异常吗?我们尝试在SessionListener中覆盖onFailure(Session,Throwable),但它没有到达那里。

感谢。

编辑:在DEBUG上记录摘录:https://pastebin.com/MUKrw4JP

0 个答案:

没有答案