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

可以兼职做翻译的网站或app快速做网站的技术

可以兼职做翻译的网站或app,快速做网站的技术,江苏省建设注册中心网站首页,茂名做网站建设公司如果哪天 我们硬编码写的接口变了#xff0c;只要写过该接口的 都要改#xff0c;太麻烦了#xff0c; 所以 就用 OpenFeign 来解决这个麻烦 了解#xff1a; SimpleClientHttpRequestFactory和 HttpComponentsClientHttpRequestFactory 都是Spring框架中用于创建ClientH… 如果哪天 我们硬编码写的接口变了只要写过该接口的 都要改太麻烦了 所以 就用 OpenFeign 来解决这个麻烦 了解 SimpleClientHttpRequestFactory和 HttpComponentsClientHttpRequestFactory 都是Spring框架中用于创建ClientHttpRequest实例的工厂类 区别在于 底层使用的HTTP客户端库以及提供的特性和性能 1、RestTemplate 默认使用的是 SimpleClientHttpRequestFactory工厂类它用的是 JDK内置的 HttpURLConnection 性能比较低 若换成HttpClient 【我们用的也是这个】 只需要在工厂里面 new 一个工厂类HttpComponentsClientHttpRequestFactory package com.***.config;import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; import org.springframework.web.client.RestTemplate;Configuration public class RestConfig {BeanLoadBalanced// RestTemplate 默认将一级目录作为主机名// 加上LoadBalanced 之后就把以及目录作为服务名通过该服务名能够抓取到该服务名下面的所有实例数据就可以负载均衡了// LoadBalanced 会将RestTemplate 请求的url中的一级目录作为服务名然后去服务注册中心Nacos抓取对应的ip和端口// 替换成真正的ip和端口 http://nacos-a/api/a http://192.168.21.43:8080/api/a 然后再去调用对应的接口//http://nacos-a/api/apublic RestTemplate restTemplate(){RestTemplate restTemplate new RestTemplate();// 使用 httpclient 作为底层的http请求 来实现HttpComponentsClientHttpRequestFactory clientHttpRequestFactory new HttpComponentsClientHttpRequestFactory();restTemplate.setRequestFactory(clientHttpRequestFactory);return restTemplate;} }Feign Feign 可以帮助我们更快捷、优雅地调用HTTP API目的是让编写HTTP接口的客户端变得更简洁和直接 在Spring Cloud中使用Feign非常简单——创建一个接口并在接口上添加一些注解代码就完成了 OpenFeign 1、Spring Cloud Alibaba快速整合OpenFeign ① 引入依赖 !-- openfeign 远程调用 -- dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId /dependency ② 编写调用接口FeignClient注解 name: 是服务名称这是服务发现系统如 Eureka 或 Nacos中注册的服务名称 ③ 调用端 在启动类上 添加EnableFeignClients注解 EnableFeignClients: 启用 Feign 客户端的支持。 通过类路径扫描找到所有的 FeignClient 注解接口并将它们注册为 Bean ④ 发起调用像调用本地方法一样调用远程服务 ⑤ Feign 使用 SpringQueryMap 来解决多参数传递问题 你最近遇到最棘手的问题是什么踩过的坑【面试题】 之前我们很多请求 都是通过post请求的但是我们用get请求的时候 都是单个参数 没有用对象有一次我们在封装成对象的时候 遇到问题了。 解决加了一个SpringQueryMap注解 将会扫描 方法参数中的字段或属性拼接到URL上 2、高级配置 Feign 提供了很多的扩展机制让用户可以更加灵活的使用 1 日志配置 当遇到 Bug如接口调用失败、参数没收到等问题或看调用性能 就需要配置 Feign 的日志以此让 Feign 把请求信息输出来。 Feign 提供了日志打印功能我们可以通过配置来调整日志级别从而了解 Feign 中 Http 请求的细节 即对Feign接口的调用情况进行监控和输出 通过源码可以看到日志等级有 4 种分别是 NONE【性能最佳适用于生产】不记录任何日志默认值。BASIC【适用于生产环境追踪问题】仅记录请求方法、URL、响应状态代码以及执行时间。HEADERS记录BASIC级别的基础上记录请求和响应的header。FULL【比较适用于开发及测试环境定位问题】记录请求和响应的header、body和元数据。 ① 全局配置 注意 此处配置Configuration注解就会全局生效如果想指定某一个服务生效就不能加这个注解Configuration 因为feign调试日志是debug级别输出, SpringBoot默认的日志级别是Info所以feign的debug日志级别就不会输出一定要结合 logging.level.com.beiyou debug Configuration public class FeignConfig {BeanLogger.Level feignLoggerLevel(){return Logger.Level.FULL;} } ② 局部配置 局部配置让调用的微服务生效在FeignClient 注解中指定使用的配置类 局部配置的时候 FeignConfig要去掉Configuration注解 ③ 在配置文件配置 logging.level.com.*** debug 开启日志##配置feign 的日志级别 #-- default 全局配置 feign.client.config.default.loggerLevelNONE #-- nacos-a 具体服务名 feign.client.config.nacos-a.loggerLevelFULL2超时配置 若服务提供者的请求处理时间超过了请求处理的超时时间则会报Read timed out错误如下图所示 ① 全局配置 为了避免服务调用连接和处理时间超时我们可以对feign的连接超时时间和请求处理超时时间进行配置。 通过 Options 可以配置连接超时时间和读取超时时间 Configuration public class FeignConfig {Beanpublic Request.Options options() {return new Request.Options(10L, TimeUnit.SECONDS, 60L,TimeUnit.SECONDS,false);} } 注Options 的第一个参数是连接的超时时间ms)默认值是2s第二个参数是请求处理的超时时间ms)默认值是5s。 ② 配置文件中配置 #全局配置 #这里 default 是一个特殊的客户端名称用于表示全局配置, #设置 connectTimeout 和 readTimeout 属性的值来定义全局的连接超时时间和读取超时时间。feign.client.config.default.connectTimeout5000 feign.client.config.default.readTimeout10000#局部配置 请将 clientName 替换为实际的Feign客户端名称。 feign.client.config.clientName.connectTimeout5000 feign.client.config.clientName.readTimeout10000feign.client.config.order-service.connectTimeout5000 #连接超时时间ms)默认值是2s feign.client.config.order-service.readTimeout10000 #请求处理的超时时间ms)默认值是5s补充说明 Feign的底层用的是Ribbon但超时时间以Feign配置为准 3自定义拦截器(重要 重要 重要.......) 通过在OpenFeign中自定义拦截器的方式来实现服务远程调用过程中的日志输出、认证授权等应用 注 OpenFeign 中的拦截器是对服务调用者也叫消费者调用服务提供者的过程进行拦截。Spring MVC 中的拦截器是对客户端浏览器请求服务端的过程进行拦截。 通过输出日志的例子来介绍OpenFeign中拦截器的使用步骤 ① 自定义OpenFeign拦截器类 在服务消费者项目中创建一个名称为TraceIdFeignInterceptor 的拦截器类并让其继承RequestInterceptor类。 Slf4j //Component public class TraceIdFeignInterceptor implements RequestInterceptor {Overridepublic void apply(RequestTemplate template) {log.debug(请求拦截了);} } ② 配置拦截器 方式一 全局配置 在配置类中配置自定义的OpenFeign拦截器 Configuration public class FeignConfig {Beanpublic TraceIdFeignInterceptor feignInterceptor(){return new TraceIdFeignInterceptor ();} } 方式二 局部配置 也可以在application.yaml文件中对自定义的OpenFeign拦截器进行局部配置 # 拦截器 feign.client.config.order-service.requestInterceptors[0]com.beiyou.TraceIdFeignInterceptor #自定义拦截器的完整类路径 feign.client.config.order-service.requestInterceptors[1]com.beiyou.xxxxxxxxx 方式三 常用简化版 传两个 因为这两个都是要一直链路传的从第一个服务 一直传到尾 traceId 主要解决 链路跟踪问题 token 主要验证前端给我们的token是否合法有一些接口需要拿token里面用户的信息 所以要一直传到下游 使用openfeign 调用另一个微服务的get方法如果参数是 对象的话需要添加 SpringQueryMap 注解 了解契约配置 Spring Cloud 在 Feign 的基础上做了扩展使用 Spring MVC 的注解来完成Feign的功能。原生的 Feign 是不支持 Spring MVC 注解的如果你想在 Spring Cloud 中使用原生的注解方式来定义客户端也是可以的通过配置契约来改变这个配置Spring Cloud 中默认的是 SpringMvcContract。 Spring Cloud 1 早期版本就是用的原生Fegin. 随着netflix的停更替换成了Open feign 1修改契约配置支持Feign原生的注解 注意修改契约配置后OrderFeignService 不再支持springmvc的注解需要使用Feign原生的注解 /*** 修改契约配置支持Feign原生的注解*/ Bean public Contract feignContract() {return new Contract.Default(); } 2OrderService 中配置使用Feign原生的注解 FeignClient(value order-service) public interface OrderService {RequestLine(GET /hello)public String hello(); } 3也可以通过yml配置契约 feign:client:config:order-service: #对应微服务loggerLevel: FULLcontract: feign.Contract.Default #指定Feign原生注解契约配置
http://www.w-s-a.com/news/502260/

