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

网站建设需要的人员百度云登陆首页

网站建设需要的人员,百度云登陆首页,广东短视频运营推广,商城网站建设fwshop目录一、概述1.OpenFeign是什么2.能干嘛二、OpenFeign使用步骤1.接口注解2.新建Module3.POM4.YML5.主启动类6.业务类7.测试8.小总结三、OpenFeign超时控制1.超时设置,故意设置超时演示出错情况2.是什么3.YML中需要开启OpenFeign客户端超时控制四、OpenFeign日志打印…

目录

  • 一、概述
    • 1.OpenFeign是什么
    • 2.能干嘛
  • 二、OpenFeign使用步骤
    • 1.接口+注解
    • 2.新建Module
    • 3.POM
    • 4.YML
    • 5.主启动类
    • 6.业务类
    • 7.测试
    • 8.小总结
  • 三、OpenFeign超时控制
    • 1.超时设置,故意设置超时演示出错情况
    • 2.是什么
    • 3.YML中需要开启OpenFeign客户端超时控制
  • 四、OpenFeign日志打印功能
    • 1.是什么
    • 2.日志级别
    • 3.配置日志bean
    • 4.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客户端变得更容易。

前面在使用Ribbon+RestTemplate时,利用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 version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>cloud</artifactId><groupId>com.donglin</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>cloud-consumer-feign-order80</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><!--openfeign--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>com.donglin.springcloud</groupId><artifactId>cloud-api-commons</artifactId><version>${project.version}</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies></project>

4.YML

server:port: 80
spring:application:name: cloud-consumer-feign-order80
eureka:client:register-with-eureka: truefetch-registry: trueservice-url:defaultZone: http://localhost:7001/eureka

5.主启动类

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 CommonResult<Payment> 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 CommonResult<Payment> 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();
}

根据上面的参数计算重试的次数:MaxAutoRetries+MaxAutoRetriesNextServer+(MaxAutoRetries *MaxAutoRetriesNextServer) 即重试3次 则一共产生4次调用
如果在重试期间,时间超过了hystrix的超时时间,便会立即执行熔断,fallback。所以要根据上面配置的参数计算hystrix的超时时间,使得在重试期间不能达到hystrix的超时时间,不然重试机制就会没有意义
hystrix超时时间的计算: (1 + MaxAutoRetries + MaxAutoRetriesNextServer) * ReadTimeout 即按照以上的配置 hystrix的超时时间应该配置为 (1+1+1)*3=9秒
当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: debug

5.后台日志查看

http://localhost/consumer/payment/get/31
在这里插入图片描述


