@LoadBalanced WebClient не работает с модульными тестами @RestClientTest - PullRequest
0 голосов
/ 07 июня 2019

У меня есть несколько тестов, помеченных как @RestClientTest, которые используют @LoadBalanced WebClient.Builder для вызова службы.У меня запущен MockWebServer для проверки сервиса на правильном порту.Я использую ленту для балансировки нагрузки.При выполнении тестов я получаю следующее исключение:

eactor.core.Exceptions$ReactiveException: java.net.UnknownHostException: orchestration

at reactor.core.Exceptions.propagate(Exceptions.java:326)
at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:91)
at reactor.core.publisher.Mono.block(Mono.java:1494) ...

Определение моего компонента:

@LoadBalanced
public WebClient.Builder asyncWebClientBuilder() {
    TcpClient tcpClient = TcpClient.create()
            .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, connectTimeout) // Connection Timeout
            .doOnConnected(connection ->
                    connection.addHandlerLast(new ReadTimeoutHandler(readTimeout))); // Read Timeout)
    return WebClient.builder()
            .clientConnector(new ReactorClientHttpConnector(HttpClient.from(tcpClient)));

Код клиента:

return client.build()
            .method(method)
            .uri(initUriTemplateHandler()
                    .expand(url, uriVariables))
            .body(BodyInserters.fromObject(requestEntity))
            .exchange()
            .block();

Странно то, чтоточно такой же клиентский код прекрасно работает, когда я запускаю его в реальной ситуации против реального сервиса.У меня также есть несколько тестов, которые @SpringBootTest аннотированы и используют тот же самый клиент под ним, который сбалансирован по нагрузке и отлично работает.Его несбалансированная нагрузка только для случая @RestClientTest.Что мне здесь не хватает?Я использую Spring Boot 2.1.3

...