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

免费中文网站模板html展示型网站建设价格

免费中文网站模板html,展示型网站建设价格,wordpress 文章章节,h5制作软件app一、前言 接下来是开展一系列的 SpringCloud 的学习之旅#xff0c;从传统的模块之间调用#xff0c;一步步的升级为 SpringCloud 模块之间的调用#xff0c;此篇文章为第四篇#xff0c;即介绍 Feign 和 OpenFeign 服务接口调用。 二、概述 2.1 Feign 是什么 Feign 是一…一、前言 接下来是开展一系列的 SpringCloud 的学习之旅从传统的模块之间调用一步步的升级为 SpringCloud 模块之间的调用此篇文章为第四篇即介绍 Feign 和 OpenFeign 服务接口调用。 二、概述 2.1 Feign 是什么 Feign 是一个声明式的 Web 服务客户端让编写 Web 服务客户端变得非常容易只需创建一个接口并在接口上添加注解即可。 2.2 Feign 用途 2.2.1 Feign 能干什么 Feign 旨在使编写 Java Http 客户端变得更容易。前面在使用 Ribbon RestTemplate 时利用 RestTemplate 对 http 请求的封装处理形成了一套模版化的调用方法。但是在实际开发中由于对服务依赖的调用可能不止一处往往一个接口会被多处调用所以通常都会针对每个微服务自行封装一些客户端类来包装这些依赖服务的调用。 所以Feign 在此基础上做了进一步封装由他来帮助我们定义和实现依赖服务接口的定义。在 Feign 的实现下我们只需创建一个接口并使用注解的方式来配置它以前是 Dao 接口上面标注 Mapper 注解现在是一个微服务接口上面标注一个 Feign 注解即可即可完成对服务提供方的接口绑定简化了使用 Spring cloud Ribbon 时自动封装服务调用客户端的开发量。 2.2.2 Feign 集成了 Ribbon Feign 集成了 Ribbon 利用 Ribbon 维护了 Payment 的服务列表信息并且通过轮询实现了客户端的负载均衡。而与 Ribbon 不同的是通过 feign 只需要定义服务绑定接口且以声明式的方法优雅而简单的实现了服务调用。 2.3 Feign 和 OpenFeign 区别 Feign 是 Spring Cloud 组件中的一个轻量级 RESTful 的 HTTP 服务客户端Feign 内置了 Ribbon用来做客户端负载均衡去调用服务注册中心的服务。 Feign 的使用方式是使用 Feign 的注解定义接口调用这个接口就可以调用服务注册中心的服务。需要引入的依赖如下 dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-feign/artifactId /dependency OpenFeign 是 Spring Cloud 在 Feign 的基础上支持了 SpringMVC 的注解如 RequesMapping 等等。OpenFeign 的 FeignClient 可以解析 SpringMVC 的 RequestMapping 注解下的接口并通过动态代理的方式产生实现类实现类中做负载均衡并调用其他服务。需要引入的依赖如下 dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId /dependency 三、OpenFeign 使用步骤 3.1 新建工程 新建一个子模块工程 cloud-consumer-feign-order80用于展示 OpenFeign 的使用步骤。 3.2 添加依赖 在 pom.xml 中添加如下的依赖 ?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.xsdmodelVersion4.0.0/modelVersionparentgroupIdcom.springcloud/groupIdartifactIdSpringCloud/artifactIdversion1.0-SNAPSHOT/version/parentartifactIdcloud-consumer-feign-order80/artifactIdpropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesdependencies!--openfeign--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId/dependency!--eureka client--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-client/artifactId/dependency!-- 引入自己定义的api通用包可以使用Payment支付Entity --dependencygroupIdcom.springcloud/groupIdartifactIdcloud-api-commons/artifactIdversion${project.version}/version/dependency!--web--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId/dependency!--一般基础通用配置--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactIdscoperuntime/scopeoptionaltrue/optional/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependencies /project 3.3 添加配置文件 在 application.yml 中添加如下的配置信息 server:port: 80eureka:client:register-with-eureka: falseservice-url:defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/ 3.3 修改启动类 需要在启动类上添加 EnableFeignClients 注解用于开启 OpenFeign 的使用代码如下 package com.springcloud;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.openfeign.EnableFeignClients;SpringBootApplication // 开启 OpenFeign EnableFeignClients public class OrderFeignMain80 {public static void main(String[] args){SpringApplication.run(OrderFeignMain80.class,args);} } 3.4 创建业务类 创建业务逻辑接口 PaymentFeignService并在接口上添加 FeignClient 注解代码如下所示 package com.springcloud.service;import com.springcloud.entities.CommonResult; import com.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 // value 值是对外暴露的服务名称 FeignClient(value CLOUD-PAYMENT-SERVICE) public interface PaymentFeignService {GetMapping(value /payment/get/{id})CommonResultPayment getPaymentById(PathVariable(id) Long id);}创建控制层代码 OrderFeignController用于对外提供服务代码如下 package com.springcloud.controller;import com.springcloud.entities.CommonResult; import com.springcloud.entities.Payment; import com.springcloud.service.PaymentFeignService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;RestController public class OrderFeignController {Resourceprivate PaymentFeignService paymentFeignService;GetMapping(value /consumer/payment/get/{id})public CommonResultPayment getPaymentById(PathVariable(id) Long id){return paymentFeignService.getPaymentById(id);} } 3.5 测试 分别启动 cloud-eureka-server7001、cloud-eureka-server7002、cloud-provider-payment8001、cloud-provider-payment8002 和 cloud-consumer-feign-order80 模块然后在浏览器输入 http://localhost/consumer/payment/get/1进行测试不断刷新界面如下图可以看到OpenFeign 还默认实现了负载均衡。 3.6 小结 四、OpenFeign 超时控制 4.1 简介 默认 Feign 客户端只等待一秒钟但是服务端处理需要超过 1 秒钟导致 Feign 客户端不想等待了直接返回报错。 4.2 现象演示 在 cloud-provider-payment8001 模块的 PaymentController 中添加一个测试方法如下 GetMapping(value /payment/feign/timeout) public String paymentFeignTimeOut() {System.out.println(*****paymentFeignTimeOut from port: serverPort);//暂停几秒钟线程try { TimeUnit.SECONDS.sleep(3); } catch (InterruptedException e) { e.printStackTrace(); }return serverPort; } 在 cloud-consumer-feign-order80 模块的 PaymentFeignService 中添加一个调用方法代码如下 Component FeignClient(value CLOUD-PAYMENT-SERVICE) public interface PaymentFeignService {GetMapping(value /payment/get/{id})CommonResultPayment getPaymentById(PathVariable(id) Long id);GetMapping(value /payment/feign/timeout)String paymentFeignTimeOut();} 在 cloud-consumer-feign-order80 模块的 OrderFeignController 中添加一个调用方法代码如下 RestController public class OrderFeignController {Resourceprivate PaymentFeignService paymentFeignService;GetMapping(value /consumer/payment/get/{id})public CommonResultPayment getPaymentById(PathVariable(id) Long id){return paymentFeignService.getPaymentById(id);}GetMapping(value /consumer/payment/feign/timeout)public String paymentFeignTimeOut(){return paymentFeignService.paymentFeignTimeOut();} } 分别启动 cloud-eureka-server7001、cloud-eureka-server7002、cloud-provider-payment8001 和 cloud-consumer-feign-order80 服务然后在浏览器输入 http://localhost/consumer/payment/feign/timeout进行测试如下图可以看到出现了超时的错误。 4.3 问题解决 由于 OpenFeign 默认支持 Ribbon所以只需要在 cloud-consumer-feign-order80 模块的 application.yml 中开启并配置 OpenFeign 的客户端超时控制即可如下 # 设置feign客户端超时时间(OpenFeign默认支持ribbon) ribbon:#指的是建立连接所用的时间适用于网络状况正常的情况下,两端连接所用的时间ReadTimeout: 5000#指的是建立连接后从服务器读取到可用资源所用的时间ConnectTimeout: 5000 重启 cloud-consumer-feign-order80 模块重新调用测试的 url 如下图 五、OpenFeign 日志打印功能 5.1 简介 Feign 提供了日志打印功能我们可以通过配置来调整日志级别从而了解 Feign 中 Http 请求的细节。说白了就是对 Feign 接口的调用情况进行监控和输出。 5.2 日志级别 1、NONE默认的不显示任何日志           2、BASIC仅记录请求方法、URL、响应状态码及执行时间           3、HEADERS除了 BASIC 中定义的信息之外还有请求和响应的头信息           4、FULL除了 HEADERS 中定义的信息之外还有请求和响应的正文及元数据。 5.3 配置 在 cloud-consumer-feign-order80 模块中新建一个配置类 FeignConfig 代码如下 package com.springcloud.config;import feign.Logger; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration public class FeignConfig {BeanLogger.Level feignLoggerLevel() {return Logger.Level.FULL;} }在 application.yml 中配置日志的 Feign 客户端因为 spring 的默认日志级别是 info而 openFegin 打印日志需要 debug所以需要将 spring 日志级别改为 debug在 application.yml 中为了只打印 openFegin 日志可以只将 openFegin 接口的包路径设置为 dubug。 logging:level:# feign日志以什么级别监控哪个接口com.springcloud.service.PaymentFeignService: debug 5.4 测试 随便调用一个测试方法后台输出的日志如下
http://www.w-s-a.com/news/8950/

