resttemplate

Spring RestTemplate connection reset

匿名 (未验证) 提交于 2019-12-03 00:48:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I'm trying to consume a REST service with Spring facilities following this guide but I'm having a problem with the connection. I want to access with GET method the REST service http://date.jsontest.com/ I've written this piece of code to consume the service package pack; import static org.junit.Assert.assertTrue; import java.util.HashMap; import java.util.Map; import javax.annotation.Generated; import org.junit.Test; import org.springframework.web.client.RestTemplate; import com.fasterxml.jackson.annotation.JsonAnyGetter; import com

springboot使用restTemplate post提交值 restTemplate post值

匿名 (未验证) 提交于 2019-12-03 00:43:02
第一种是formdata形式,在header参数里可以直接看到 代码demo如下: url=‘http://posturl‘;JSONObject postData = new JSONObject(); postData.put("shopid", 1); JSONObject json = restTemplate.postForEntity(url, postData, JSONObject. class ).getBody(); 使用RestTemplate发送multipart/form-data格式的数据 String url = ‘http://posturl‘; MultiValueMap<String, String> map= new LinkedMultiValueMap<String, String>(); map.add("shopid","1"); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<MultiValueMap<String, String>>(map,

Spring Cloud Ribbon

匿名 (未验证) 提交于 2019-12-03 00:40:02
D‘E‘LET  Spring Cloud Ribbon 是一个基于HTTP 和 TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过 SpringCloud的封装 ,可以让我们轻松的将面向服务的REST模板请求自动转换成客户端负载均衡的服务调用。Spring CLoud Ribbon虽然只是一个工具类框架,它不像服务注册中国心,配置中心,API网关那样需要独立部署,但是它几乎存在每一个SpringCloud构建的微服务和基础设施中,因为为服务间的调用,API网关的请求转发等内容,实际上都是通过Ribbon来实现的,包括后续我们介绍的Feign。 客户端负载均衡   负载均衡在系统架构中是一个非常重要,并且是不得不去实施的内容。因为负载均衡对系统的高可用,网络压力的缓解和处理能力的扩容的重要手段之一。我们通常所说的负载均衡都是服务端负载均衡,其中分为硬件负载均衡和软件负载均衡。硬件负载均衡主要通过在服务器节点之间安装专门用于负载均衡的设备,比如F5等;而软件负载均衡则是通过在服务器上安装一些具有负载均衡功能或模块的软件来完成请求分发工作。只要是服务端负载均衡都能以类似的下图架构方式搭建起来:   硬件负载均衡的设备或是软件负载均衡的软件模块都会维护一个下挂可用的服务端清单,通过心跳检测来剔除故障的服务端节点以保障清单中都是可以正常访问的服务端节点

spring boot 2.0.3+spring cloud (Finchley)熔断器Hystrix

匿名 (未验证) 提交于 2019-12-03 00:37:01
在分布式系统中服务与服务之间的依赖错综复杂,一种不可避免的情况就是某些服务会出现故障,导致依赖于他们的其他服务出现远程调度的线程阻塞。某个服务的单个点的请求故障会导致用户的请求处于阻塞状态,最终的结果是整个服务的线程资源消耗殆尽。由于服务的依赖性,会导致依赖于该故障服务的其他服务也处于线程阻塞状态,最终导致这些服务的线程资源消耗殆尽,知道不可用,从而导致整个服务系统不可用,即雪崩效应。为了防止雪崩效应,产生了熔断器模型。 Hystrix是Netflix公司开源的一个项目,提供了熔断器功能,能阻止分布式系统中出现联动故障。Hystrix是通过隔离服务的访问点阻止联动故障的,并提供了故障解决方案,从而提高了整个分布式系统的弹性。 当服务的某个API接口的失败次数在一定时间内小于设定的阈值时,熔断器处于关闭状态,该API接口正常提供服务。当该API接口处理请求的失败次数大于设定的阈值时,hystrix判定该API接口出现了故障,打开熔断器,这时请求该API接口会执行快速失败的逻辑(即fallback回退的逻辑),不执行业务逻辑,请求的线程不会处于阻塞状态。处于打开状态的熔断器,一段时间后会处于半打开状态,并将一定数量的请求执行正常逻辑,剩余的请求会执行快速失败,若执行正常逻辑的请求失败了,则熔断器继续打开,若成功了,则关闭熔断器。这样熔断器就具有了自我修复的能力。

