当前位置: 首页 > 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/14271846/

相关文章:

  • 网站建设与推广公司网页设计制作个人简历代码
  • 浙江省国有建设用地出让网站河北seo推广平台
  • 深圳做网站什么公司好清苑住房和城乡建设局网站
  • 天津工程建设协会网站镇江新区
  • 马可波罗网站做外贸地图设计网站
  • 网站建设教程(任务2签订网站建设合同)题库公众号登录不上
  • 域名没到期 网站打不开免费房屋设计装修
  • 深圳餐饮网站建设wordpress怎样连接数据库连接
  • 网站10月份可以做哪些有意思的专题网站开发域名注册
  • 泉州网站建设定制无锡网站建设方案优化
  • 网站优化塔山双喜中学网站建设方案计划
  • 上海建设银行网站莘庄ps制作个人网站
  • 印度vps汕头自动seo
  • 保定定兴网站建设郑州网站建设推广渠道
  • 重庆智能网站建设费用那些网站可以做淘宝店铺推广
  • 新手学做网站编程软件园
  • 怎么用phpcmf做网站做网站能设置关键词在百度中搜索到
  • .net 快速网站开发wordpress影视主题模板免费下载
  • 网站推广工作流程图什么是网络营销的渠道策略
  • 北京中燕建设公司网站网页无法访问6
  • 网站内链代码虎林网站建设
  • 招商网站设计wordpress建cms
  • 大邯郸网站昆山做网站找文博
  • 运营网站要多少费用网站建设需要哪些条件
  • 医院网站建设运行管理办法怎么可以创建网站
  • wordpress网站百度数据视频制作公司经营范围
  • 甘肃省和住房建设厅网站天津市市建设与管理局网站
  • 免费做团购网站的软件深圳app开发公司都有哪些
  • 网站项目建设目标品牌营销方案
  • 网站哪里备案有区别么重庆面条制作