相关文章:

  • 郑州网站建设咨询银川做网站哪家好
  • 微信网站 微信支付合肥seo排名收费
  • 织梦做的网站如何上线广东省广州市番禺区南村镇
  • 网站设计的导航栏怎么做太原有网站工程公司吗
  • 苏州虎丘区建设局网站如何在一个数据库做两个网站
  • 淘宝天猫优惠券网站建设费用腾讯邮箱企业邮箱登录
  • 深圳福田做网站公司海航科技网站建设
  • 网站降权查询wordpress更换文章背景色
  • 大型电商网站开发金融企业网站建设公司
  • 成都营销型网站建设价格化妆品品牌推广方案
  • 深圳公司手机网站制作苏州网站推广哪家好
  • 网站建设开发方式包括购买学校网站建设费计入什么科目
  • 做简单网站的框架图中小微企业查询平台
  • 哪些网站可以免费做产品推广建设建设部网站
  • 网站开发销售怎么做django做网站
  • 淘宝客网站做百度竞价万网域名怎么绑定网站
  • 建设网站找哪个公司北京知名大公司有哪些
  • 专业彩票网站开发网站流量在哪设置
  • 网站建设对应的岗位榆林做网站公司
  • 网站建设公司怎么算专业js网站分页怎么做
  • 网和网站的区别phpcms和帝国cms哪个好
  • wordpress改网站名字长沙网络营销外包
  • 宝塔怎么做第二个网站网站内容设计遵循的原则有
  • 网站违反了 google 质量指南免费ppt模版网站
  • 郑州网站建设郑州网站建设成都那家网站建设好
  • 温州网站排名优化公司如何招聘软件网站开发人员
  • 成都 网站建设公司哪家好襄阳行业网站建设
  • wordpress 调用时间做网站seo的公司哪家好
  • 手机上网站搭建网站账户系统
  • 西乡网站的建设柳州建站