Springcloud的服务调用---OpenFeign

目录:
1.OpenFeign
	1.1创建feign模块
	1.2超时控制
	1.3日志打印

一,简单介绍一下服务调用

服务调用,指的是注册到服务端上的客户端之间数据的相互调用问题。

 spring-cloud调用服务有两种方式,一种是	Ribbon+RestTemplate, 另外一种是Feign。
 
服务降级,指的是当服务器压力剧增时,根据当前业务情况及流量对一些服务和页面有策略的降级,
以此释放服务器资源以保证核心任务的正常运行。

二,OpenFeign

1.创建feign模块
首先,新建一个消费者募模块.feign自带负载均衡配置,所以不用手动配置.
然后,创建cloud-consumer-feign-order80
在这里插入图片描述

 1.1.引入依赖
 <dependencies>
    <!-- Open Feign -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    <!-- eureka Client -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    <dependency><!-- 引入自己定义的api通用包,可以使用Payment支付Entity -->
        <groupId>com.krisswen.cloud</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.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>
 1.2编写配置文件
 server:
  port: 80
spring:
  application:
    name: cloud-consumer-feign-service
eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
 1.3编写启动类
@SpringBootApplication
@EnableFeignClients //开启使用feign客户端的功能
public class CustomerFeignMain80 {
    public static void main(String[] args) {
        SpringApplication.run(CustomerFeignMain80.class,args);
    }
}
 1.4编写grign客户端
@FeignClient(value = "cloud-payment-service") //标识当前接口就是一个feign客户端,并且指定调用哪一个微服务
public interface PaymentFeignService {
    @GetMapping("payment/{id}")
    public CommonResult<Payment> findPaymentById(@PathVariable("id") Long id);
}
 1.5编写controller层
 @RestController
public class CustomerFeignController {

    @Autowired
    PaymentFeignService paymentFeignService;

    @GetMapping("consumer/feign/payment/{id}")
    public CommonResult<Payment> getPaymentById(@PathVariable("id") Long id){
        return paymentFeignService.getPaymentById(id);
    }
}
//localhost/consumer/feign/payment/1
 1.6.测试结果
分别启动 两台eureka 7001  7002
两台服务提供方 8001 8002
启动feign客户端  cloud-consumer-feign-order80
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210120082738315.JPG#pic_center)

1.7.最终的目录为下图所示:
在这里插入图片描述

2.超时控制
2.1在提供方添加模拟服务超时的方法用来测试
设置需要响应的时间

  @GetMapping("/payment/feign/timeout")
