OpenFeign和feign使用简介

1.OpenFeign简介

Feign是一个声明式的Web Service客户端。它的出现使开发Web Service客户端变得很简单。使用Feign只需要创建一个接口加上对应的注解,比如:FeignClient注解。Feign有可插拔的注解,包括Feign注解和JAX-RS注解。
Feign也支持编码器和解码器,Spring Cloud Open Feign对Feign进行增强支持Spring MVC注解,可以像Spring Web一样使用HttpMessageConverters等。
Feign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用Feign,可以做到使用HTTP请求访问远程服务,就像调用本地方法一样的,开发者完全感知不到这是在调用远程方法,更感知不到在访问HTTP请求。

2.OpenFeign的功能

1.可插拔的注解支持,包括Feign注解和JAX-RS注解。
2.支持可插拔的HTTP编码器和解码器(Gson,Jackson,Sax,JAXB,JAX-RS,SOAP)。
3.支持Hystrix和它的Fallback。
4.支持Ribbon的负载均衡。
5.支持HTTP请求和响应的压缩。
6.灵活的配置:基于 name 粒度进行配置
7.支持多种客户端:JDK URLConnection、apache httpclient、okhttp,ribbon)
8.支持日志
9.支持错误重试
10.url支持占位符
11.可以不依赖注册中心独立运行

3.POM.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.zhangsan</groupId>
    <artifactId>member-service-openfeign</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>member-service-openfeign</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Hoxton.SR4</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

4.application.yml文件配置

spring:
  application:
    name: member-service-openfeign

eureka:
  client:
    service-url:
      defaultZone:
        http://localhost:8761/eureka/

server:
  port: 7777
logging:
  level:
    ROOT: INFO
    #针对指定的类 设置输出级别
    com.zhangsan.memberserviceopenfeign.client.*: debug
feign:
  client:
    config:
      default:
        loggerLevel: FULL
        #针对某个级别设置输出级别(设置局部的优先级别是最高的)
      Book-service:
        loggerLevel: FULL

5.Java代码块编写

BookService接口编写

package com.zhangsan.memberserviceopenfeign.client;

import com.zhangsan.memberserviceopenfeign.entity.Book;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * @ClassName BookService
 * @Description TODO
 * @Author ZhangSan_Plus
 * @Date 2020/5/18 16:41
 * @Version 1.0
 **/
 //此处编写需要通信的微服务名称
@FeignClient(name = "Book-service")
//http://Book-service/find?sn=xx
//客户端接口 完成接口和微服务的对应
public interface BookService {
	//当前GetMapping是获取另一个微服务的具体控制器
    @GetMapping("/find")
    Book findBySn(@RequestParam("sn") String sn);
}

MemberServiceController控制器编写

package com.zhangsan.memberserviceopenfeign.controller;

import com.zhangsan.memberserviceopenfeign.client.BookService;
import com.zhangsan.memberserviceopenfeign.entity.Book;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;

/**
 * @ClassName MemberController
 * @Description TODO
 * @Author ZhangSan_Plus
 * @Date 2020/5/18 16:51
 * @Version 1.0
 **/
@Controller
public class MemberController {
	//把bookService注入到容器中去
    @Resource
    BookService bookService;
    @GetMapping("/getBook")
    @ResponseBody
    public String getBook(String sn){
        Book bySn = bookService.findBySn(sn);
        return bySn.getBookName()+bySn.getDesc()+bySn.getSn()+"图书借阅成功";
    }
}

MemberServiceOpenfeignApplication启动类编写

package com.zhangsan.memberserviceopenfeign;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;


@SpringBootApplication
@EnableEurekaClient
//一定不要忘记添加这个注解
@EnableFeignClients
public class MemberServiceOpenfeignApplication {

    public static void main(String[] args) {
        SpringApplication.run(MemberServiceOpenfeignApplication.class, args);
    }

}

效果图
在这里插入图片描述

6.OpenFeign工作原理

在这里插入图片描述

7.OpenFeign通信日志

· 基于SpringBoot的logback输出,默认debug级别
· 设置项:feign.client.config.微服务id.loggerLevel
· 微服务id:default代表全局默认配置

