当前位置:   article > 正文

微服务学习之服务注册与发现(OpenFeign服务间调用)_openfiegn注册服务名

openfiegn注册服务名

微服务系列

1、Nacus 服务搭建及使用
2、Nacos 配置中心
3、Nacos 服务注册与发现之OpenFeign服务间调用
4、Spring Security & Oauth2 认证授权
5、网关(Gateway / Sentinel)路由及熔断限流
6、网关(Gateway自定义断言和过滤器)



前言

在 《Nacos服务搭建及使用》中,对Nacos的服务搭建与调用基本操作做了简单的介绍,服务调用也是用RestTemplate实现服务间的调用,这篇讲的是另一种调用方法,OpenFeign 的服务间调用的基本方式。

一、OpenFeign简介

在说 OpenFeign 介绍之前,必须先提一嘴 Feign,什么是 Feign?Feign 是Netflix 开发的声明式、模板化的 HTTP 客户端,可以帮助我们更便捷的调用 HTTP api,具有可插入的注解支持,使用起来方便。

OpenFeign 则是 Spring Cloud 下的一个组件,对 Feign 进行了增强,使其支持 Spring MVC注解,还整合了 Ribbon & Eureka 和 断路器,以在使用 Feign 时提供了负载均衡的 HTTP 客户端。

二、使用OpenFeign调用服务

OpenFeign 的使用特别简单,但是 OpenFeign 的功能非常强大,只需要映入 OpenFeign 的依赖,然后进行配置,通过 Spring Boot 的自动装配就可以在应用中起到作用了。

2.1 映入依赖

加入 OpenFeign 依赖,版本用父pom统一管理。

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
  • 1
  • 2
  • 3
  • 4

2.2 配置 OpenFeign

启用 OpenFeign,是 OpenFeign 在项目中可用,启动方式只需要在启动类上加上注解 @EnableFeignClients 即可。
这样就可以在项目总使用 OpenFeign调用其他服务API 了。

@SpringBootApplication
@EnableFeignClients
public class HomeApplication {

    public static void main(String[] args) {
        SpringApplication.run(HomeApplication.class, args);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2.2.1、Logger.Level 的配置

Logger.Level 总共有 4 个级别,分别是:
1、NONE:性能最佳,适用于生产
2、BASIC:使用与生产环境追踪问题
3、HEADERS:BASIC 之上,仅仅记录 请求头 响应头
4、FULL:适合开发测试,打印 请求 相应 body 信息
配置方式可在配置类中配置,也可在配置文件中配置,也可以支持局部配置,见 下面 调用服务 配置。

配置文件配置如下:

@Bean
public Logger.Level feignLoggerLevel(){
    return Logger.Level.FULL;
}
  • 1
  • 2
  • 3
  • 4

配置文件配置如下:

支持局部配置,针对某一个服务配置,home-server 是服务名称。

feign:
  client:
    config:
      home-server:
        loggerLevel: BASIC
  • 1
  • 2
  • 3
  • 4
  • 5

2.2.2、契约配置

Spring Cloud 在 原生的 Feign 上面做了扩展,可以让 Feign 支持 Spring MVC 注解来调用,原生的 Feign 不支持 Spring MVC 注解,如果想用原生的 Feign 配置,可以通过配置契约来改变。
原生的 Feign 只支持 @RequestLine(“GET /list”) 的方式。

配置类方式如下:

@Bean
public Contract feignContract(){
    return new Contract.Default();
}
  • 1
  • 2
  • 3
  • 4

配置文件配置如下:

feign:
  client:
    config:
      contract: feign.Contract.Default
  • 1
  • 2
  • 3
  • 4

2.2.3、超时时间配置

配置 超时 时间为,连接 5 秒超时,读取数据 10 秒超时,并且超时跳转。

配置类配置:

@Bean
public Request.Options feignOptions(){
    return new Request.Options(5, TimeUnit.SECONDS, 10, TimeUnit.SECONDS, true);
}
  • 1
  • 2
  • 3
  • 4

配置文件配置:

feign:
  client:
    config:
      home-server:
        loggerLevel: BASIC
        contract: feign.Contract.Default
        connectTimeout: 5000
        readTimeout: 10000
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2.2.4、拦截器配置

配置一个基本权限过滤器,调用的时候需要带上 username,password 才可以访问成功,这里是BasicAuthRequestInterceptor 内置的 拦截器。
此拦截器作用是向请求头添加 Authorization 参数,值是由 username,password 生成的编码。

配置类配置:

@Bean
public BasicAuthRequestInterceptor basicAuthRequestInterceptor(){
    return new BasicAuthRequestInterceptor("yphen", "132456");
}
  • 1
  • 2
  • 3
  • 4

在被调用方打印请求头参数:
Basic Token

2.2.5 自定义拦截器配置

也可以自定义,只需要 实现 RequestInterceptor 接口然后配置即可。

public class FeignUserInfoRequestInterceptor implements RequestInterceptor {
    @Override
    public void apply(RequestTemplate template) {
        String access_token = UUID.randomUUID().toString();
        template.header("Authorization",access_token);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

配置文件配置:

feign:
  client:
    config:
      home-server:
        connectTimeout: 5000
        readTimeout: 10000
		requestInterceptors[0]: com.home.interceptors.FeignUserInfoRequestInterceptor
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2.3 调用服务

使用注解 @FeignClient 加上 Spring MVC 的注解 @RequestMapping 就可以方便的调用其他服务的 API 了。
configuration 针对此调用服务配置 OpenFeign 配置,局部配置。
实例中调用了 user-server 服务中的 /user/uMessage 接口。

@FeignClient(value = "user-server", path = "/user", configuration = OpenFeignConfig.class)
public interface MessageService {

    @RequestMapping(value = "uMessages", method = RequestMethod.GET)
    String list();

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/1005754
推荐阅读
相关标签
  

闽ICP备14008679号