Ошибка истечения времени ожидания соединения в микросервисе Java - PullRequest
0 голосов
/ 12 июня 2018

Я создал микросервис с использованием Java 8 и SpringBoot 2. Из этого микросервиса я пытаюсь использовать другую службу REST API.Тем не менее я получаю следующую ошибку в Chrome

java.lang.IllegalStateException: Базовый HTTP-клиент завершен без отправки ответа.

2018-06-12 15:21: 29.300 ОШИБКА 17996 --- [ctor-http-nio-3] .awreDefaultErrorWebExceptionHandler: Не удалось обработать запрос [GET http://localhost:8080/category/search] io.netty.channel.AbstractChannel $ AnnotatedConnectException: истекло время ожидания соединения: нет дополнительной информации: тест.usdemo.xyz.com / 92.54.41.24: 443 at sun.nio.ch.SocketChannelImpl.checkConnect (собственный метод) ~ [na: 1.8.0_171] at sun.nio.ch.SocketChannelImpl.finishConnect (SocketChannelImpl.java:717) ~ [na: 1.8.0_171] на io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect (NioSocketChannel.java:325) ~ [netty-transport-4.1.24.Final.jar: 4.1.24.Final]на io.netty.channel.nio.AbstractNioChannel $ AbstractNioUnsafe.finishConnect (AbstractNioChannel.java:340) ~ [netty-transport-4.1.24.Final.jar: 4.1.24.Final] на io.netty.channel.nio.NioEventLoop.processSelectedKey (NioEventLoop.java:633)~ [netty-transport-4.1.24.Final.jar: 4.1.24.Final] на io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized (NioEventLoop.java:580) ~ [netty-transport-4.1.24.Final.jar: 4.1.24.Final] на io.netty.channel.nio.NioEventLoop.processSelectedKeys (NioEventLoop.java:497) ~ [netty-transport-4.1.24.Final.jar: 4.1.24.Final] на io.netty.channel.nio.NioEventLoop.run (NioEventLoop.java:459) ~ [netty-transport-4.1.24.Final.jar: 4.1.24.Final] в io.netty.util.concurrent.SingleThreadEventExecutor $ 5.run(SingleThreadEventExecutor.java:884) ~ [netty-common-4.1.24.Final.jar: 4.1.24.Final] в java.lang.Thread.run (Thread.java:748) ~ [na: 1.8.0_171]Вызвано: java.net.ConnectException: Тайм-аут соединения: нет дополнительной информации ... 10 общих кадров опущено

Я могу успешно использовать тот же сервис, используя PostMan, но не через мой микросервис.

Пожалуйста, помогите сообщить об этом.

Ответы [ 2 ]

0 голосов
/ 14 июня 2018

Я нашел решение этой проблемы.Мне нужно добавить прокси в веб-клиент следующим образом: -

private final WebClient webClient;
ReactorClientHttpConnector connector = new ReactorClientHttpConnector(
                options -> options.httpProxy(addressSpec -> {
                return addressSpec.host(PROXY_HOST).port(PROXY_PORT);
                }));

        this.webClient = webClientBuilder.baseUrl(BASE_URL).clientConnector(connector).build();
0 голосов
/ 13 июня 2018

Я не знаю, как редактировать свой собственный вопрос выше, так как я не вижу опции редактирования, поэтому я добавляю дополнительные сведения, чтобы получить разрешение моего запроса.

Класс контроллера: -

@RestController

открытый класс CategorySearchController {

private final CategorySearchService categorySearchService;

@Autowired
public CategorySearchController(CategorySearchService categorySearchService) {
    this.categorySearchService = categorySearchService;
}


@GetMapping(path = "/search-category")
public Mono<CategoryResponse> searchCategories(SearchRequest categorySearchRequest){
    return categorySearchService
            .searchCategories()
            .switchIfEmpty(Mono.error(
                    new EntityNotFoundException("No category matching " + categorySearchRequest.getSearchTerm() + " was found")));
}

}

Класс обслуживания: -

@Service
public class CategorySearchServiceImpl implements CategorySearchService {
    private String baseUrl = "https://demo0954903.mockable.io";

    @Override
    public Mono<CategoryResponse> searchCategories() {
        WebClient webClient = WebClient.create(baseUrl);
        return webClient.
                 get()
                .uri("/category-search")
                .retrieve()
                .bodyToMono(CategoryResponse.class);
    }
}
...