通信日志输出格式:

1. NONE:不输出任何通信日志
2. BASIC:只包含URL,请求方法,状态码,执行时间
3. HEADERS:在BASIC基础上额外包含请求和响应头
4. FULL:包含请求与相应内容最完整的信息
注意:针对某个微服务设置了通信日志输出级别(那么该输出级别就为最高级别也是最终级别)
在日常开发中可以使用FULL 一般推荐使用BASIC/HEADERS

application.yml配置OpenFegin通信日志

spring:
  application:
    name: member-service-openfeign

eureka:
  client:
    service-url:
      defaultZone:
        http://localhost:8761/eureka/

server:
  port: 7777
logging:
  level:
    ROOT: INFO
    #针对指定的类 设置输出级别
    com.zhangsan.memberserviceopenfeign.client.*: debug
feign:
  client:
    config:
      default:
        loggerLevel: FULL
        #针对某个级别设置输出级别(设置局部的优先级别是最高的)
      Book-service:
        loggerLevel: FULL

控制台输出

"C:\Program Files\Java\jdk1.8.0_51\bin\java.exe" -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-javaagent:D:\IDEA\IntelliJ IDEA 2018.3.5\lib\idea_rt.jar=53064:D:\IDEA\IntelliJ IDEA 2018.3.5\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_51\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\rt.jar;E:\IDEA_DESTBOK\member-service-openfeign\target\classes;C:\Users\One\.m2\repository\org\springframework\boot\spring-boot-starter-web\2.3.0.RELEASE\spring-boot-starter-web-2.3.0.RELEASE.jar;C:\Users\One\.m2\repository\org\springframework\boot\spring-boot-starter\2.3.0.RELEASE\spring-boot-starter-2.3.0.RELEASE.jar;C:\Users\One\.m2\repository\org\springframework\boot\spring-boot\2.3.0.RELEASE\spring-boot-2.3.0.RELEASE.jar;C:\Users\One\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\2.3.0.RELEASE\spring-boot-autoconfigure-2.3.0.RELEASE.jar;C:\Users\One\.m2\repository\org\springframework\boot\spring-boot-starter-logging\2.3.0.RELEASE\spring-boot-starter-logging-2.3.0.RELEASE.jar;C:\Users\One\.m2\repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;C:\Users\One\.m2\repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;C:\Users\One\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.13.2\log4j-to-slf4j-2.13.2.jar;C:\Users\One\.m2\repository\org\apache\logging\log4j\log4j-api\2.13.2\log4j-api-2.13.2.jar;C:\Users\One\.m2\repository\org\slf4j\jul-to-slf4j\1.7.30\jul-to-slf4j-1.7.30.jar;C:\Users\One\.m2\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;C:\Users\One\.m2\repository\org\yaml\snakeyaml\1.26\snakeyaml-1.26.jar;C:\Users\One\.m2\repository\org\springframework\boot\spring-boot-starter-json\2.3.0.RELEASE\spring-boot-starter-json-2.3.0.RELEASE.jar;C:\Users\One\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.11.0\jackson-databind-2.11.0.jar;C:\Users\One\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.11.0\jackson-datatype-jdk8-2.11.0.jar;C:\Users\One\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.11.0\jackson-datatype-jsr310-2.11.0.jar;C:\Users\One\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.11.0\jackson-module-parameter-names-2.11.0.jar;C:\Users\One\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\2.3.0.RELEASE\spring-boot-starter-tomcat-2.3.0.RELEASE.jar;C:\Users\One\.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.35\tomcat-embed-core-9.0.35.jar;C:\Users\One\.m2\repository\org\glassfish\jakarta.el\3.0.3\jakarta.el-3.0.3.jar;C:\Users\One\.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.35\tomcat-embed-websocket-9.0.35.jar;C:\Users\One\.m2\repository\org\springframework\spring-web\5.2.6.RELEASE\spring-web-5.2.6.RELEASE.jar;C:\Users\One\.m2\repository\org\springframework\spring-beans\5.2.6.RELEASE\spring-beans-5.2.6.RELEASE.jar;C:\Users\One\.m2\repository\org\springframework\spring-webmvc\5.2.6.RELEASE\spring-webmvc-5.2.6.RELEASE.jar;C:\Users\One\.m2\repository\org\springframework\spring-aop\5.2.6.RELEASE\spring-aop-5.2.6.RELEASE.jar;C:\Users\One\.m2\repository\org\springframework\spring-context\5.2.6.RELEASE\spring-context-5.2.6.RELEASE.jar;C:\Users\One\.m2\repository\org\springframework\spring-expression\5.2.6.RELEASE\spring-expression-5.2.6.RELEASE.jar;C:\Users\One\.m2\repository\org\springframework\cloud\spring-cloud-starter-netflix-eureka-client\2.2.2.RELEASE\spring-cloud-starter-netflix-eureka-client-2.2.2.RELEASE.jar;C:\Users\One\.m2\repository\org\springframework\cloud\spring-cloud-starter\2.2.2.RELEASE\spring-cloud-starter-2.2.2.RELEASE.jar;C:\Users\One\.m2\repository\org\springframework\cloud\spring-cloud-context\2.2.2.RELEASE\spring-cloud-context-2.2.2.RELEASE.jar;C:\Users\One\.m2\repository\org\springframework\security\spring-security-rsa\1.0.9.RELEASE\spring-security-rsa-1.0.9.RELEASE.jar;C:\Users\One\.m2\repository\org\bouncycastle\bcpkix-jdk15on\1.64\bcpkix-jdk15on-1.64.jar;C:\Users\One\.m2\repository\org\bouncycastle\bcprov-jdk15on\1.64\bcprov-jdk15on-1.64.jar;C:\Users\One\.m2\repository\org\springframework\cloud\spring-cloud-netflix-hystrix\2.2.2.RELEASE\spring-cloud-netflix-hystrix-2.2.2.RELEASE.jar;C:\Users\One\.m2\repository\org\springframework\boot\spring-boot-starter-aop\2.3.0.RELEASE\spring-boot-starter-aop-2.3.0.RELEASE.jar;C:\Users\One\.m2\repository\org\aspectj\aspectjweaver\1.9.5\aspectjweaver-1.9.5.jar;C:\Users\One\.m2\repository\org\springframework\cloud\spring-cloud-netflix-eureka-client\2.2.2.RELEASE\spring-cloud-netflix-eureka-client-2.2.2.RELEASE.jar;C:\Users\One\.m2\repository\com\netflix\eureka\eureka-client\1.9.17\eureka-client-1.9.17.jar;C:\Users\One\.m2\repository\org\codehaus\jettison\jettison\1.3.7\jettison-1.3.7.jar;C:\Users\One\.m2\repository\stax\stax-api\1.0.1\stax-api-1.0.1.jar;C:\Users\One\.m2\repository\com\netflix\netflix-commons\netflix-eventbus\0.3.0\netflix-eventbus-0.3.0.jar;C:\Users\One\.m2\repository\com\netflix\netflix-commons\netflix-infix\0.3.0\netflix-infix-0.3.0.jar;C:\Users\One\.m2\repository\commons-jxpath\commons-jxpath\1.3\commons-jxpath-1.3.jar;C:\Users\One\.m2\repository\joda-time\joda-time\2.3\joda-time-2.3.jar;C:\Users\One\.m2\repository\org\antlr\antlr-runtime\3.4\antlr-runtime-3.4.jar;C:\Users\One\.m2\repository\org\antlr\stringtemplate\3.2.1\stringtemplate-3.2.1.jar;C:\Users\One\.m2\repository\antlr\antlr\2.7.7\antlr-2.7.7.jar;C:\Users\One\.m2\repository\com\google\code\gson\gson\2.8.6\gson-2.8.6.jar;C:\Users\One\.m2\repository\org\apache\commons\commons-math\2.2\commons-math-2.2.jar;C:\Users\One\.m2\repository\com\netflix\archaius\archaius-core\0.7.6\archaius-core-0.7.6.jar;C:\Users\One\.m2\repository\com\google\guava\guava\28.2-android\guava-28.2-android.jar;C:\Users\One\.m2\repository\com\google\guava\failureaccess\1.0.1\failureaccess-1.0.1.jar;C:\Users\One\.m2\repository\com\google\guava\listenablefuture\9999.0-empty-to-avoid-conflict-with-guava\listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar;C:\Users\One\.m2\repository\org\checkerframework\checker-compat-qual\2.5.5\checker-compat-qual-2.5.5.jar;C:\Users\One\.m2\repository\com\google\errorprone\error_prone_annotations\2.3.4\error_prone_annotations-2.3.4.jar;C:\Users\One\.m2\repository\com\google\j2objc\j2objc-annotations\1.3\j2objc-annotations-1.3.jar;C:\Users\One\.m2\repository\javax\ws\rs\jsr311-api\1.1.1\jsr311-api-1.1.1.jar;C:\Users\One\.m2\repository\com\netflix\servo\servo-core\0.12.21\servo-core-0.12.21.jar;C:\Users\One\.m2\repository\com\sun\jersey\jersey-core\1.19.1\jersey-core-1.19.1.jar;C:\Users\One\.m2\repository\com\sun\jersey\jersey-client\1.19.1\jersey-client-1.19.1.jar;C:\Users\One\.m2\repository\com\sun\jersey\contribs\jersey-apache-client4\1.19.1\jersey-apache-client4-1.19.1.jar;C:\Users\One\.m2\repository\org\apache\httpcomponents\httpclient\4.5.12\httpclient-4.5.12.jar;C:\Users\One\.m2\repository\org\apache\httpcomponents\httpcore\4.4.13\httpcore-4.4.13.jar;C:\Users\One\.m2\repository\commons-codec\commons-codec\1.14\commons-codec-1.14.jar;C:\Users\One\.m2\repository\com\google\inject\guice\4.1.0\guice-4.1.0.jar;C:\Users\One\.m2\repository\javax\inject\javax.inject\1\javax.inject-1.jar;C:\Users\One\.m2\repository\aopalliance\aopalliance\1.0\aopalliance-1.0.jar;C:\Users\One\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.11.0\jackson-annotations-2.11.0.jar;C:\Users\One\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.11.0\jackson-core-2.11.0.jar;C:\Users\One\.m2\repository\com\netflix\eureka\eureka-core\1.9.17\eureka-core-1.9.17.jar;C:\Users\One\.m2\repository\com\fasterxml\woodstox\woodstox-core\5.2.1\woodstox-core-5.2.1.jar;C:\Users\One\.m2\repository\org\codehaus\woodstox\stax2-api\4.2\stax2-api-4.2.jar;C:\Users\One\.m2\repository\org\springframework\cloud\spring-cloud-starter-netflix-archaius\2.2.2.RELEASE\spring-cloud-starter-netflix-archaius-2.2.2.RELEASE.jar;C:\Users\One\.m2\repository\org\springframework\cloud\spring-cloud-netflix-ribbon\2.2.2.RELEASE\spring-cloud-netflix-ribbon-2.2.2.RELEASE.jar;C:\Users\One\.m2\repository\org\springframework\cloud\spring-cloud-netflix-archaius\2.2.2.RELEASE\spring-cloud-netflix-archaius-2.2.2.RELEASE.jar;C:\Users\One\.m2\repository\commons-configuration\commons-configuration\1.8\commons-configuration-1.8.jar;C:\Users\One\.m2\repository\commons-lang\commons-lang\2.6\commons-lang-2.6.jar;C:\Users\One\.m2\repository\org\springframework\cloud\spring-cloud-starter-netflix-ribbon\2.2.2.RELEASE\spring-cloud-starter-netflix-ribbon-2.2.2.RELEASE.jar;C:\Users\One\.m2\repository\com\netflix\ribbon\ribbon\2.3.0\ribbon-2.3.0.jar;C:\Users\One\.m2\repository\com\netflix\ribbon\ribbon-transport\2.3.0\ribbon-transport-2.3.0.jar;C:\Users\One\.m2\repository\io\reactivex\rxnetty-contexts\0.4.9\rxnetty-contexts-0.4.9.jar;C:\Users\One\.m2\repository\io\reactivex\rxnetty-servo\0.4.9\rxnetty-servo-0.4.9.jar;C:\Users\One\.m2\repository\io\reactivex\rxnetty\0.4.9\rxnetty-0.4.9.jar;C:\Users\One\.m2\repository\com\netflix\ribbon\ribbon-core\2.3.0\ribbon-core-2.3.0.jar;C:\Users\One\.m2\repository\com\netflix\ribbon\ribbon-httpclient\2.3.0\ribbon-httpclient-2.3.0.jar;C:\Users\One\.m2\repository\commons-collections\commons-collections\3.2.2\commons-collections-3.2.2.jar;C:\Users\One\.m2\repository\com\netflix\netflix-commons\netflix-commons-util\0.3.0\netflix-commons-util-0.3.0.jar;C:\Users\One\.m2\repository\com\netflix\ribbon\ribbon-loadbalancer\2.3.0\ribbon-loadbalancer-2.3.0.jar;C:\Users\One\.m2\repository\com\netflix\netflix-commons\netflix-statistics\0.1.1\netflix-statistics-0.1.1.jar;C:\Users\One\.m2\repository\io\reactivex\rxjava\1.3.8\rxjava-1.3.8.jar;C:\Users\One\.m2\repository\org\springframework\cloud\spring-cloud-starter-loadbalancer\2.2.2.RELEASE\spring-cloud-starter-loadbalancer-2.2.2.RELEASE.jar;C:\Users\One\.m2\repository\org\springframework\cloud\spring-cloud-loadbalancer\2.2.2.RELEASE\spring-cloud-loadbalancer-2.2.2.RELEASE.jar;C:\Users\One\.m2\repository\io\projectreactor\reactor-core\3.3.5.RELEASE\reactor-core-3.3.5.RELEASE.jar;C:\Users\One\.m2\repository\org\reactivestreams\reactive-streams\1.0.3\reactive-streams-1.0.3.jar;C:\Users\One\.m2\repository\io\projectreactor\addons\reactor-extra\3.3.3.RELEASE\reactor-extra-3.3.3.RELEASE.jar;C:\Users\One\.m2\repository\org\springframework\boot\spring-boot-starter-cache\2.3.0.RELEASE\spring-boot-starter-cache-2.3.0.RELEASE.jar;C:\Users\One\.m2\repository\org\springframework\spring-context-support\5.2.6.RELEASE\spring-context-support-5.2.6.RELEASE.jar;C:\Users\One\.m2\repository\com\stoyanr\evictor\1.0.0\evictor-1.0.0.jar;C:\Users\One\.m2\repository\com\netflix\ribbon\ribbon-eureka\2.3.0\ribbon-eureka-2.3.0.jar;C:\Users\One\.m2\repository\org\slf4j\slf4j-api\1.7.30\slf4j-api-1.7.30.jar;C:\Users\One\.m2\repository\com\thoughtworks\xstream\xstream\1.4.11.1\xstream-1.4.11.1.jar;C:\Users\One\.m2\repository\xmlpull\xmlpull\1.1.3.1\xmlpull-1.1.3.1.jar;C:\Users\One\.m2\repository\xpp3\xpp3_min\1.1.4c\xpp3_min-1.1.4c.jar;C:\Users\One\.m2\repository\org\springframework\cloud\spring-cloud-starter-openfeign\2.2.2.RELEASE\spring-cloud-starter-openfeign-2.2.2.RELEASE.jar;C:\Users\One\.m2\repository\org\springframework\cloud\spring-cloud-openfeign-core\2.2.2.RELEASE\spring-cloud-openfeign-core-2.2.2.RELEASE.jar;C:\Users\One\.m2\repository\io\github\openfeign\form\feign-form-spring\3.8.0\feign-form-spring-3.8.0.jar;C:\Users\One\.m2\repository\io\github\openfeign\form\feign-form\3.8.0\feign-form-3.8.0.jar;C:\Users\One\.m2\repository\commons-fileupload\commons-fileupload\1.4\commons-fileupload-1.4.jar;C:\Users\One\.m2\repository\commons-io\commons-io\2.2\commons-io-2.2.jar;C:\Users\One\.m2\repository\org\springframework\cloud\spring-cloud-commons\2.2.2.RELEASE\spring-cloud-commons-2.2.2.RELEASE.jar;C:\Users\One\.m2\repository\org\springframework\security\spring-security-crypto\5.3.2.RELEASE\spring-security-crypto-5.3.2.RELEASE.jar;C:\Users\One\.m2\repository\io\github\openfeign\feign-core\10.7.4\feign-core-10.7.4.jar;C:\Users\One\.m2\repository\io\github\openfeign\feign-slf4j\10.7.4\feign-slf4j-10.7.4.jar;C:\Users\One\.m2\repository\io\github\openfeign\feign-hystrix\10.7.4\feign-hystrix-10.7.4.jar;C:\Users\One\.m2\repository\com\netflix\hystrix\hystrix-core\1.5.18\hystrix-core-1.5.18.jar;C:\Users\One\.m2\repository\org\hdrhistogram\HdrHistogram\2.1.9\HdrHistogram-2.1.9.jar;C:\Users\One\.m2\repository\org\springframework\spring-core\5.2.6.RELEASE\spring-core-5.2.6.RELEASE.jar;C:\Users\One\.m2\repository\org\springframework\spring-jcl\5.2.6.RELEASE\spring-jcl-5.2.6.RELEASE.jar" com.zhangsan.memberserviceopenfeign.MemberServiceOpenfeignApplication

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.3.0.RELEASE)

