Есть ли способ установить тайм-аут ssl handshake?
Я использую библиотеку SttpClient для выполнения своих запросов. У меня есть запрос, который иногда может занять много времени, поэтому я изменяю тайм-аут чтения, как показано ниже:
def get(url: String): Future[String] = {
val request = basicRequest.get(Uri(new URI(url)))
request.readTimeout(2.minutes).send()
...
}
Однако я все еще получаю следующее исключение:
sttp.client.SttpClientException$ConnectException: java.net.ConnectException: время установления связи истекло через 10000 мс в sttp.client.SttpClientException$.defaultExceptionToSttpClientException(SttpClientException.scala:31) ~[core_2.12-2.2.4.jar:2.2.4] в sttp.client.asynchttpclient.AsyncHttpClientBackend.$anonfun$adjustExceptions$1(AsyncHttpClientBackend.scala:343) ~[async-http-client-backend_2.12-2.2.4.jar:2.2.4] в sttpClientException.SttpClient.SttpClient.Sttp $$anonfun$adjustExceptions$1.applyOrElse(SttpClientException.scala:59) ~[core_2.12-2.2.4.jar:2.2.4] в sttp.client.SttpClientException$$anonfun$adjustExceptions$1.applyOrElse(SttpClientException.scala:58) ~[core_2.12-2.2.4.jar:2.2.4] в scala.concurrent.Future.$ Anonfun$recoveryWith$1(Future.scala:417) ~[scala-library-2.12.12.jar:na] в scala.concurrent.impl.Promise.$anonfun$transformWith$1(Promise.scala:41) ~[scala-library-2.12.12.jar:na] в scala.concurrent.impl.CallbackRunnable.run(Promise.scala:64) ~[scala-library-2.12.12.jar:na] в java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402) ~[na:1.8.0_265] в java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) ~[na:1.8.0_265] java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) ~[na:1.8.0_265] в java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1.8.0_2) ~ 1.8.0_2 ] в java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:175) ~[na:1.8.0_265] Вызвано: java.net.ConnectException: время ожидания связи истекло через 10000 мс в org.asynchttpclient.netty.channel.Netty.onFailure(NettyConnectListener.java:179) ~[async-http-client-2.12.1.jar:na] в org.asynchttpclient.netty.channel.NettyConnectListener$1.onFailure(NettyConnectListener.java:151) ~[async-http-client-2.12.1.jar:na] в org.asynchttpclient.netty.SimpleFutureListener.operationComplete(SimpleFutureListener.java:26) ~[async- client-2.12.1.jar: na] в io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:577) ~[netty-common-4.1.48.Final.jar:4.1.48.Final] в io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:570) ~[netty-common-4.1.48.Final.jar:4.1.48.Final] в io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:549) ~[netty-common-4.1.48.Final.jar:4.1.48.Final] в io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:490) ~[netty-common-4.1.48.Final.jar:4.1.48.Final] в io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:615) ~[netty-common-4.1.48.Final.jar:4.1.48.Final] в io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:608) ~[netty-common-4.1.48.Final.jar:4.1.48.Final] в io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:117) ~[netty-common-4.1.48.Final.jar:4.1.48.Final] в io.netty.handler.ssl.SslHandler$5. запустить (SslHandler.java:2020) ~[netty-handler-4.1.48.Final.jar:4.1.48.Final] в io.netty.util.concurrent.PromiseTask.runTask(PromiseTask.java:98) ~[netty-common-4.1.48.Final.jar:4.1.48.Final] в io.netty.util.concurrent.ScheduledFutureTask.run(ScheduledFutureTask.java:170) ~[netty-common-4.1.48.Final.jar:4.1.48.Final] на io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) ~[netty-common-4.1.48.Final.jar:4.1.48.Final] на io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472) ~[netty-common-4.1.48.Final.jar:4.1.48.Final] в io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) ~[netty-transport-4.1.48.Final.jar:4.1.48.Final] в io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) ~[netty-common-4.1.48.Final.jar:4.1.48.Final] в io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.48.Final.jar:4.1.48.Final] в io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.48.Final.jar:4.1.48.Final] в java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_265] Вызвано: io.netty.handler.ssl.SslHandshakeTimeoutException: время установления связи истекло через 10000 мс в io.netty.handler.ssl.SslHandler$5.run(SslHandler.java:2017) ~[netty-handler-4.1.48.Final.jar:4.1.48.Final] ... 9 общих фреймов опущены9 общих кадров пропущены
Я вижу, что у SslHandler есть метод setHandshakeTimeout, в котором я могу изменить это значение, но есть ли способ получить к нему доступ через библиотеку SttpClient?