首页 > 其他分享 >SpringCloud微服务学习笔记(二)【Feign,Gateway,Docker】

SpringCloud微服务学习笔记(二)【Feign,Gateway,Docker】

时间:2023-10-01 16:12:53浏览次数:40  
标签:Feign http 请求 自定义 SpringCloud feign Docker 级别 日志

Feign

先来看我们以前利用RestTemplate发起远程调用的代码:

存在下面的问题:

•代码可读性差,编程体验不统一

•参数复杂URL难以维护

Feign是一个声明式的http客户端,官方地址:https://github.com/OpenFeign/feign

其作用就是帮助我们优雅的实现http请求的发送,解决上面提到的问题。

基于feign远程调用

先在order-service引入依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

在 OrderApplication引入自动装配的开关@EnableFeignClients

然后在 order-service里新建一个接口并编写:

@FeignClient("userservice")
public interface UserClient {
    
    @GetMapping("/user/{id}")
    User findById(@PathVariable("id") Long id);
}

接着就可以在OrderService 里将原来的发送请求代码注释掉换成新的:

 // 2.利用RestTemplate发送http请求,查询用户
//        String url= "http://userservice/user/"+ order.getUserId();
//        User user = restTemplate.getForObject(url, User.class);
        User user =userClient.findById(order.getUserId());

7.2.自定义配置
Feign可以支持很多的自定义配置,如下表所示:     

类型   作用   说明
feign.Logger.Level 修改日志级别  包含四种不同的级别:NONE、BASIC、HEADERS、FULL
feign.codec.Decoder 响应结果的解析器 http远程调用的结果做解析,例如解析json字符串为java对象
feign.codec.Encoder  请求参数编码     将请求参数编码,便于通过http请求发送
feign. Contract 支持的注解格式  默认是SpringMVC的注解
feign. Retryer  失败重试机制 请求失败的重试机制,默认是没有,不过会使用Ribbon的重试

                         
一般情况下,默认值就能满足我们使用,如果要自定义时,只需要创建自定义的@Bean覆盖默认Bean即可。

下面以日志为例来演示如何自定义配置。

7.2.1.配置文件方式
基于配置文件修改feign的日志级别可以针对单个服务:

feign:  
  client:
    config: 
      userservice: # 针对某个微服务的配置
        loggerLevel: FULL #  日志级别 


也可以针对所有服务:

feign:  
  client:
    config: 
      default: # 这里用default就是全局配置,如果是写服务名称,则是针对某个微服务的配置
        loggerLevel: FULL #  日志级别 

 

而日志的级别分为四种:

NONE:不记录任何日志信息,这是默认值。

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

HEADERS:在BASIC的基础上,额外记录了请求和响应的头信息

FULL:记录所有请求和响应的明细,包括头信息、请求体、元数据。

7.2.2.Java代码方式
也可以基于Java代码来修改日志级别,先声明一个类,然后声明一个Logger.Level的对象:

public class DefaultFeignConfiguration  {
    @Bean
    public Logger.Level feignLogLevel(){
        return Logger.Level.BASIC; // 日志级别为BASIC
    }
}


如果要全局生效,将其放到启动类的@EnableFeignClients这个注解中:

@EnableFeignClients(defaultConfiguration = DefaultFeignConfiguration .class) 


如果是局部生效,则把它放到接口对应的@FeignClient这个注解中:

@FeignClient(value = "userservice", configuration = DefaultFeignConfiguration .class) 

 

标签:Feign,http,请求,自定义,SpringCloud,feign,Docker,级别,日志
From: https://www.cnblogs.com/hepingan/p/17738930.html

相关文章

  • docker启动常见应用
    #MySQL限制0.5个CPU和0.5G内存dockerpullmysql:5.7dockerrun-itd--namemysql-p3306--cpu-period=1000000--cpu-quota=500000--memory512M--rm-eMYSQL_ROOT_PASSWORD=rootmysql:5.7#本地连接dockerexec-itmysqlmysql-hlocalhost-uroot-proot#远程......
  • docker compose和docker swarm 和 docker stack
    dockercompose:单机部署,使用dockercompose编排多个服务dockerswarm:多机部署,实现对单个服务的简单部署(通过dockerfile)dockerstack:实现集群环境下多服务编排。(通过compose.yml)狂神说docker(最全笔记)_狂神说docker笔记-CSDN博客          ......
  • 声明式调用 —— SpringCloud OpenFeign
    Feign简介SpringCloudFeign是一个HTTP请求调用的轻量级框架,可以以Java接口注解的方式调用HTTP请求,而不用通过封装HTTP请求报文的方式直接调用Feign通过处理注解,将请求模板化,当实际调用的时候传入参数,根据参数再应用到请求上,进而转化成真正的请求第一个Feign程......
  • Go每日一库之138:dive(Docker 镜像分析)
    什么是dive?用于探索Docker镜像、每一层中的内容以及发现缩小Docker/OCI镜像大小的方法的工具。安装divego get github.com/wagoodman/divedive特性按层分解Docker镜像可视化展示每一层变化分析镜像空间使用百分比快速构建分析镜像支持多种镜像源和容器引擎......
  • SpringCloud
    目录Springcloud介绍注册中心(Eureka)背景注册中心案例总结负载均衡(Ribbon)测试使用负载均衡RibbonRibbon负载均衡流程Ribbon的IRule常见负载均衡策略Ribbon的使用方法远程调用(OpenFeign)Feign使用连接池注册中心(Nacos)测试配置集群命名空间Nacos非临时实例配置中心(Nacos)客......
  • 内网离线安装docker并配置使用nexus为docker私服
    背景本文简单记录下最近在内网服务器离线安装docker及配置nexus作为docker私服,踩的一些坑。docker和k8s这块技术我跟得不是很紧,18年的时候用过一阵docker,后来发现它并不能解决当时我们遇到的问题,后来就没用了,再一个就是,在宿主机上啥命令都有,也太爽了,反观docker里面啥命令都没有,痛......
  • 修改docker默认存储路径
    docker默认使用/var/lib/docker作为存储目录。mkdir/root/dockercat>>/etc/docker/daemon.json<<EOF{"data-root":"/root/docker"}EOFsystemctlrestartdocker......
  • 简化任务调度与管理:详解XXL-Job及Docker Compose安装
    在现代应用程序开发中,任务调度和管理是至关重要的一部分。XXL-Job是一个强大的分布式任务调度平台,它使得任务的调度和管理变得更加轻松和高效。本文将介绍XXL-Job的基本概念,并详细演示如何使用DockerCompose进行快速安装和配置。什么是XXL-Job?github地址:https://github.com/xuxue......
  • docker build过慢问题
    有一个前端项目,在我删除了node_modules之后,构建非常慢,半个小时都没执行完一直以为是jenkins问题,重启了也没用,一直卡在dockerbuild步骤,后来干脆就挂着执行,执行完查看日志后来看到 SendingbuildcontexttoDockerdaemon932MB好家伙,一个前端项目项目最多20M,怎么会这么大,查......
  • 15 | Docker安全:在虚拟的环境中,就不用考虑安全了吗?
    Docker服务:Docker所提供的功能以及在宿主机Linux中的Docker进程Docker镜像:通过Dockerfile构建出来的Docker镜像Docker容器:实际运行的Docker容器,通常来说,一个Docker镜像会生成多个Docker容器。Docker容器运行与Docker服务至上Docker服务安全Docker服务本身需要关注的安全性就......