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

微信公众号做微网站/苏州seo排名优化课程

微信公众号做微网站,苏州seo排名优化课程,广东网络公司网站,河南省建设厅执业资格注册中心网站Feign高级功能详解 注意: 本篇Feign的高级功能实现请参考上一篇博客.Feign的高级功能实现以上一篇博客代码为基础,我们主要修改service_feign_consumer(服务消费者)客户端代码. https://mp.csdn.net/postedit/95957488 一. Feign的高级应用 Feign的高级应用大致有如下几条…

Feign高级功能详解

注意:

本篇Feign的高级功能实现请参考上一篇博客.Feign的高级功能实现以上一篇博客代码为基础,我们主要修改service_feign_consumer(服务消费者)客户端代码.

https://mp.csdn.net/postedit/95957488

一. Feign的高级应用

Feign的高级应用大致有如下几条:

  • 1️⃣. feign开启Gzip压缩;

  • 2️⃣. feign开启日志功能;

  • 3️⃣. feign替换JDK默认的URLConnection为okhttp;

  • 4️⃣. feign超时设置;

  • 5️⃣. feign使用hystrix进行熔断、降级处理.

二. Feign的高级功能实现

1. feign开启Gzip压缩

Spring Cloud Feign支持对请求与响应的压缩,以提高通信效率,在服务消费者配置文件开启压缩支持和压缩文件的类型即可.

在service_feign_consumer的application.yml文件中添加配置.

feign:#feign开启Gzip压缩,Feign支持对请求与响应的压缩,以提高通信效率,在服务消费者配置文件开启压缩支持和压缩文件的类型即可#请求与响应的压缩compression:request:enabled: truemime-types: text/xml,application/xml,application/jsonmin-request-size: 2048response:enabled: true

2. feign开启日志功能

feign开启日志可以分为2步,首先是在配置文件中编辑,然后使用编写Java配置类.

2.1 在application.yml中设置日志输出级别

#设置日志输出级别
logging:level:com.syc.cloud.service.FeignHelloService: info

2.2 创建FeignLogConfig日志配置类

创建FeignLogConfig类,添加一个LoggerBean.

package com.syc.cloud.config;import feign.Logger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** feign开启日志:* feign开启日志有两种方式,一种是使用配置文件,一种是使用java代码.* 下面将介绍代码配置方式:* 创建FeignLogConfig类,添加一个LoggerBean.*/
@Configuration
public class FeignLogConfig {/*** 日志level有4个级别:* 1.NONE,不记录任何日志;* 2.BASIC,仅记录请求方法,URL以及响应状态码和执行时间;* 3.HEADRES,除了BASIC以外的还会记录请求和响应的头信息;* 4.FULL,所有.*/@BeanLogger.Level feignLogger(){return Logger.Level.FULL;}
}

3. feign替换JDK默认的URLConnection为okhttp

使用okhttp,能提高qps,因为okhttp有连接池和超时时间进行调优.

3.1 在服务消费者中,添加feign-okhttp依赖

<!--feign替换JDK默认的URLConnection为OkHttp.
使用okhttp,能提高qps,因为okhttp有连接池和超时时间进行调优-->
<dependency><groupId>io.github.openfeign</groupId><artifactId>feign-okhttp</artifactId>
</dependency>

3.2 在配置文件中,禁用默认的http,启用okhttp.

feign:#禁用默认的http,启用okhttphttpclient:enabled: falseokhttp:enabled: true

3.3 创建OkHttpConfig类,添加okhttp的bean

