02-OpenFeign-微服务接入

1、依赖

由于是spring cloud项目,注意spring-boot、cloud、alibaba的版本兼容性

1.1、父级依赖


    1.8

    2.7.18
    2021.0.1
    2021.0.1.0





    
        
            com.alibaba.cloud
            spring-cloud-alibaba-dependencies
            ${spring.cloud.alibaba.version}
            pom
            import
        

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

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

   

1.2、子服务依赖


    UTF-8
    UTF-8
    1.8





    
        org.springframework.boot
        spring-boot-starter-web
    

    
        org.springframework.boot
        spring-boot-starter
    

    
        com.alibaba.cloud
        spring-cloud-starter-alibaba-nacos-discovery
        
            
                org.springframework.cloud
                spring-cloud-starter-netflix-ribbon
            
        
    
    
        com.alibaba.cloud
        spring-cloud-starter-alibaba-nacos-config
    

    
        org.springframework.cloud
        spring-cloud-starter-openfeign
    

    
        org.springframework.cloud
        spring-cloud-loadbalancer
    

以下全部为调用方配置

2、配置项

启动项配置文件 需要在 bootstrap.yml添加如下内容:

server:
  port: 8090
  servlet:
    context-path: /
spring:
  application:
    #nacos 注册时的服务名  
    name: open
  profiles:
    active: seata
  cloud:
    nacos:
      discovery:
        # nacos的服务地址,nacos-server中IP地址:端口号
        server-addr: 192.168.20.113:8848
        # 保持与下游服务一样的域
        namespace: cedb1f46-d9ae-43b1-99db-39b245152543
        group: DEFAULT_GROUP

openfeign的负载均衡策略:

- round-robin:轮询

- least-conne¢tion:最小连接数

- consistent-hashing:一致性HASH

或指定URL

@FeignClient(url = "127.0.0.1:9001",name = "async-feign",contextId = "identity")

2.2、添加注解@EnableFeignClients开启openFeign功能

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class OpenFeignConsumer9006Application{
    public static void main(String[] args) {
        SpringApplication.run(OpenFeignConsumer9006Application.class, args);
    }
}

2.3、新建openFeign接口

value作为调用方服务名,可以用final static 常量代替

// 下游服务注册到nacos的服务名
@FeignClient(value = "user-service")
public interface OpenFeignUserService {
    
    // 完整的调用地址,如果下游存在/contextPath 则需要补充
    @GetMapping("/user/save")
    String insert() ;
}

3、调用错误问题

1、503[Load balancer does not contain an instance for the service ...]

因为SpringCloud Feign在Hoxton.M2 RELEASED版本之后抛弃了Ribbon,

使用了spring-cloud-loadbalancer,所以我们这里还需要引入spring-cloud-loadbalancer的依赖,否则就会报错

你可能感兴趣的:(OpenFeign,spring,cloud)