代码之家  ›  专栏  ›  技术社区  ›  Vinod Kumar

获取Java微服务中的连接超时错误

  •  0
  • Vinod Kumar  · 技术社区  · 7 年前

    我用Java8和SpringBoot2构建了一个微服务。从这个微服务中,我尝试使用另一个restapi服务。但是,我在Chrome上遇到了以下错误

    2018-06-12 15:21:29.300错误17996---[ctor-http-nio-3] .a.w.r.e.DefaultErrorWebExceptionHandler:未能处理请求 http://localhost:8080/category/search] io.netty.channel频道.AbstractChannel$AnnotatedConnectionException:连接 超时:无进一步信息:测试.usdemo.xyz网站/92.54.41.24:443 在sun.nio.ch公司.承插槽连接(SocketChannelImpl.java:717) ~[na:1.8.0«] ~[网络运输-4.1.24。最终.jar:4.1.24.最终版本] 在io.netty.channel频道.nio.abstractnio通道$AbstractNioUnsafe.finishConnect文件(AbstractNioChannel.java:340) ~[网络运输-4.1.24。最终.jar:4.1.24.最终版本] 在io.netty.channel频道.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:633) ~[网络运输-4.1.24。最终.jar:4.1.24.最终版本] ~[网络运输-4.1.24。最终.jar:4.1.24.最终版本] 在io.netty.channel频道.nio.NioEventLoop.run运行(NioEventLoop.java:459) ~[网络运输-4.1.24。最终.jar:4.1.24.最终版本] ~[网-普通-4.1.24。最终.jar:4.1.24.最终版本] 在java.lang.Thread线程.运行(线程.java:748)~[na:1.8.0_]由以下原因引起:java.net.ConnectException异常:连接已计时 出局:无进一步消息 ... 省略10个公共框架

    2 回复  |  直到 7 年前
        1
  •  0
  •   Vinod Kumar    7 年前

    我不知道如何编辑我自己的问题上面,因为我没有看到编辑选项,因此我在这里添加额外的细节,以获得我的查询解决方案。

    控制器班级:-

    @RestController
    

    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);
        }
    }
    
        2
  •  0
  •   Vinod Kumar    7 年前

    我找到了解决这个问题的办法。我需要在webclient中添加代理如下所示:-

    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();
    
        3
  •  0
  •   henqdev    4 年前

    检查代理设置。在Spring应用程序中,可以将以下内容添加到VM参数以设置代理:-Dhttp.proxyHost=您的.代理.net-Dhttp.proxyPort=8080