当前位置: 首页 > news >正文

西充县住房和城乡规划建设局网站承德市网站建设公司

西充县住房和城乡规划建设局网站,承德市网站建设公司,wordpress 文章属性,郑州上街区网站建设公司目录一、概述1.OpenFeign是什么2.能干嘛二、OpenFeign使用步骤1.接口注解2.新建Module3.POM4.YML5.主启动类6.业务类7.测试8.小总结三、OpenFeign超时控制1.超时设置#xff0c;故意设置超时演示出错情况2.是什么3.YML中需要开启OpenFeign客户端超时控制四、OpenFeign日志打印… 目录一、概述1.OpenFeign是什么2.能干嘛二、OpenFeign使用步骤1.接口注解2.新建Module3.POM4.YML5.主启动类6.业务类7.测试8.小总结三、OpenFeign超时控制1.超时设置故意设置超时演示出错情况2.是什么3.YML中需要开启OpenFeign客户端超时控制四、OpenFeign日志打印功能1.是什么2.日志级别3.配置日志bean4.YML文件里需要开启日志的Feign客户端5.后台日志查看代码链接 https://github.com/lidonglin-bit/cloud 一、概述 1.OpenFeign是什么 Feign是一个声明式的web服务客户端让编写web服务客户端变得非常容易只需创建一个接口并在接口上添加注解即可SpringCloud对Feign进行了封装使其支持了SpringMVC标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。 https://cloud.spring.io/spring-cloud-static/Hoxton.SR1/reference/htmlsingle/#spring-cloud-openfeign https://github.com/spring-cloud/spring-cloud-openfeign 2.能干嘛 Feign能干什么 Feign旨在使用编写Java Http客户端变得更容易。 前面在使用RibbonRestTemplate时利用RestTemplate对Http请求的封装处理形成了一套模板化的调用方法。 但是在实际开发中由于对服务依赖的调用可能不止一处往往一个接口会被多处调用所以通常都会针对每个微服务自行封装一些客户端类来包装这些依赖服务端额调用。所以Feign在此基础上做了进一步封装由他来帮助我们定义和实现依赖服务接口的定义。 在Feign的实现下我们只需创建一个接口并使用注解的方式来配置它以前是DAO接口上面标注Mapper注解现在是一个微服务接口上面标注一个Feign注解即可即可完成对服务提供方的接口绑定简化了使用Spring Cloud Ribbon时自动封装服务调用客户端的开发量。 Feign集成了 Ribbon 利用Ribbon维护了Payment的服务列表信息并且通过轮询实现了客户端的负载均衡。而与Ribbon不同的是通过Feign只需要定义服务绑定接口且以声明式的方法优雅而简单的实现了服务调用。 Feign和OpenFeign两者区别 二、OpenFeign使用步骤 1.接口注解 微服务调用接口FeignClient 2.新建Module cloud-consumer-feign-order80 3.POM 注意openFeign也是自带bibbon ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIdcloud/artifactIdgroupIdcom.donglin/groupIdversion1.0-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersionartifactIdcloud-consumer-feign-order80/artifactIdpropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.target/propertiesdependencies!--openfeign--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-client/artifactId/dependencydependencygroupIdcom.donglin.springcloud/groupIdartifactIdcloud-api-commons/artifactIdversion${project.version}/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactIdscoperuntime/scopeoptionaltrue/optional/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependencies/project4.YML server:port: 80 spring:application:name: cloud-consumer-feign-order80 eureka:client:register-with-eureka: truefetch-registry: trueservice-url:defaultZone: http://localhost:7001/eureka5.主启动类 package com.donglin.springcloud;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.openfeign.EnableFeignClients;SpringBootApplication EnableEurekaClient EnableFeignClients public class OrderFeignMain80 {public static void main(String[] args) {SpringApplication.run(OrderFeignMain80.class,args);} }6.业务类 1.业务逻辑接口FeignClient配置调用provider服务 2.新建PaymentFeignService接口并新增注解FeignClient package com.donglin.springcloud.service;import com.donglin.springcloud.entities.CommonResult; import com.donglin.springcloud.entities.Payment; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable;Component FeignClient(value CLOUD-PAYMENT-SERVICE) public interface PaymentFeignService {GetMapping(value /payment/get/{id})public CommonResultPayment getPaymentById(PathVariable(id) Long id); }3.控制层Controller package com.donglin.springcloud.controller;import com.donglin.springcloud.entities.CommonResult; import com.donglin.springcloud.entities.Payment; import com.donglin.springcloud.service.PaymentFeignService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController;RestController public class OrderFeignController {Autowiredprivate PaymentFeignService paymentFeignService; //调用远程的微服接口GetMapping(value /consumer/payment/get/{id})public CommonResultPayment getPaymentById(PathVariable(id) Long id){return paymentFeignService.getPaymentById(id);} }7.测试 1.先启动Eureka7001 2.再启动2个微服务8001/8002 3.启动OpenFeign微服务cloud-consumer-feign-order80 4.http://localhost/consumer/payment/get/31 5.Feign自带负载均衡配置项 8.小总结 三、OpenFeign超时控制 1.超时设置故意设置超时演示出错情况 1.服务提供方8001故意写暂停程序 GetMapping(value /payment/feign/timeout)public String paymentFeignTimeout(){try { TimeUnit.SECONDS.sleep(3); }catch (Exception e) {e.printStackTrace();} //单位秒return port;}2.服务消费方80添加超时方法PaymentFeignService GetMapping(value /payment/feign/timeout)public String paymentFeignTimeout();3.服务消费方80添加超时方法OrderFeignController GetMapping(value /consumer/payment/feign/timeout)public String paymentFeignTimeout(){return paymentFeignService.paymentFeignTimeout();}4.测试 http://localhost/consumer/payment/feign/timeout 错误页面OpenFeign默认等待一秒钟超过后报错 2.是什么 默认Feign客户端只等待一秒钟但是服务端处理需要超过1秒钟导致Feign客户端不想等待了直接报错。 为了避免这样的情况有时候我们需要设置Feign客户端的超时控制也即Ribbon的超时时间因为Feign集成了Ribbon进行负载均衡。 3.YML中需要开启OpenFeign客户端超时控制 Feign设置超时时间 使用Feign调用接口分两层ribbon的调用和hystrix的调用所以ribbon的超时时间和Hystrix的超时时间的结合就是Feign的超时时间 #设置Feign客户端超时时间openfeign默认支持ribbon ribbon:ReadTimeout: 6000ConnectTimeout: 6000MaxAutoRetries: 1 #同一台实例最大重试次数,不包括首次调用MaxAutoRetriesNextServer: 1 #重试负载均衡其他的实例最大重试次数,不包括首次调用OkToRetryOnAllOperations: false #是否所有操作都重试 #hystrix的超时时间 hystrix:command:default:execution:timeout:enabled: trueisolation:thread:timeoutInMilliseconds: 9000一般情况下 都是 ribbon 的超时时间hystrix的超时时间因为涉及到ribbon的重试机制 因为ribbon的重试机制和Feign的重试机制有冲突所以源码中默认关闭Feign的重试机制源码如下 要开启Feign的重试机制如下Feign默认重试五次 源码中有 Bean Retryer feignRetryer() {return new Retryer.Default(); }根据上面的参数计算重试的次数MaxAutoRetriesMaxAutoRetriesNextServer(MaxAutoRetries *MaxAutoRetriesNextServer) 即重试3次 则一共产生4次调用 如果在重试期间时间超过了hystrix的超时时间便会立即执行熔断fallback。所以要根据上面配置的参数计算hystrix的超时时间使得在重试期间不能达到hystrix的超时时间不然重试机制就会没有意义 hystrix超时时间的计算 (1 MaxAutoRetries MaxAutoRetriesNextServer) * ReadTimeout 即按照以上的配置 hystrix的超时时间应该配置为 111*39秒 当ribbon超时后且hystrix没有超时便会采取重试机制。当OkToRetryOnAllOperations设置为false时只会对get请求进行重试。如果设置为true便会对所有的请求进行重试如果是put或post等写操作如果服务器接口没做幂等性会产生不好的结果所以OkToRetryOnAllOperations慎用。 如果不配置ribbon的重试次数默认会重试一次 注意 默认情况下,GET方式请求无论是连接异常还是读取异常,都会进行重试 非GET方式请求,只有连接异常时,才会进行重试 四、OpenFeign日志打印功能 1.是什么 Feign提供了日志打印功能我们可以通过配置来调整日志级别从而了解Feign中Http请求的细节。说白了就是对Feign接口的调用情况进行监控和输出。 2.日志级别 NONE默认的不显示任何日志 BASIC仅记录请求方法、RUL、响应状态码及执行时间 HEADERS除了BASIC中定义的信息之外还有请求和响应的头信息 FULL除了HEADERS中定义的信息之外还有请求和响应的正文及元数据 3.配置日志bean package com.donglin.springcloud.config;import feign.Logger; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration public class FeignConfig {Beanpublic Logger.Level feignLoggerLevel(){return Logger.Level.FULL;} }4.YML文件里需要开启日志的Feign客户端 logging:level:com.donglin.springcloud.service.PaymentFeignService: debug5.后台日志查看 http://localhost/consumer/payment/get/31
http://www.dnsts.com.cn/news/122609.html

