学习springcloud之三负载均衡声明式调用Feign

接着前两节:
Eureka服务注册:https://blog.csdn.net/weixin_37460672/article/details/90414085
Ribbon负载均衡:https://blog.csdn.net/weixin_37460672/article/details/90451192
1.创建Module工程的springboot项目eureka-feign-client
2.pom文件

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>com.wl</groupId>
		<artifactId>springcloud20190521</artifactId>
		<version>1.0-SNAPSHOT</version>
	</parent>
	<groupId>com.wl</groupId>
	<artifactId>eureka-feign-client</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>eureka-feign-client</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<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.cloud</groupId>
			<artifactId>spring-cloud-starter-feign</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
</project>

3.application.yml配置文件配置程序名eureka-feign-client,端口号8765,服务注册地址http://localhost:8761/eureka/

spring:
  application:
    name: eureka-feign-client
server:
  port: 8765
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

4.启动类加注解@EnableEurekaClient开启EurekaClient功能,加注解@EnableFeignClients开启FeignClient功能

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

5.已经具备Feign功能,现在实现一个简单的FeignClient,新建EurekaClientFeign接口,接口加注解@FeignClient,其中value为远程调用其他服务名,FeignConfig.class为FeignClient的配置类,接口内有一个sayHiFromClientEureka()方法,该方法通过Feign来调用eureka-client服务的"/hi"的API接口

/**
 * Created by lailai on 2019/5/23.
 */
@FeignClient(value = "eureka-client",configuration = FeignConfig.class)
public interface EurekaClientFeign {
    @GetMapping("hi")
    String sayHiFromClientEureka(@RequestParam(value = "name") String name);
}

6.FeignConfig配置类,注入Retryer的bean,远程调用失败后会重试

/**
 * Created by lailai on 2019/5/23.
 */
@Configuration
public class FeignConfig {
    @Bean
    public Retryer feignRetryer(){
        return new Retryer.Default(100,SECONDS.toMillis(1),5);
    }
}

7.在Service层注入EurekaFeignClient,调用sayHiFromClientEureka()方法

/**
 * Created by lailai on 2019/5/23.
 */
@Service
public class HiService {
    @Autowired
    private EurekaClientFeign eurekaClientFeign;
    public String sayHi(String name) {
        return eurekaClientFeign.sayHiFromClientEureka(name);
    }
}

8.创建HiController调用HiService,HiService通过EurekaClientFeign远程调用eureka-client服务的API接口"/hi"

/**
 * Created by lailai on 2019/5/23.
 */
@RestController
public class HiController {
    @Autowired
    private HiService hiService;
    @RequestMapping("hi")
    public String sayHi(@RequestParam(defaultValue = "admin",required = false) String name){
        return hiService.sayHi(name);
    }
}

9.启动eureka-server工程端口8761,启动两个eureka-client工程,端口分别为8762,8763,启动eureka-feign-client工程,端口8765
服务注册
10.轮流访问http://localhost:8765/hi?name=weilai地址
负载均衡访问8762服务器
负载均衡访问8763服务器

发布了47 篇原创文章 · 获赞 5 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_37460672/article/details/90486854