首页 > 其他分享 >spring boot RestTemplate http请求

spring boot RestTemplate http请求

时间:2023-09-14 17:24:05浏览次数:34  
标签:Const spring CONST boot RestTemplate bean num INTEGER requestFactory

RestTemplate restTemplate = new RestTemplate(); 
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory(); 
requestFactory.setConnectTimeout(5000); // 设置连接超时时间为5秒 
requestFactory.setReadTimeout(5000); // 设置读取超时时间为5秒 
restTemplate.setRequestFactory(requestFactory); 

  

	/**
	 * 
	 * <p>
	 * 检查数据源状态
	 * </p>
	 * 
	 * @Title: checkDataSouceStatus
	 * @param: @return
	 * @author: jlcui
	 * @date: 2023年9月14日 下午4:12:12
	 */
	private void checkDataSouceStatus(ConfigNetauthDataSourceBean bean,Integer num) {
		try {
			SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
			requestFactory.setConnectTimeout(500);
			requestFactory.setReadTimeout(500);
			RestTemplate restTemplate = HttpClientUtils.gethTttpRestTemplate();
			restTemplate.setRequestFactory(requestFactory);
			String url = "http://10.210.21.123:8082/actuator";
			UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url);
			URI uri = builder.build().encode().toUri();
			ResponseEntity<JSONObject> forEntity = restTemplate.getForEntity(uri, JSONObject.class);
			if (HttpStatus.OK.equals(forEntity.getStatusCode())) {
				// 如果获取数据成功后,判断是否时延迟或者正常状态
				if (num == Const.CONST_INTEGER_0) {
					bean.setStatus(Const.CONST_INTEGER_2);
				} else {
					bean.setStatus(Const.CONST_INTEGER_3);
				}

			} else {
				bean.setStatus(Const.CONST_INTEGER_4);
			}
			configNetauthDataSourceService.update(bean);
		} catch (Exception e) {
			// 连接超时或读取超时抛出的异常
			if (e.getCause() instanceof SocketTimeoutException) {
				// 超时请求超过三次时则判断故障
				if (num < Const.CONST_INTEGER_3) {
					num = num + Const.CONST_INTEGER_1;
					checkDataSouceStatus(bean,num);
				} else {
					bean.setStatus(Const.CONST_INTEGER_4);
					configNetauthDataSourceService.update(bean);
				}
			} else {
				bean.setStatus(Const.CONST_INTEGER_4);
				configNetauthDataSourceService.update(bean);
				e.printStackTrace();
			}
		}
	}

  

标签:Const,spring,CONST,boot,RestTemplate,bean,num,INTEGER,requestFactory
From: https://www.cnblogs.com/cuijinlong/p/17702941.html

相关文章

  • 终于把 Spring Boot 3.0 写成书了!
    大家好,我是R哥。我的新书《SpringBoot3核心技术与最佳实战》打磨一年多,今天终于上市了,定价158元,今天刚上市搞5折促销,80元不到上车,这可能是全网最便宜的时候了,机会难得,想拥抱SpringBoot3.0的不要错过。为什么要学SpringBoot?Spring作为Java开发界的万能框架,曾经和S......
  • 基于Spring事务的可靠异步调用实践
    SpringTxAsync组件是仓储平台组(WMS6)自主研发的一个专门用于解决可靠异步调用问题的组件。通过使用SpringTxAsync组件,我们成功地解决了在仓储平台(WMS6)中的异步调用需求。经过近二年多的实践并经历了两次618活动以及两次双11活动,该组件已经在我们的所有应用中稳定运行并成功应用于......
  • jeecgboot 导出多个sheet页
    /***导出订单统计Excel数据**@paramorder*@paramtitle*@paramcreateTime_begin*@paramcreateTime_end*@return*/publicModelAndViewexportExcelByStatistics(OrderCountorder,Stringtitle,StringcreateTi......
  • [SpringSecurity5.6.2源码分析八]:SecurityContextPersistenceFilter
    前言• 当我们不在其他线程而就在容器创建的线程中使用SecurityContextHolder.getContext()获取SecurityContext的时候,正常都能获取到• SecurityContext默认是放在线程中的,所以说在某个地方一定将SecurityContext放到线程中,而这个类就是SecurityContextPersistenceFilter1、Secu......
  • Springcloud 详解
     【SpringCloud】快速入门(一)-H__D-博客园(cnblogs.com)【SpringCloud】Eureka注册中心(二)-H__D-博客园(cnblogs.com)【SpringCloud】服务提供者集群与服务发现Discovery(三)-H__D-博客园(cnblogs.com)【SpringCloud】ZooKeeper注册中心(四)-H__D-博客园(cnblo......
  • SpringBoot 3.0最低版本要求的JDK 17,这几个新特性不能不知道
    最近,有很多人在传说SpringBoot要出3.0的版本了,并且宣布不再支持Java8,最低要求是Java17了。其实,早在2021年9月份,关于SpringFramework6.0的消息出来的时候,Spring官方就已经明确了不会向下兼容,最低的JDK版本是JDK17。2022年,SpringFramework6.0和SpringBoot3.0都......
  • spring中配置事务管理器
    2023-09-14spring-jdbc.xml<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:contex......
  • Bootstrap-01
    Bootstrap概念1.概念:一个前端开发的框架,Bootstrap,来自Twitter,是目前很受欢迎的前端框架。Bootstrap是基于HTML、CSS、JavaScript的,它简洁灵活,使得Web开发更加快捷。框架:一个半成品软件,开发人员可以在框架基础上,在进行开发,简化编码。好处:......
  • SpringBoot中@ConfigurationProperties和@PropertySource的区别
    @ConfigurationProperties用于将主配置文件(application.properties或者“application.yml”)中的属性,映射到实体类中对应的属性。意思就是把主配置文件中配置属性设置到对应的Bean属性上。只需要写明prefix,如下,prefix是sever,就会自动将application文件中以sever开头的配置一一注......
  • springboot智能3D人体导医系统源码
    智能3D人体导医系统源码医院智能导诊系统是在医疗中使用的引导患者自助就诊挂号,在就诊的过程中有许多患者不知道需要挂什么号,要看什么病,通过智能导诊系统,可输入自身疾病的症状表现,或选择身体部位,在经由智慧导诊系统多维度计算,精准推荐科室,引导患者挂号就诊,实现科学就诊,不再担心挂......