接着上一章来:https://blog.csdn.net/weixin_37460672/article/details/90414085 1.使用RestTemplate和Ribbon来消费服务 2.启动eureka-server端口为8761和两个eureka-client端口分别为8762和8763
启动命令: java -jar eureka-client-0.0.1-SNAPSHOT.jar --spring.profiles.active=client1 java -jar eureka-client-0.0.1-SNAPSHOT.jar --spring.profiles.active=client2 3.创建Module工程springboot项目eureka-ribbon-client,通过RestTemplate远程调用eureka-client服务的API接口的“/hi” 4.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-ribbon-client</artifactId> <version>0.0.1-SNAPSHOT</version> <name>eureka-ribbon-client</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-ribbon</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>5.application.yml配置文件端口:8764服务名:eureka-ribbon-client服务注册地址 http://localhost:8761/eureka/
spring: application: name: eureka-ribbon-client server: port: 8764 eureka: client: service-url: defaultZone: http://localhost:8761/eureka/6.EurekaRibbonClientApplication加上注解@EnableEurekaClient开启Eurekaclient功能
@EnableEurekaClient @SpringBootApplication public class EurekaRibbonClientApplication { public static void main(String[] args) { SpringApplication.run(EurekaRibbonClientApplication.class, args); } }7.只需要在IoC容器中注入一个restTemplate的bean并在这个bean上加@LoadBalanced注解,此时RestTemplate就结合了Ribbon开启了负载均衡
/** * Created by lailai on 2019/5/22. */ @Configuration public class RibbonConfig { @Bean @LoadBalanced RestTemplate restTemplate(){ return new RestTemplate(); } }8.写一个RibbonService类,在hi()方法用restTemplate调用eureka-client的API接口
@Service public class RibbonService { @Autowired RestTemplate restTemplate; @HystrixCommand(fallbackMethod = "hiError") public String hi(String name) { return restTemplate.getForObject("http://eureka-client/hi?name=" + name, String.class); } public String hiError(String name) { return "hi," + name + ",sorry,error!"; } }9.写一个RibbonController调用RibbonService的hi()方法
@RestController public class RibbonController { @Autowired private RibbonService ribbonService; @Autowired private LoadBalancerClient loadBalancerClient; @GetMapping("hi") public String hi(@RequestParam(required = false,defaultValue ="admin") String name){ return ribbonService.hi(name); } }10.启动项目eureka-ribbon-client浏览器访问http:localhost:8764/hi?name=zhangsan 浏览器会轮流显示8762和8763服务,RestTemplate结合Ribbon实现负载均衡