使用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