测试readtimeout和connectTimeout方法

测试connectTimeout的方法

方法:链接一个不可到达的IP地址
例如10.255.255.1,以下用restTemplate为例:

public void testRestTemplate() {
    log.info("开始");
    ResponseEntity<JsonResult> exchange = restTemplate.exchange("http://10.255.255.1/acv", HttpMethod.POST, new HttpEntity<>(null, null), JsonResult.class);
    log.info("结束");
}

返回:

注:这里我尝试过设置更长的连接超时,貌似最长只能是20s,设置1分钟也是20s后就报连接超时

测试ReadTimeout

方法:在服务提供者一方,设置一定的sleep时间,如下:

    public TestHttpAccessResponse testHttpAccess(TestHttpAccessRequest request) {
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return BeanUtil.toBean(request, TestHttpAccessResponse.class);
    }

以下以RestTemplate为例,在服务消费者一方,设置eadTimeout时间为4s,这样就可以触发ReadTimeoutException

    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplateBuilder()
                //连接超时
                .setConnectTimeout(Duration.ofMinutes(1))
                //读取超时,可理解为soTimeout
                .setReadTimeout(Duration.ofSeconds(4))
                .build();
    }

在消费者一方使用RestTempalte调用服务后,我这里调用一下封装【具体请看:通过SpringBoot-RestTemplate进行请求

    @SneakyThrows
    public TestHttpAccessResponse sendHttpRequestByRestTemplate() {
        TestHttpAccessRequest request = new TestHttpAccessRequest();
        request.setAge(16);
        request.setName("刘伞");
        request.setAddress("佛山市");
		//设置为5000超时的接口
        String httpUrl = "http://localhost:8082/nacos-service-provider/testHttpAccess";
        JsonResult jsonResult = restTemplateTestService.doExchange(httpUrl, request, JsonResult.class);
        if (Objects.isNull(jsonResult) || !ReturnCode.SUCCESS.getCode().equals(jsonResult.getCode())) {
            if (Objects.isNull(jsonResult)) {
                throw new BizException(ReturnCode.ERROR);
            } else {
                throw new BizException(jsonResult.getCode(), jsonResult.getMessage());
            }
        }
        TestHttpAccessResponse response = objectMapper.convertValue(jsonResult.getData(), TestHttpAccessResponse.class);
        return response;
    }

结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值