spring cloud使用 openfegin 实现服务调用


1.fegin 是什么

Feign是一个声明式WebService客户端。 使用Feign能让编写Web Service客户端更加简单。

2.fegin 能干什么

1.可以很容易实现 http java 客户端
2.它自身集成了ribbon,更优雅的实现服务的调用和负载均衡。

3.fegin 的原理

Feign远程调用,核心就是通过一系列的封装和处理,将以JAVA注解的方式定义的远程调用API接口,最终转换成HTTP的请求形式,然后将HTTP的请求的响应结果,解码成JAVA Bean,放回给调用者。Feign远程调用的基本流程,大致如下图所示。
在这里插入图片描述

在这里插入图片描述

图1 Feign远程调用的基本流程
从上图可以看到,Feign通过处理注解,将请求模板化,当实际调用的时候,传入参数,根据参数再应用到请求上,进而转化成真正的 Request 请求。通过Feign以及JAVA的动态代理机制,使得Java 开发人员,可以不用通过HTTP框架去封装HTTP请求报文的方式,完成远程服务的HTTP调用。

4.fegin 与openFegin两者的区别

在这里插入图片描述

5.openfegin 的使用

5.1.编写 pom.xml 文件,加入openFegin的依赖
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
5.2.编写启动类
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class ConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }
}

通过标签 @EnableFeignClients 可以开启openfegin的功能

5.3.编写openfegin的客户端
@Component
@FeignClient(name = "cloud-producer")
public interface ProducerFeign {
    @GetMapping()
    String ok();
}

说明
在上面的代码里面我们写入一个 @FeignClient 注解,这个注解最主要的作用就是创建一个openFegin的客户端,它里面的参数说明如下:
name:指定FeignClient的名称,如果项目使用了Ribbon,name属性会作为微服务的名称,用于服务发现。
url: url一般用于调试,可以手动指定@FeignClient调用的地址。
decode404:当发生http 404错误时,如果该字段位true,会调用decoder进行解码,否则抛出FeignException
configuration: Feign配置类,可以自定义Feign的Encoder、Decoder、LogLevel、Contract
fallback: 定义容错的处理类,当调用远程接口失败或超时时,会调用对应接口的容错逻辑,fallback指定的类必须实现@FeignClient标记的接口,而且还要配合hystrix 一起使
fallbackFactory: 工厂类,用于生成fallback类示例,通过这个属性我们可以实现每个接口通用的容错逻辑,减少重复的代码。
path: 定义当前FeignClient的统一前缀,如果你调用的服务有多个控制器,而你只想调用某一个控制器的接口,可以配合name一起使用。

5.4 编写控制器
@RestController
@RequestMapping
public class IndexController {
    @Autowired
    private ProducerFeign producerFeign;

    @GetMapping()
    public String index() {
        return producerFeign.ok();
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenFeign是一个HTTP客户端库,用于简化向RESTful服务发送请求的过程。它提供了一组注释和工具,可以帮助我们定义和发送请求,并自动进行编码和解码。在微服务架构中,我们通常需要调用其他微服务提供的RESTful API,使用OpenFeign可以方便地实现远程调用使用OpenFeign进行远程调用的步骤如下: 1. 添加OpenFeign依赖:在Maven或Gradle中添加OpenFeign的依赖。 2. 创建接口:定义需要调用的远程服务的接口,使用注解@FeignClient指定服务名和URL。 3. 调用接口:在代码中直接调用定义的接口方法,OpenFeign会根据注解自动发起HTTP请求,并将响应转换成Java对象返回。 具体实现可以参考以下示例: 1. 添加依赖 Maven: ``` <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> ``` Gradle: ``` implementation 'org.springframework.cloud:spring-cloud-starter-openfeign' ``` 2. 创建接口 ``` @FeignClient(name = "remote-service", url = "${remote-service.url}") public interface RemoteServiceClient { @GetMapping("/api/data") String getData(); } ``` 其中,@FeignClient注解用于指定服务名和URL,getData()方法定义了需要调用的远程API。 3. 调用接口 ``` @RestController public class MyController { @Autowired private RemoteServiceClient remoteServiceClient; @GetMapping("/my-data") public String getMyData() { return remoteServiceClient.getData(); } } ``` 在上面的代码中,我们通过@Autowired注解注入了RemoteServiceClient接口,并在getMyData()方法中直接调用了getData()方法。 OpenFeign还支持一些高级特性,例如负载均衡、熔断器等。可以根据实际需求选择相应的配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值