package com.syc.cloud.config;import feign.Feign;
import okhttp3.ConnectionPool;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.util.concurrent.TimeUnit;/*** 配置okhttp与连接池,ConnectionPool默认创建5个线程,保持5分钟长连接*/
@Configuration
@ConditionalOnClass(Feign.class)
public class OkHttpConfig {@Beanpublic okhttp3.OkHttpClient okHttpClient() {return new okhttp3.OkHttpClient.Builder()//设置连接超时.connectTimeout(10, TimeUnit.SECONDS)//设置读超时.readTimeout(10, TimeUnit.SECONDS)//设置写超时.writeTimeout(10, TimeUnit.SECONDS)//是否自动重连.retryOnConnectionFailure(true)//保持5分钟长连接.connectionPool(new ConnectionPool(10, 5L, TimeUnit.MINUTES)).build();}
}

4. feign超时设置

# hystrix的超时时间
# 超时时间设置为10秒,服务提供者睡眠时间大于10秒,服务消费者就会触发hystrix,进行熔断保护.
hystrix:command:default:execution:timeout:enabled: trueisolation:thread:timeoutInMilliseconds: 10000
#ribbon的超时时间
ribbon:ReadTimeout: 10000ConnectTimeout: 10000
#Feign是自带断路器的,在D版本的Spring Cloud之后,它没有默认打开,需要在配置文件中配置打开它.
#feign启用hystrix,才能熔断、降级.
feign:hystrix:enabled: true

5. feign使用hystrix进行熔断、降级处理

上面feign的超时时间设置为10秒,当服务提供者睡眠时间大于10秒,服务消费者调用服务提供者的方法,就会触发hystrix,进行熔断保护.

5.1 改造服务提供者,让服务睡眠60秒

package com.syc.cloud.web;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@Value("${server.port}")private String port;@RequestMapping("/hello")public String sayHi(@RequestParam String name) {try {//睡眠60秒,测试feign的熔断、降级.Thread.sleep(60 * 1000);}catch (Exception e){e.printStackTrace();}return "Hello," + name + "! This is " + port;}}

5.2 改造服务消费者,添加feign的熔断、降级方法

feign的hystrix熔断降级很容易实现,只要在FeignClient的fallback回滚方法中指定那个实现类即可.

package com.syc.cloud.service;import com.syc.cloud.hystrix.FeignHelloServiceHystrix;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;@FeignClient(value = "eureka-provider",fallback = FeignHelloServiceHystrix.class)
public interface FeignHelloService {@RequestMapping(value = "/hello", method = RequestMethod.GET)String sayHello(@RequestParam(value = "name") String name);}

5.3 FeignHelloServiceHystrix代码

package com.syc.cloud.hystrix;import com.syc.cloud.service.FeignHelloService;
import org.springframework.stereotype.Component;/***  feign熔断器处理*/
@Component
public class FeignHelloServiceHystrix implements FeignHelloService {@Overridepublic String sayHello(String name) {return "Hello "+name+". Please check your network!!!";}
}

6. 此时完整的application.yml文件

server:port: 8765
spring:application:name: eureka-feign
eureka:instance:hostname: localhostclient:serviceUrl:defaultZone: http://localhost:8761/eureka/# hystrix的超时时间
# 超时时间设置为10秒,服务提供者睡眠时间大于10秒,服务消费者就会触发hystrix,进行熔断保护.
hystrix:command:default:execution:timeout:enabled: trueisolation:thread:timeoutInMilliseconds: 10000
# ribbon的超时时间
ribbon:ReadTimeout: 10000ConnectTimeout: 10000
#Feign是自带断路器的,在D版本的Spring Cloud之后,它没有默认打开,需要在配置文件中配置打开它.
#feign启用hystrix,才能熔断、降级.
feign:hystrix:enabled: true#feign开启Gzip压缩,Feign支持对请求与响应的压缩,以提高通信效率,在服务消费者配置文件开启压缩支持和压缩文件的类型即可#请求与响应的压缩compression:request:enabled: truemime-types: text/xml,application/xml,application/jsonmin-request-size: 2048response:enabled: true#禁用默认的http,启用okhttphttpclient:enabled: falseokhttp:enabled: true
#设置日志输出级别
logging:level:com.syc.cloud.service.FeignHelloService: info

7. 此时目录结构

 

http://www.lbrq.cn/news/1352035.html

相关文章:

  • 有没有免费建网站/网站设计专业的公司
  • 西安做网站的公司报价/百度提交收录入口
  • 潍坊网站建设制作/学生个人网页制作成品代码
  • 橙云网站建设/跨境电商seo是什么意思
  • 建一个类似京东的网站/网络广告的形式
  • 邢台网站制作公司哪家专业/央视新闻的新闻
  • 衡水网站建设套餐/seo博客大全
  • 建设网站可选择的方案有/百度浏览器网页
  • 睢宁做网站/百度数据研究中心官网
  • 设计页面纸张大小/seo的优化技巧和方法
  • java做网站合适吗/营销型网站建设托管
  • 网站建设的程序/海外推广代理公司
  • wordpress 木马 查/娄底seo
  • 宽屏wordpress主题/seo外链发布工具
  • 个人网站备案需要多久/线上推广方案模板
  • 模板网站优化/直播发布会
  • 一个网站2级域名多/关键词seo排名怎么选
  • 网站服务器拒绝连接/seo优化包括什么
  • 电子商务网站建设总结/发表文章的平台有哪些
  • 小型电子商务网站规划建设方案/网络营销环境分析包括哪些内容
  • wordpress网站入口/上海职业技能培训机构
  • 子目录做网站/怎样把产品放到网上销售
  • 网站建设平台网站设计/如何自己开发一个网站
  • 网上书店网站建设实训总结/如何制作自己的公司网站
  • 重庆网站关键词优化推广/推广下载
  • ps制作博客网站界面/最好用的搜索神器
  • 邢台专业网站建设公司推荐/企业专业搜索引擎优化
  • 做公众号的网站模板下载吗/搜狗收录提交入口网址
  • 做网站的的价格/谷歌seo外包
  • 山西移动网站设计/如何推广好一个产品
  • mapbox进阶,mapbox-gl-draw绘图插件扩展,绘制新增、编辑模式支持点、线、面的捕捉
  • 解锁高效开发:AWS 前端 Web 与移动应用解决方案详解
  • 机器学习通关秘籍|Day 04:梯度下降的概念原理、手动实现梯度下降
  • 19day-人工智能-机器学习-分类算法-决策树
  • 初识神经网络01——认识PyTorch
  • OpenCV校准双目相机并测量距离