2020-05-19 09:44:54.746  INFO 9612 --- [           main] c.z.m.MemberServiceOpenfeignApplication  : No active profile set, falling back to default profiles: default
2020-05-19 09:44:55.571  INFO 9612 --- [           main] o.s.cloud.context.scope.GenericScope     : BeanFactory id=93882a3d-cfb8-30b8-9985-5b57a8290773
2020-05-19 09:44:55.671  INFO 9612 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'com.zhangsan.memberserviceopenfeign.client.BookService' of type [org.springframework.cloud.openfeign.FeignClientFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2020-05-19 09:44:55.905  INFO 9612 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 7777 (http)
2020-05-19 09:44:55.914  INFO 9612 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2020-05-19 09:44:55.914  INFO 9612 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.35]
2020-05-19 09:44:56.089  INFO 9612 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2020-05-19 09:44:56.090  INFO 9612 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1322 ms
2020-05-19 09:44:56.343  WARN 9612 --- [           main] c.n.c.sources.URLConfigurationSource     : No URLs will be polled as dynamic configuration sources.
2020-05-19 09:44:56.343  INFO 9612 --- [           main] c.n.c.sources.URLConfigurationSource     : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
2020-05-19 09:44:56.347  WARN 9612 --- [           main] c.n.c.sources.URLConfigurationSource     : No URLs will be polled as dynamic configuration sources.
2020-05-19 09:44:56.347  INFO 9612 --- [           main] c.n.c.sources.URLConfigurationSource     : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
2020-05-19 09:44:56.460  INFO 9612 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2020-05-19 09:44:59.920  WARN 9612 --- [           main] ockingLoadBalancerClientRibbonWarnLogger : You already have RibbonLoadBalancerClient on your classpath. It will be used by default. As Spring Cloud Ribbon is in maintenance mode. We recommend switching to BlockingLoadBalancerClient instead. In order to use it, set the value of `spring.cloud.loadbalancer.ribbon.enabled` to `false` or remove spring-cloud-starter-netflix-ribbon from your project.
2020-05-19 09:44:59.988  INFO 9612 --- [           main] o.s.c.n.eureka.InstanceInfoFactory       : Setting initial instance status as: STARTING
2020-05-19 09:45:00.031  INFO 9612 --- [           main] com.netflix.discovery.DiscoveryClient    : Initializing Eureka in region us-east-1
2020-05-19 09:45:00.217  INFO 9612 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using JSON encoding codec LegacyJacksonJson
2020-05-19 09:45:00.217  INFO 9612 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using JSON decoding codec LegacyJacksonJson
2020-05-19 09:45:00.454  INFO 9612 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using XML encoding codec XStreamXml
2020-05-19 09:45:00.454  INFO 9612 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using XML decoding codec XStreamXml
2020-05-19 09:45:00.665  INFO 9612 --- [           main] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
2020-05-19 09:45:02.033  INFO 9612 --- [           main] com.netflix.discovery.DiscoveryClient    : Disable delta property : false
2020-05-19 09:45:02.033  INFO 9612 --- [           main] com.netflix.discovery.DiscoveryClient    : Single vip registry refresh property : null
2020-05-19 09:45:02.033  INFO 9612 --- [           main] com.netflix.discovery.DiscoveryClient    : Force full registry fetch : false
2020-05-19 09:45:02.033  INFO 9612 --- [           main] com.netflix.discovery.DiscoveryClient    : Application is null : false
2020-05-19 09:45:02.033  INFO 9612 --- [           main] com.netflix.discovery.DiscoveryClient    : Registered Applications size is zero : true
2020-05-19 09:45:02.034  INFO 9612 --- [           main] com.netflix.discovery.DiscoveryClient    : Application version is -1: true
2020-05-19 09:45:02.034  INFO 9612 --- [           main] com.netflix.discovery.DiscoveryClient    : Getting all instance registry info from the eureka server
2020-05-19 09:45:02.208  INFO 9612 --- [           main] com.netflix.discovery.DiscoveryClient    : The response status is 200
2020-05-19 09:45:02.212  INFO 9612 --- [           main] com.netflix.discovery.DiscoveryClient    : Starting heartbeat executor: renew interval is: 30
2020-05-19 09:45:02.215  INFO 9612 --- [           main] c.n.discovery.InstanceInfoReplicator     : InstanceInfoReplicator onDemand update allowed rate per min is 4
2020-05-19 09:45:02.220  INFO 9612 --- [           main] com.netflix.discovery.DiscoveryClient    : Discovery Client initialized at timestamp 1589852702219 with initial instances count: 4
2020-05-19 09:45:02.221  INFO 9612 --- [           main] o.s.c.n.e.s.EurekaServiceRegistry        : Registering application MEMBER-SERVICE-OPENFEIGN with eureka with status UP
2020-05-19 09:45:02.221  INFO 9612 --- [           main] com.netflix.discovery.DiscoveryClient    : Saw local status change event StatusChangeEvent [timestamp=1589852702221, current=UP, previous=STARTING]
2020-05-19 09:45:02.224  INFO 9612 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_MEMBER-SERVICE-OPENFEIGN/ZhangSan-Plus:member-service-openfeign:7777: registering service...
2020-05-19 09:45:02.263  INFO 9612 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 7777 (http) with context path ''
2020-05-19 09:45:02.266  INFO 9612 --- [           main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 7777
2020-05-19 09:45:02.275  INFO 9612 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_MEMBER-SERVICE-OPENFEIGN/ZhangSan-Plus:member-service-openfeign:7777 - registration status: 204
2020-05-19 09:45:04.087  INFO 9612 --- [           main] c.z.m.MemberServiceOpenfeignApplication  : Started MemberServiceOpenfeignApplication in 13.802 seconds (JVM running for 16.465)
2020-05-19 09:45:07.147  INFO 9612 --- [nio-7777-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2020-05-19 09:45:07.147  INFO 9612 --- [nio-7777-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2020-05-19 09:45:07.155  INFO 9612 --- [nio-7777-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 7 ms
2020-05-19 09:45:07.200 DEBUG 9612 --- [nio-7777-exec-1] c.z.m.client.BookService                 : [BookService#findBySn] ---> GET http://Book-service/find?sn=111 HTTP/1.1
2020-05-19 09:45:07.201 DEBUG 9612 --- [nio-7777-exec-1] c.z.m.client.BookService                 : [BookService#findBySn] ---> END HTTP (0-byte body)
2020-05-19 09:45:07.414  INFO 9612 --- [nio-7777-exec-1] c.netflix.config.ChainedDynamicProperty  : Flipping property: Book-service.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647
2020-05-19 09:45:07.457  INFO 9612 --- [nio-7777-exec-1] c.n.u.concurrent.ShutdownEnabledTimer    : Shutdown hook installed for: NFLoadBalancer-PingTimer-Book-service
2020-05-19 09:45:07.458  INFO 9612 --- [nio-7777-exec-1] c.netflix.loadbalancer.BaseLoadBalancer  : Client: Book-service instantiated a LoadBalancer: DynamicServerListLoadBalancer:{NFLoadBalancer:name=Book-service,current list of Servers=[],Load balancer stats=Zone stats: {},Server stats: []}ServerList:null
2020-05-19 09:45:07.469  INFO 9612 --- [nio-7777-exec-1] c.n.l.DynamicServerListLoadBalancer      : Using serverListUpdater PollingServerListUpdater
2020-05-19 09:45:07.504  INFO 9612 --- [nio-7777-exec-1] c.netflix.config.ChainedDynamicProperty  : Flipping property: Book-service.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647
2020-05-19 09:45:07.505  INFO 9612 --- [nio-7777-exec-1] c.n.l.DynamicServerListLoadBalancer      : DynamicServerListLoadBalancer for client Book-service initialized: DynamicServerListLoadBalancer:{NFLoadBalancer:name=Book-service,current list of Servers=[ZhangSan-Plus:8888],Load balancer stats=Zone stats: {defaultzone=[Zone:defaultzone;	Instance count:1;	Active connections count: 0;	Circuit breaker tripped count: 0;	Active connections per server: 0.0;]
},Server stats: [[Server:ZhangSan-Plus:8888;	Zone:defaultZone;	Total Requests:0;	Successive connection failure:0;	Total blackout seconds:0;	Last connection made:Thu Jan 01 08:00:00 CST 1970;	First connection made: Thu Jan 01 08:00:00 CST 1970;	Active Connections:0;	total failure count in last (1000) msecs:0;	average resp time:0.0;	90 percentile resp time:0.0;	95 percentile resp time:0.0;	min resp time:0.0;	max resp time:0.0;	stddev resp time:0.0]
]}ServerList:org.springframework.cloud.netflix.ribbon.eureka.DomainExtractingServerList@1c66fbc0
2020-05-19 09:45:07.590 DEBUG 9612 --- [nio-7777-exec-1] c.z.m.client.BookService                 : [BookService#findBySn] <--- HTTP/1.1 200 (390ms)
2020-05-19 09:45:07.590 DEBUG 9612 --- [nio-7777-exec-1] c.z.m.client.BookService                 : [BookService#findBySn] connection: keep-alive
2020-05-19 09:45:07.591 DEBUG 9612 --- [nio-7777-exec-1] c.z.m.client.BookService                 : [BookService#findBySn] content-type: application/json
2020-05-19 09:45:07.591 DEBUG 9612 --- [nio-7777-exec-1] c.z.m.client.BookService                 : [BookService#findBySn] date: Tue, 19 May 2020 01:45:07 GMT
2020-05-19 09:45:07.591 DEBUG 9612 --- [nio-7777-exec-1] c.z.m.client.BookService                 : [BookService#findBySn] keep-alive: timeout=60
2020-05-19 09:45:07.591 DEBUG 9612 --- [nio-7777-exec-1] c.z.m.client.BookService                 : [BookService#findBySn] transfer-encoding: chunked
2020-05-19 09:45:07.591 DEBUG 9612 --- [nio-7777-exec-1] c.z.m.client.BookService                 : [BookService#findBySn] 
2020-05-19 09:45:07.594 DEBUG 9612 --- [nio-7777-exec-1] c.z.m.client.BookService                 : [BookService#findBySn] {"sn":"111","bookName":"图书1","desc":"weqwe"}
2020-05-19 09:45:07.595 DEBUG 9612 --- [nio-7777-exec-1] c.z.m.client.BookService                 : [BookService#findBySn] <--- END HTTP (48-byte body)

猜你喜欢

转载自blog.csdn.net/qq_43565087/article/details/106207867