Hystrix服务降级

匿名 (未验证) 提交于 2019-12-03 00:32:02
在微服务架构中,我们将系统拆分成了一个个的服务单元,各单元应用间通过服务注册与订阅的方式互相依赖。由于每个单元都在不同的进程中运行,依赖通过远程调用的方式执行,这样就有可能因为网络原因或是依赖服务自身问题出现调用故障或延迟,而这些问题会直接导致调用方的对外服务也出现延迟,若此时调用方的请求不断增加,最后就会出现因等待出现故障的依赖方响应而形成任务积压,线程资源无法释放,最终导致自身服务的瘫痪,进一步甚至出现故障的蔓延最终导致整个系统的瘫痪。如果这样的架构存在如此严重的隐患,那么相较传统架构就更加的不稳定。为了解决这样的问题,因此产生了断路器等一系列的服务保护机制。 针对上述问题,在Spring Cloud Hystrix中实现了线程隔离、断路器等一系列的服务保护功能。它也是基于Netflix的开源框架 Hystrix实现的,该框架目标在于通过控制那些访问远程系统、服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。Hystrix具备了服务降级、服务熔断、线程隔离、请求缓存、请求合并以及服务监控等强大功能。 接下来,我们就从一个简单示例开始对Spring Cloud Hystrix的学习与使用。 在开始使用Spring Cloud Hystrix实现断路器之前,我们先拿之前实现的一些内容作为基础,其中包括: eureka-server工程:服务注册中心,端口:1001

Spring Cloud_4_Eureka集群搭建

匿名 (未验证) 提交于 2019-12-03 00:30:01
原文地址为: Spring Cloud_4_Eureka集群搭建 Eureka集群搭建 搭建Eureka集群 1、Eureka集群搭建 在介绍 Eureka 的时候,服务器实例、服务提供者实例都是只启动了一个,并没有体现高可用性 本小节将对前面的 Eureka应用 进行改造,使其可以进行集群部署 1.1、集群结构图 上节改造前 本案例将运行 两个服务器实例、两个服务提供者实例 ,然后服务调用者请求服务 本节改造后 Eureka服务器A,Eureka服务器B(114电话查询平台A接线员,B接线员) 服务提供者A,服务提供者B(多人向警察局拨打电话,人手不足,警察局也提供了A,B接线员) Eureka客户端服务调用者(不在乎有多少接线员,只知道可以向114平台查询到对应想要的电话号码) 在上一节中的Eureka应用,使用的是浏览器访问Eureka的服务调用者 改造之后,为了能看到负载均衡的效果,会编写一个HttpClient的REST客户端访问服务调用者发布的服务 本节的开发环境只有一台电脑,操作系统为Windows,如果要构建集群,需要修改hosts文件,为其添加主机名的映射 修改C:\Windows\System32\drivers\etc\hosts文件,添加127.0.0.1 slave1 slave2 2、改造服务端 新建Maven项目:atm_eureka_server

SpringCloud--服务消费者使用RestTemplate调用服务报错解决方案

