前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >spring-cloud-eureka-open-feign

spring-cloud-eureka-open-feign

原创
作者头像
木易三水良
发布2022-03-25 14:26:20
2930
发布2022-03-25 14:26:20
举报
文章被收录于专栏:木易三水良

eureka-server服务(注册中心)

代码语言:html
复制
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
代码语言:yaml
复制
server:
  port: 8000
eureka:
  client:
    # 表示是否将自己注册到Eureka Server,默认为true。
    register-with-eureka: false
    # 表示是否从Eureka Server获取注册信息,默认为true。
    fetch-registry: false
    # 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。
    # 默认是http://localhost:8761/eureka ;多个地址可使用 , 分隔。
    serviceUrl:
      defaultZone: http://localhost:${server.port}/eureka/
代码语言:java
复制
@SpringBootApplication
@EnableEurekaServer
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

启动即可,注册中心即完成,如果是集群的话,则配置信息稍微有一些不一样。

注册中心节点可以配置多个,每一个的配置基本一致,只有部分却别,以伪集群为例:

代码语言:yaml
复制
spring.application.name=spring-cloud-eureka
server.port=8000
# 对应的本机服务器名称
eureka.instance.hostname=server-1
# 指向其他服务器地址,多个之间以 , 隔开
eureka.client.serviceUrl.defaultZone=http://server-2:8001/eureka/,http://server-3:8002/eureka/
代码语言:yaml
复制
spring.application.name=spring-cloud-eureka
server.port=8001
# 指向其他服务器地址,多个之间以 , 隔开
eureka.instance.hostname=server-2

eureka.client.serviceUrl.defaultZone=http://server-1:8000/eureka/,http://server-3:8002/eureka/
代码语言:yaml
复制
spring.application.name=spring-cloud-eureka
server.port=8002
# 指向其他服务器地址,多个之间以 , 隔开
eureka.instance.hostname=server-3

eureka.client.serviceUrl.defaultZone=http://server-1:8000/eureka/,http://server-2:8001/eureka/

危机群服务在同一个服务器,则需要修改host文件,添加一下内容:

代码语言:json
复制
127.0.0.1 server-1
127.0.0.1 server-2
127.0.0.1 server-3

OpenFeignClient

需要引入的依赖:

代码语言:text
复制
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<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>

配置信息:

代码语言:yaml
复制
eureka:
  client:
    serviceUrl:
    # 配置注册中心地址
      defaultZone: http://localhost:8000/eureka/

服务提供方提供相应的接口即可,在配置类上添加注解@EnableEurekaClient

而服务消费方。除了以上配置以外,则需要额外的配置。

调用remote interface的配置

代码语言:java
复制
// 此处的name与服务方配置的spring.application.name保持一致,
@FeignClient(name = "device-server")
public interface DeviceClient {

    // url 与你需要调用的服务方URL保持一致,包括请求方式
    @GetMapping("/test")
    void test(@RequestParam("ids") List<Long> ids);

    @GetMapping("/device/id")
    List<Long> getDeviceIds();

    @GetMapping("/device")
    List<OtaDeviceEntity> getDeviceByIds(@RequestParam("ids") List<Long> ids);
}

启动类:

代码语言:java
复制
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class ConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }
}

Fiegn还要包含很多功能,比如服务降级服务熔断服务限流等等,此处不做赘述。关于feign get请求时以List做为参数,参数过长导致请求失败问题

网上很多说配置参数server. max-http-header-size无效,但是我测试该参数配置之后有效,但是我没有测试具体值,我测试的最大参数长度为100000,但是这种方式肯定并非治本方法,此处做一个记录而已。

代码语言:yaml
复制
# 在服务端提供端配置该参数,
server:
# 单位b,此处的值是1MB,
  max-http-header-size: 1048576

OpenFeign的日志打印功能

OpenFeign的日志级别有:

NONE默认,不显示任何日志

BASIC: 仅记录请求方法、URL、响应状态码以及执行时间

HEADERS:除了BASIC 中自定义的信息外,还有请求和响应的信息头

FULL: 除了HEADERS中定义的信息外, 还有请求和响应的正文以及元数据。

注入以下bean:

代码语言:java
复制
@Bean
Logger.Level feignLoggerLevel() {
    return Logger.Level.FULL;
}

设置日志监控界别:

代码语言:yaml
复制
logging:
  level:
    #  feign日志以什么级别监控哪个接口(也就是哪一个feignClient,也可以直接指定整个目录)
    com.example.sc.feign.DeviceClient: debug
image.png
image.png

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • eureka-server服务(注册中心)
  • OpenFeignClient
  • OpenFeign的日志打印功能
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档