11.SpringBoot+SpringCloud+Feign+Eureka搭建微服务

一.使用技术

SpringBoot:2.1.8.RELEASE
SpringCloud:Greenwich.SR3
Eureka
Feign:feign底层使用ribbon作为负载均衡的客户端,结合Eureka完成负载均衡。是声明式的客户端。

二.Eureka服务注册中心

Eureka服务注册中心的创建

三.服务生产者(service)

服务注册中心的创建

四.消费者的创建(Feign)

1.创建maven项目,选择openfeign,和Eureka Server

11.SpringBoot+SpringCloud+Feign+Eureka搭建微服务_第1张图片

2.pom.xml文件


    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.8.RELEASE
         
    
    com.xz
    demo
    0.0.1-SNAPSHOT
    demo
    Demo project for Spring Boot

    
        1.8
        Greenwich.SR3
        8.5.20
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-server
        
        
            org.springframework.cloud
            spring-cloud-starter-openfeign
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


3.配置文件application.yml
server:
  port: 8878

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

spring:
  application:
    name: feigin-consumer
4.更改启动类
@SpringBootApplication
@EnableFeignClients(basePackages = "com.xz.feigin")
public class DemoApplication {

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

@EnableFeignClients(basePackages = “com.xz.feigin”):作用是启动feigin客户端,并且指定feigin客户端的位置,告诉Spring去扫描我们自定义的Feign客户端。

5.使用@FeignClient注解自定义Feign 客户端
@FeignClient(name = "producer")
public interface TestFeigin {

    /**
     * 测试feigin
     * @param name
     * @return 保证该抽象方法与生产者服务中的方法完全相同
     */
    @RequestMapping("/hello")
    String hello(@RequestParam String name);
}

@FeignClient的属性

属性名称 含义
name 若项目使用robbin负载均衡,就是生产者服务的注册名称,用于服务发现。对应生产者服务的application.yml中的application.name
url 一般用于调试,手动指定FeignClient的地址
decode404 发生404错误,decode=true,会调用decoder进行解码,否则抛出FeignException
configuration Feign配置类,可以自定义Feign的Encoder,Decoder,LogLevel
fallback 定义容错的处理类,当调用远程接口失败或超时时,会调用对应接口的容错逻辑,fallback指定的类必须实现@FeignClent标记的接口,并且自身使用@Component作为组件
fallbackFactory 生成fallback类实例,实现每个接口通用的容错逻辑,减少重复代码
6.使用@Resource注解使用自定义的feign客户端
@RestController
public class TestController {

    @Resource
    private TestFeigin testFeigin;

    @RequestMapping("test")
    public String test() {
        return testFeigin.hello("hello");
    }
}
7.启动项目,项目注册到Eureka服务中心

在这里插入图片描述
访问http://localhst:8878/test
11.SpringBoot+SpringCloud+Feign+Eureka搭建微服务_第2张图片

你可能感兴趣的:(Spring框架)