匿名 (未验证) 提交于 2019-12-03 00:26:01
xl_echo编辑整理,欢迎转载,转载请声明文章来源。更多IT编程案例、资料请联系QQ:1280023003 ,群:298140694 百战不败,依不自称常胜,百败不颓,依能奋力前行。――这才是真正的堪称强大!! 前言:这里的错误请参考该文章的项目,项目地址 https://blog.csdn.net/xlecho/article/details/80683645 开发工具 版本 JDK 1.8 Maven maven-3.1.1 IDEA IntelliJ IDEA 2018.1.3 x64 Notepad Notepad++ java.lang.IllegalStateException: No instances available for HELLO-SERVICE at org .springframework .cloud .netflix .ribbon .RibbonLoadBalancerClient .execute (RibbonLoadBalancerClient .java : 75 ) ~[spring-cloud-netflix-core- 1.3 .6 .RELEASE .jar : 1.3 .6 .RELEASE ] at org .springframework .cloud .client .loadbalancer

包装实现一个具有重试机制的RestTemplate

匿名 (未验证) 提交于 2019-12-03 00:22:01
工作中经常会遇到某些接口超时、返回的数据不是我们想要的,在这些情况下,可能会要求我们对该接口进行重试,但是有的接口需要重试三次,有的需要重试两次,有的不需要重试;有的返回连接超时才重试,有的读取超时才重试,有的404才重试;有的返回-1才重试,有的返回null才重试;有的超时时间3秒,有的30秒。各种各样的场景需要我们在调用完成后自己判断是否进行重试以及进行几次重试。 现在springcloud提供的ribbon以及fegin都提供了重试机制,但也只能设置统一的或者针对某一系统的重试次数、超时时间。不符合上面的要求,所以本文来实现一个定制化的重试template(借鉴fegin,fegin的重试通过代理)。 1.首先,先抽象出我们对外提供服务的接口,如下 package com.wxind.httpexecutor.executor; /** * Created by wangxindong on 18/5/17 */ public interface HttpExecutors { /** * 自己设置重试机制、重试次数和重试间隔时间 * @param task 需执行的restTemplate任务 * @param retryer 重试机制 * @param retryMeta 重试机制的元数据,包括重试次数,以及重试的间隔时间 * @param

spring RestTemplate + mongoTemplate

匿名 (未验证) 提交于 2019-12-03 00:20:01
总结在spring boot 环境下,使用RestTemplate 结合mongoTemplate对mongodb数据库的访问,包含单一条件查询和日期区间查询! 首先是从mongo中查询出想要的数据: 定义mongo数据接口: 接口定义很简单,其中关于mongo在项目中的配置,就省略了! 源码: 单条件查询单条记录: @RequestMapping("/order/getOrderBySDKOrderId") @ResponseBody public Order getOrderBySDKOrderId(String id){ //通过一个第三方订单唯一id查询我方次订单的详情 Query query = new Query(); //定义query /* *根据 Criteria类源码看出 这个类不用new 直接调用/定义 */ query.addCriteria(Criteria.where("sdkOrder").is(id)); // 返回类型映射到一个订单对象 mongoTemplate已经注入了 Order order = mongoTemplate.findOne(query, Order.class, "order"+bartDateFormat.format(new Date())); //上面这句很有意思,因为这个犯了错,最后详解 return order; }

SpringBoot的FeignClient实现远程服务调用

匿名 (未验证) 提交于 2019-12-03 00:13:02
在注册中心对FeignClient进行配置: @EnableTransactionManagement@SpringBootApplication@EnableDiscoveryClient@ComponentScan ( basePackages = "com.XXXX" ) @EnableScheduling@EnableFeignClientspublic class CmbsTaskApplication extends BaseApplication { /** *<restTemplate>. *<装配一个全局单例RestTemplate Spring Bean用于负载均衡远程调用> * @return [返回类型说明] * @exception/throws [违例类型] [违例说明] * @author jianghao */ @Bean ( "cmbsTaskRestTemplate" ) @LoadBalanced public RestTemplate cmbsTaskRestTemplate () { return new RestTemplate (); } public static void main ( String [] args ) { SpringApplication . run ( CmbsTaskApplication . class ,