我们正在使用弹性 java rest high 客户端 6.1,但 rest 客户端经常随机返回超时。
我们已经通过这种方式自定义超时:
client.setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback {
override def customizeRequestConfig(requestConfigBuilder: RequestConfig.Builder): RequestConfig.Builder = {
requestConfigBuilder
.setConnectionRequestTimeout(0)
.setConnectTimeout(parameters.getInt(s"$propertyGroup.timeout.connection"))
.setSocketTimeout(parameters.getInt(s"$propertyGroup.timeout.socket"))
}
}).setMaxRetryTimeoutMillis(parameters.getInt(s"$propertyGroup.timeout.socket"))
.setFailureListener(new RestClient.FailureListener {
override def onFailure(host: HttpHost): Unit = {
val a = 0
}
})
在我们的测试中,我们将超时阈值设置为 60000ms、100000ms、180000ms;并且仍然随机获得超时异常。
只有当我们运行 FLINK JOB 以尽可能快地运行许多并行查询时,或者当我们将弹性查询到具有数十亿次迭代的 ForEach 时,才会出现此问题。
有一个策略、想法、代码片段、配置、最佳实践等来: 等待几秒钟(或几毫秒)并再次尝试执行失败的查询?