public String paymentFeignTimeOut(){
    try {
        TimeUnit.SECONDS.sleep(3);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    return "time out.....";
}

2.2在feign客户端中定义超时方法

@GetMapping("/payment/feign/timeout")
public String paymentFeignTimeOut();

2.3.在controller中定义

@GetMapping("consumer/feign/timeout")
public String timeout(){
    //openfeign调用服务,默认等待时间是1秒钟
    return paymentFeignService.paymentFeignTimeOut();
}

2.4.进行测试,通过Feign客户端进行访问

2.4.1.首先我们直接访问服务中的paymentFeignTimeOut方法
2.4.2.然后我们直接访问feign客户端类访问

2.5.设置避免超时调用

feign:
  client:
    config:
      default:
        readTimeout: 5000
        connectTimeout: 5000
ribbon: #设置Feign客户端调用超时时间
  ReadTimeOut: 5000 #指的是建立连接所需要的的时间
  ConnectTimeOut: 5000 #指的是建立连接之后,服务器读取资源需要的时间

3.日志打印
 Feign提供了日志打印功能,我们可以通过配置来调整日志级别,从而了解Feign中Http的请求细节,就是对Feign接口的调用情况进行监控和输出。
3.1.自定义配置类

@Configuration
public class FeignConfig {
    @Bean
    Logger.Level feignLoggerLevel(){
        return Logger.Level.FULL;
    }
}

3.2定义配置文件的日志配置内容

logging:
  level:
    com.kriss.service.PaymentFeignService: debug

3.3测试结果,查看我们的打印信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ork.cloud:spring-cloud-starter-openfeign:jar是一个基于Spring Cloud的开源库,用于简化微服务架构中服务之间的调用和通信。 OpenFeign是一个声明式的Web服务客户端,它简化了编写HTTP请求的代码,使得服务调用更加简单和高效。它是Spring Cloud提供的一个集成了Ribbon和Hystrix的库,可以方便地与其他微服务组件集成使用。 使用OpenFeign,我们可以通过编写接口的方式来定义服务间的调用,而不需要关注底层的HTTP请求。通过注解配置,OpenFeign会自动根据接口定义生成对应的代理类,并且提供了负载均衡、断路器等功能,方便处理高并发和服务故障的情况。 在微服务架构中,服务之间的调用是非常频繁的,而且随着微服务的增多,手动编写HTTP请求的代码会变得非常繁琐和容易出错。使用OpenFeign可以大大简化服务之间的调用流程,提高开发效率和代码质量。 总结来说,ork.cloud:spring-cloud-starter-openfeign:jar是一个方便而强大的库,可以帮助我们简化微服务架构中服务之间的调用和通信,并且提供了负载均衡和断路器等功能,能够提高系统的可靠性和性能。 ### 回答2: ork.cloud:spring-cloud-starter-openfeign:jar是一个基于Spring Cloud的开源项目,它提供了一种方便的编写和调用RESTful服务的方式。Feign是一个声明式的Web服务客户端,它可以简化HTTP请求的处理和封装,使得开发者可以更加专注于业务逻辑的编写。 使用Spring Cloud Starter OpenFeign可以快速地编写和调用其他微服务。它通过注解的方式将HTTP请求映射到对应的方法上,自动进行了服务的发现和负载均衡。 Feign支持多种请求方式,包括GET、POST、PUT、DELETE等,还可以使用@PathVariable、@RequestParam等注解处理路径参数和查询参数。Feign还支持对请求体进行处理,可以将请求体转换成Java对象,方便业务逻辑的处理。 在使用Feign时,不需要手动编写HTTP请求的代码,只需要定义一个接口并使用Feign的注解进行标记即可。Feign会根据注解生成代理对象来完成请求的发送和接收。这样可以大大简化开发的工作量,并且使得代码更加清晰易读。 Spring Cloud Starter OpenFeign还集成了Ribbon和Hystrix,这使得我们在使用Feign时可以实现负载均衡和熔断的功能。即使请求的目标服务发生宕机或故障,也能够保证系统的高可用性和稳定性。 总之,Spring Cloud Starter OpenFeign是一个非常实用和方便的工具,可以简化微服务架构下的服务调用,并提供了负载均衡和熔断等功能。它的使用可以加快开发速度,提高系统的可靠性和稳定性。 ### 回答3: spring-cloud-starter-openfeign是一个开源的Spring Cloud组件,用于简化在微服务架构中进行远程服务调用的过程。它基于Netflix的Feign库进行开发,提供了一种声明式的、基于接口的远程服务调用方式,可以方便地实现服务之间的通信和数据交互。 ork.cloud:spring-cloud-starter-openfeign:jar是spring-cloud-starter-openfeign组件的一个特定版本的jar包。在使用Spring Boot构建的项目中,可以通过引入这个jar包来集成并使用spring-cloud-starter-openfeign组件,从而简化远程服务调用的代码编写和配置。 使用spring-cloud-starter-openfeign,我们只需要定义一个接口,通过注解的方式声明远程服务的地址和调用方法,然后在需要调用远程服务的地方直接调用这个接口的方法即可。Spring Cloud会根据注解信息自动进行服务发现和负载均衡,将我们的调用请求转发到对应的服务实例上。 该jar包中除了包含spring-cloud-starter-openfeign的核心功能外,还可能包含一些额外的依赖库或工具,以及特定版本的相关代码和配置文件。通过引入这个jar包,我们可以一键集成和启用spring-cloud-starter-openfeign组件,省去了手动添加依赖和配置的步骤,能够更快速地搭建起微服务架构中的服务调用机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值