相关文章:

  • 网站地图 seo中国建设招标网是私人网站吗
  • 高中作文网站全网营销有哪些平台
  • 网站构建建设制作平台上海搬家公司收费价目表
  • 成功案例展示网站做网站赚多少钱
  • 建设银行网站用什么字体网站建站后维护需要做哪些
  • 有哪些做平面设计好素材网站有哪些开网站建设
  • 国际交流网站平台有哪些筑建网
  • 网站程序是如何开发的江门市住房建设管理局网站
  • 网站建设一般需要几个步骤昵图网免费素材
  • 个人网站建设需求说明书微信域名防封在线生成
  • 专业网站建设的公司wordpress后台没有模板
  • 哈尔滨网站运营服务商制作外贸网站公司
  • 个人网站需要备案宁波网站推广工具
  • 苏州建设银行网站首页wordpress修改密码
  • 网站建设员工技能要求网站制作简单协议
  • 没有ipc备案的网站wordpress isux主题
  • 清远做网站电子商务网站建设需要的语言及特点6
  • 万州那家做网站c语言基础知识入门
  • 齐河网站建设公司价格网站建设包括什么
  • 论坛网站开发费用怎么把文件放到网站的根目录
  • 海南省零售户电商网站官渡区住房和城乡建设局网站
  • 怎么找淘宝客网站最新军事战况
  • 缺乏门户网站建设网页设计与制作项目教程第二版
  • 手机网站横竖屏一般做建设的是什么公司
  • 免费网站建设无广告网站开发 华景新城
  • 湖州网站制作报价西安网站开发有哪些公司
  • google 浏览器开源seo软件
  • 网站空间是什么意思自己怎样建设网站
  • 国外家装设计网站如何做软件开发
  • 凡科建站登录官网当当网网站建设策划书