02-OpenFeign-微服务接入

1、依赖

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

1.1、父级依赖

<properties>
    <java.version>1.8</java.version>

    <spring-boot.version>2.7.18</spring-boot.version>
    <spring.cloud.version>2021.0.1</spring.cloud.version>
    <spring.cloud.alibaba.version>2021.0.1.0</spring.cloud.alibaba.version>
</properties>



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

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

        <!-- SpringBoot 依赖配置 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring-boot.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>         
   </dependencies>
</dependencyManagement>
   

1.2、子服务依赖

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
</properties>



<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

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

    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>

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

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

</dependencies>

以下全部为调用方配置

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的依赖,否则就会报错

相关推荐

  1. 02-OpenFeign-服务接入

    2024-02-03 07:32:01       32 阅读
  2. 服务OpenFeign

    2024-02-03 07:32:01       9 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-03 07:32:01       17 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-03 07:32:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-03 07:32:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-03 07:32:01       18 阅读

热门阅读

  1. k8s helm安装Tiller出错解决

    2024-02-03 07:32:01       32 阅读
  2. PyTorch和TensorFlow的简介

    2024-02-03 07:32:01       30 阅读
  3. 【conda】容易遗忘的命令使用总结

    2024-02-03 07:32:01       35 阅读
  4. 微信小程序如何控制元素的显示和隐藏

    2024-02-03 07:32:01       25 阅读
  5. Acwing---2816. 判断子序列

    2024-02-03 07:32:01       28 阅读
  6. Go语言中...(三个点)的使用几个常见情况

    2024-02-03 07:32:01       26 阅读
  7. qt编程---->qml

    2024-02-03 07:32:01       29 阅读
  8. node版本对应的npm版本

    2024-02-03 07:32:01       30 阅读