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

网站推广推广网络培训平台有哪些

网站推广推广,网络培训平台有哪些,网站制作制作网站建网站,安卓开发工具idea手机版文章目录 前言1. 问题分析2. 了解Feign3. 项目整合Feign3.1 引入依赖3.2 添加注解3.3 编写Feign客户端3.4 测试3.5 总结 4. 自定义配置4.1 配置文件方式4.2 Java代码方式 5. Feign使用优化5.1 引入依赖5.2 配置连接池 6. Feign最佳实践6.1 继承方式6.2 抽取方式 前言 微服务远… 文章目录 前言1. 问题分析2. 了解Feign3. 项目整合Feign3.1 引入依赖3.2 添加注解3.3 编写Feign客户端3.4 测试3.5 总结 4. 自定义配置4.1 配置文件方式4.2 Java代码方式 5. Feign使用优化5.1 引入依赖5.2 配置连接池 6. Feign最佳实践6.1 继承方式6.2 抽取方式 前言 微服务远程调用openFeign整合认识SpringCloud的一些核心组件openFeign。 1. 问题分析 先来看我们以前利用RestTemplate发起远程调用的代码 存在的问题 在服务消费者中我们把url地址硬编码到代码中不方便后期维护。在服务消费者中不清楚服务提供者的状态。服务消费者调用服务提供者时候如果出现故障能否及时发现不向用户抛出异常页面RestTemplate这种请求调用方式是否还有优化空间能不能类似于Dubbo那样玩 2. 了解Feign Feign是一个声明式的http客户端官方地址github.com/OpenFeign/f… 其作用就是帮助我们优雅的实现http请求的发送解决上面提到的问题。 3. 项目整合Feign Fegin的使用步骤如下 3.1 引入依赖 我们在order-service服务的pom文件中引入feign的依赖 dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId /dependency3.2 添加注解 在order-service的启动类添加注解开启Feign的功能 3.3 编写Feign客户端 package com.cisyam.order.client;import com.cisyam.pojo.User; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable;/*** author gaoziman*/ FeignClient(userservice) public interface UserClient {/*** 通过用户后编号去获取用户对象* param id* return*/GetMapping(/user/{id})User findById(PathVariable(id) Long id); }这个客户端主要是基于SpringMVC的注解来声明远程调用的信息比如 服务名称userservice请求方式GET请求路径/user/{id}请求参数Long id返回值类型User 这样Feign就可以帮助我们发送http请求无需自己使用RestTemplate来发送了。 3.4 测试 修改order-service中的OrderService类中的queryOrderById方法使用Feign客户端代替RestTemplate 3.5 总结 使用Feign的步骤 ① 引入依赖 ② 添加EnableFeignClients注解 ③ 编写FeignClient接口 ④ 使用FeignClient中定义的方法代替RestTemplate 4. 自定义配置 Feign可以支持很多的自定义配置如下表所示 类型作用说明feign.Logger.Level修改日志级别包含四种不同的级别NONE、BASIC、HEADERS、FULLfeign.codec.Decoder响应结果的解析器http远程调用的结果做解析例如解析json字符串为java对象feign.codec.Encoderfeign. Contract支持的注解格式默认是SpringMVC的注解feign. Retryer失败重试机制请求失败的重试机制默认是没有不过会使用Ribbon的重试 一般情况下默认值就能满足我们使用如果要自定义时只需要创建自定义的Bean覆盖默认Bean即可。 下面以日志为例来演示如何自定义配置。 4.1 配置文件方式 基于配置文件修改feign的日志级别可以针对单个服务 feign: client:config: userservice: # 针对某个微服务的配置loggerLevel: FULL # 日志级别 也可以针对所有服务 feign: client:config: default: # 这里用default就是全局配置如果是写服务名称则是针对某个微服务的配置loggerLevel: FULL # 日志级别 而日志的级别分为四种 NONE不记录任何日志信息这是默认值。BASIC仅记录请求的方法URL以及响应状态码和执行时间HEADERS在BASIC的基础上额外记录了请求和响应的头信息FULL记录所有请求和响应的明细包括头信息、请求体、元数据。 4.2 Java代码方式 也可以基于Java代码来修改日志级别先声明一个类然后声明一个Logger.Level的对象 public class DefaultFeignConfiguration {Beanpublic Logger.Level feignLogLevel(){return Logger.Level.BASIC; // 日志级别为BASIC} }如果要全局生效将其放到启动类的EnableFeignClients这个注解中 EnableFeignClients(defaultConfiguration DefaultFeignConfiguration .class) 如果是局部生效则把它放到对应的FeignClient这个注解中 FeignClient(value userservice, configuration DefaultFeignConfiguration .class) 5. Feign使用优化 Feign底层发起http请求依赖于其它的框架。其底层客户端实现包括 URLConnection默认实现不支持连接池Apache HttpClient 支持连接池OKHttp支持连接池 因此提高Feign的性能主要手段就是使用连接池代替默认的URLConnection。 这里我们用Apache的HttpClient来演示。 5.1 引入依赖 在order-service的pom文件中引入Apache的HttpClient依赖 !--httpClient的依赖 -- dependencygroupIdio.github.openfeign/groupIdartifactIdfeign-httpclient/artifactId /dependency5.2 配置连接池 在order-service的application.yml中添加配置 feign:client:config:default: # default全局的配置loggerLevel: BASIC # 日志级别BASIC就是基本的请求和响应信息httpclient:enabled: true # 开启feign对HttpClient的支持max-connections: 200 # 最大的连接数max-connections-per-route: 50 # 每个路径的最大连接数接下来在FeignClientFactoryBean中的loadBalance方法中打断点 Debug方式启动order-service服务可以看到这里的client底层就是Apache HttpClient 总结Feign的优化 日志级别尽量用basic 使用HttpClient或OKHttp代替URLConnection 引入feign-httpClient依赖配置文件开启httpClient功能设置连接池参数 6. Feign最佳实践 所谓 最佳时间就是使用过程中总结的经验最好的一种使用方式。 仔细的同学可以观察可以发现Feign的客户端与服务提供者的controller代码非常相似 feign客户端 UserController 有没有一种办法简化这种重复的代码编写呢 大家想到的结局方式是什么呢 这里提供两种解决方式看看你有没有想到呢 6.1 继承方式 一样的代码可以通过继承来共享 定义一个API接口利用定义方法并基于SpringMVC注解做声明。Feign客户端和Controller都集成改接口 优点 简单实现了代码共享 缺点 服务提供方、服务消费方紧耦合 参数列表中的注解映射并不会继承因此Controller中必须再次声明方法、参数列表、注解 6.2 抽取方式 将Feign的Client抽取为独立模块并且把接口有关的POJO、默认的Feign配置都放到这个模块中提供给所有消费者使用。 例如将UserClient、User、Feign的默认配置都抽取到一个feign-api包中所有微服务引用该依赖包即可直接使用。
http://www.hkea.cn/news/14313863/

