spring-data-elasticsearch Исключение тайм-аута java.net.SocketTimeoutException
Ява: 19
Спрингбут: 3.0
Зависимость:
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
<version>5.0.2</version>
</dependency>
Конфигурация
import org.springframework.context.annotation.Configuration;
import org.springframework.data.elasticsearch.client.ClientConfiguration;
import org.springframework.data.elasticsearch.client.elc.ElasticsearchConfiguration;
import org.springframework.data.elasticsearch.support.HttpHeaders;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@Configuration
public class ElasticRestClientConfig extends ElasticsearchConfiguration {
@Override
public ClientConfiguration clientConfiguration() {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.add("Accept", "application/json");
httpHeaders.add("Content-Type", "application/json");
return ClientConfiguration.builder().connectedTo("search-*****.ap-south-1.es.amazonaws.com:9200")
.usingSsl()
.withPathPrefix("app")
.withDefaultHeaders(httpHeaders)
.withBasicAuth("", "")
.withHeaders(() -> {
HttpHeaders headers = new HttpHeaders();
headers.add("currentTime", LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
return headers;
})
.withBasicAuth("", "")
.build();
}
Когда я запускаю запрос, он выдает исключение
java.net.SocketTimeoutException: 5,000 milliseconds timeout on connection http-outgoing-0
1 ответ
Одним из возможных решений этой проблемы было создание собственного открытого поискового/эластичного клиента с использованием реактивного веб-клиента Springbook.
import org.springframework.web.reactive.function.client.WebClient;
public OpenSearchClient(WebClient.Builder webClientBuilder) {
this.openSearchClient = WebClient.builder()
.baseUrl("BASE_URL")
.defaultCookie("cookieKey", "cookieValue")
.defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
.defaultHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE)
.defaultUriVariables(Collections.singletonMap("url", "BASE_URL"))
.build();
}
Без использования Spring-Data-Elastic-Search.