SpringAlibaba 2021.0.1.0整合LoadBalancer和openFeign
先引入相关依赖
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<scaVersion>2021.0.1.0</scaVersion>
<springCloudVersion>2021.0.1</springCloudVersion>
<openFeignVersion>3.1.1</openFeignVersion>
<loadbalancerVersion>3.1.1</loadbalancerVersion>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.6.8</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.6.8</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${scaVersion}</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${scaVersion}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>${openFeignVersion}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
<version>${loadbalancerVersion}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.13.3</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.6.8</version>
<configuration>
<mainClass>com.iflytek.zhcs.ggaq.dsjyy.NacosClientMain</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<archive>
<manifest>
<mainClass>com.iflytek.zhcs.ggaq.dsjyy.NacosClientMain</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<version>3.6.2</version>
<configuration>
<skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/java</directory>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
客户端开启注解
@EnableFeignClients
@EnableDiscoveryClient
@LoadBalancerClients(@LoadBalancerClient(value = "file",configuration = CustomLoadBalancerConfiguration.class))
@SpringBootApplication
public class NacosClientMain {
public static void main(String[] args) {
SpringApplication.run(NacosClientMain.class,args );
}
}
添加loadBalancer配置类
@Configuration
public class CustomLoadBalancerConfiguration {
@Bean
public ReactorLoadBalancer<ServiceInstance> roundRobinLoadBalancer(Environment environment, LoadBalancerClientFactory loadBalancerClientFactory) {
String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);
return new RoundRobinLoadBalancer(loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class), name);
}
}
配置文件开启loadbalancer
spring.application.name=nacos-client
server.port=1237
spring.cloud.nacos.discovery.server-addr=192.168.0.61:8848
spring.cloud.nacos.config.server-addr=192.168.0.61:8848
spring.cloud.nacos.discovery.enabled=true
spring.cloud.loadbalancer.nacos.enabled=true
服务调用
@FeignClient(name = "file",path = "/file")
public interface FileService {
@GetMapping("/testService/getFileName")
String getFile();
}