相关文章:

  • 单页网站编辑器怎样做同城配送网站
  • 优秀的手机网站设计手机网站搭建公司
  • 网站最新发布址建网站公司销售
  • 怎么看一个网站做没做竞价北京seo包年
  • 做网站能挣钱不成都中小企业网站建设
  • 谷歌网站怎么做外链wordpress体育直播
  • 网站建设168最大的网站建设公司排名
  • 广告收益平台搜索引擎优化入门
  • 西充建设局网站搜索引擎营销的过程
  • 上虞网站建设哪家好山东济南公司网站
  • 山东省建设教育集团网站首页广州开发区城市更新局
  • 关于公司网站怎么做建设网站技术方案
  • 企业营销型网站建设的可行性分析花瓣按照哪个网站做的
  • 地方门户网站建设洛可可设计公司市值
  • 榆次做网站济南网站制作哪家最好
  • 衡水医院网站建设网站建设技术外文
  • 中国建设网站下载安装微信官网网站
  • 网站开发公司有哪些怎么做带数据库的网站
  • 东莞活动网站设计模板wordpress 图床 转移
  • 绿色设计网站wordpress 当前分类链接地址
  • 河北网站建设价格低个人做网站好吗
  • 网站建设模块化实现wordpress做微博
  • 石家庄网站建设电话集团网站策划
  • 网站用户粘性域名搜索查询网
  • 猪八戒里面做网站骗子很多直播app软件开发定制
  • 网络公司做网站后交代给客户什么怎么做网站账号注册机
  • 苏州吴江做网站wordpress默认页面设置方法
  • php给一个网站做后台app 网站运营ppt
  • 网站编程课程设计心得体会营销培训课程内容
  • 免费建立网站的网站都有啥农村电商c2c模式