相关文章:

  • 网站改版建议策划书和网站合作有哪些活动可以做
  • 关于网站策划书描述准确的有百度网站联盟
  • 在网站开发中如何设置用户登录销售网站开发意义
  • 电子政务 和网站建设总结wordpress 上传apk
  • 江门市住房城乡建设局网站东莞智通人才网最新招聘信息
  • 苏州做企业网站有哪些相册制作软件
  • 仪征做网站公司网站开发项目计划书模板
  • 品牌网站建设 蝌蚪小7网站开发费用清单
  • 自做网站的步骤小程序快速搭建
  • wordpress 网站播放器插件网站seo 最好
  • html好看的网站的代码百度推广的方式
  • 域名被锁定网站打不开合肥房产网官网
  • 网站开发最新书籍桂林象鼻山离哪个高铁站近
  • 建站的费用网络热词
  • 集团网站群图虫网官网入口
  • 网站建设需要步骤随机关键词生成器
  • 做展示网站网站建设与管理学习什么
  • 北京经济技术开发区建设局网站定制衣服
  • 什么做电子书下载网站网站模板建设报价
  • 江西铁路建设办公室网站有哪些好的网站建设
  • 网站文件怎么做哈尔滨建站模板展示
  • 星沙网站建设公司为学校网站建设
  • 各大网站平台发布信息济南网站建设开发公司哪家好
  • 网站规划的原则在哪家网站做推广好
  • 餐厅网站建设画图软件在线
  • 县城房地产网站可以做吗2022年国内互联网公司排名
  • 网站如何做好优化工程建设室内涂料招投标网站
  • 电商网站建设浩森宇特微信网站设计制作
  • 九一制作网站店铺装修效果图大全
  • 山亭建设局网站wordpress邀请 返佣