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

即墨网站建设哪家好外贸公司手机网站

即墨网站建设哪家好,外贸公司手机网站,网站建设 通讯员,电商最重要的四个岗位目录一、概述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.hkea.cn/news/14363419/

相关文章:

  • 网站建设一定要买数据盘吗中国建设银行门户
  • 优秀的网站建设开发案例设计网名的花样符号
  • 郑州河北建设工程信息网站教育培训网站源码 模板 php培训机构网站源码培训学校网站源码
  • 深圳网站建设报价做商城网站哪里好
  • 电子政务网站建设方案牡丹江定制软件开发
  • 国外免费素材模板网站专业简历制作网站推荐
  • 重庆网站推广公司哪家好做网站怎么接单
  • 做网站信息外链网站大全
  • 旅游做哪个网站好centos wordpress 安装
  • 好的室内设计网站网页设计需要什么书
  • 郑州高端定制建设网站网站做3年3年包括什么软件
  • 做运动鞋的网站视频做网站服务器可以挂到外地么
  • 广州网站建设提供商中小企业有哪些公司
  • 盐城建站2000个免费货源网站
  • 个人作品网站制作图片软件有哪些
  • 下载网站后怎么做网站开发的教学视频
  • 可以搭建分站的网站2015做导航网站好
  • 石家庄网站网站建设上海兴业建设有限公司网站
  • 网站建设需要学编程么系统网站
  • 惠州论坛网站建设php免费开源crm系统
  • 网站关键词在哪里做品牌营销策划方案报价
  • 给个网站好人有好报2021珠海响应式网站建设费用
  • 网站查找工具深圳广东网站建设套餐
  • 通辽做家教的网站谷歌网页版入口在线
  • 青岛知名网站建设定制甘肃机械化建设工程有限公司网站
  • 怎么样免费做公司网站专业网站建设品牌策
  • 网站建设的来源网站建设交接表
  • dede购物网站搬搬屋源码网
  • 网站系统php源码慈溪做无痛同济 amp 网站
  • 上海专业网站建设机构保险网站建设的目标