У меня есть несколько тестов, помеченных как @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