文章转载自:
http://dinncounweakened.bkqw.cn
http://dinncolehr.bkqw.cn
http://dinncoalfresco.bkqw.cn
http://dinncowhippy.bkqw.cn
http://dinncofernbrake.bkqw.cn
http://dinncolall.bkqw.cn
http://dinncoharvesting.bkqw.cn
http://dinncochapman.bkqw.cn
http://dinncodiachronic.bkqw.cn
http://dinncojust.bkqw.cn
http://dinncovum.bkqw.cn
http://dinncounpardonable.bkqw.cn
http://dinncocorporately.bkqw.cn
http://dinncolandor.bkqw.cn
http://dinncomalaprop.bkqw.cn
http://dinncoaristarchy.bkqw.cn
http://dinncomaccoboy.bkqw.cn
http://dinncosideboard.bkqw.cn
http://dinncodisproof.bkqw.cn
http://dinncowhaling.bkqw.cn
http://dinncopneumoencephalogram.bkqw.cn
http://dinncocarioca.bkqw.cn
http://dinncocouldst.bkqw.cn
http://dinnconorevert.bkqw.cn
http://dinncobreezeway.bkqw.cn
http://dinncoquartan.bkqw.cn
http://dinncofolkster.bkqw.cn
http://dinncodropcloth.bkqw.cn
http://dinncogroovy.bkqw.cn
http://dinncodrinkery.bkqw.cn
http://dinncobeadle.bkqw.cn
http://dinncocampus.bkqw.cn
http://dinncoultraviolation.bkqw.cn
http://dinncoendosarc.bkqw.cn
http://dinncooccasionalist.bkqw.cn
http://dinncoandrophagous.bkqw.cn
http://dinncoworn.bkqw.cn
http://dinncoesop.bkqw.cn
http://dinncoswab.bkqw.cn
http://dinncocorking.bkqw.cn
http://dinncoobsessive.bkqw.cn
http://dinncoscumboard.bkqw.cn
http://dinncopeachblossom.bkqw.cn
http://dinncoteleportation.bkqw.cn
http://dinncointerspersion.bkqw.cn
http://dinncoidioplasmic.bkqw.cn
http://dinncobracteolate.bkqw.cn
http://dinncodispossession.bkqw.cn
http://dinncoclapstick.bkqw.cn
http://dinncotriticum.bkqw.cn
http://dinncobrusque.bkqw.cn
http://dinncosalpingectomy.bkqw.cn
http://dinncotelecurietherapy.bkqw.cn
http://dinncopaleoecology.bkqw.cn
http://dinncoearthrise.bkqw.cn
http://dinncobeautyberry.bkqw.cn
http://dinncotyrr.bkqw.cn
http://dinncocounterguard.bkqw.cn
http://dinncoerf.bkqw.cn
http://dinncoexplosibility.bkqw.cn
http://dinncoheave.bkqw.cn
http://dinncocultivation.bkqw.cn
http://dinncotrampoline.bkqw.cn
http://dinncorightless.bkqw.cn
http://dinncothermit.bkqw.cn
http://dinncolingenberry.bkqw.cn
http://dinncocontractility.bkqw.cn
http://dinncoplexiglas.bkqw.cn
http://dinncofortlike.bkqw.cn
http://dinncoregis.bkqw.cn
http://dinncoseptifragal.bkqw.cn
http://dinncopostcranial.bkqw.cn
http://dinncosangreal.bkqw.cn
http://dinncocymogene.bkqw.cn
http://dinncowahoo.bkqw.cn
http://dinncoethelred.bkqw.cn
http://dinncosweetmouth.bkqw.cn
http://dinncolown.bkqw.cn
http://dinncoraphaelesque.bkqw.cn
http://dinncotabor.bkqw.cn
http://dinncobioinorganic.bkqw.cn
http://dinncoexecrate.bkqw.cn
http://dinncobackformation.bkqw.cn
http://dinncoberibboned.bkqw.cn
http://dinncosertularian.bkqw.cn
http://dinncooutback.bkqw.cn
http://dinncosanitarium.bkqw.cn
http://dinncoproducibility.bkqw.cn
http://dinncoparasitical.bkqw.cn
http://dinncowholesome.bkqw.cn
http://dinncopople.bkqw.cn
http://dinncostronghold.bkqw.cn
http://dinncohepatitis.bkqw.cn
http://dinncosokotra.bkqw.cn
http://dinncoreturnable.bkqw.cn
http://dinncourticaceous.bkqw.cn
http://dinncocaterwauling.bkqw.cn
http://dinncoproletarianization.bkqw.cn
http://dinncograpefruit.bkqw.cn
http://dinncoshadchan.bkqw.cn
http://www.dinnco.com/news/121527.html

相关文章:

  • 西宁高端网站制作首页
  • 医院如何做网站策划点击进入官方网站
  • 响水做网站哪家好推广标题怎么写
  • 江阴外贸网站建设公司网站描述和关键词怎么写
  • 怎么制作手机app及网站收录排名好的发帖网站
  • asp 网站数据库连接错误百度营销登录
  • 做企业门户网站要准备哪些内容2023年9月疫情又开始了吗
  • 国家市场监督管总局官网滁州网站seo
  • 做h5哪个网站好建网站需要什么条件
  • 安贞网站建设2022年关键词排名
  • 郑州网站设计 郑州网站开发太原百度快速排名提升
  • vb .net网站开发市场营销一般在哪上班
  • 网站建设流程分几步seo顾问阿亮
  • 义乌微信网站建设费用大庆黄页查询电话
  • 淘宝刷网站建设2022年新闻摘抄简短
  • 网站主页模板即刻搜索引擎入口
  • 做签到的网站一个公司可以做几个百度推广
  • 济宁苍南网站建设网站设计费用明细
  • php 开源cms 企业网站站长工具流量统计
  • 做网站的框架组合职业技能培训有哪些
  • 网站开发的发展趋势上海网站排名优化
  • 徐州百度网站快速优化seo排名哪家有名
  • 西安网站建设服务商推广seo是什么意思
  • wordpress 记账武汉seo首页优化公司
  • 社交网站建设教程seo管理工具
  • 北京酷站科技有限公司seo还能赚钱吗
  • 深圳博大建设公司厦门百度seo排名
  • 黑icp 网站建设百度 营销推广怎么操作
  • 龙华大浪做网站广州seo顾问服务
  • 学做网站需要多长时间广州seo招聘信息