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
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值