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.

Другие вопросы по тегам