1.复制上一个项目eureka-client,命名为eureka-client2,并修改pom.xml对应的名字,修改applicaiton.yml里面的端口为8002,application name不换
2.启动eureka,两个client
3.新建一个项目 ribbon-client
4.具体pom.xml
<?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.star.guo</groupId>
<artifactId>springcloudversion</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<!-- <groupId>com.star.guo</groupId> -->
<artifactId>ribbon-client</artifactId>
<!-- <version>0.0.1-SNAPSHOT</version> -->
<packaging>jar</packaging>
<name>ribbon-client</name>
<description>Spring Cloud项目</description>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</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>
5.核心配置文件修改application.yml
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8000/eureka/
server:
port: 8003
spring:
application:
name: ribbon-client
6.添加注解和register bean
@EnableEurekaClient
@EnableDiscoveryClient
@Bean
@LoadBalanced
RestTemplate restTemplate() {
return new RestTemplate();
}
效果如下图
7.新建一个Conroller测试两个eureka-client
package com.star.guo.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
/**
* 消息Controller,使用ribbon测试集群效果
* @author Star.Guo
*
*/
@RestController
public class MessageController {
@Autowired
RestTemplate restTemplate;
/**
* 调用的服务名
*/
private static final String serviceName = "EUREKA-CLIENT";
/**
* Hello方法
* @param user 用户名
* @return String
*/
@GetMapping
public String hello(String user) {
return restTemplate.getForObject("http://" + serviceName + "/hi?user=" + user, String.class);
}
}
8.启动并访问测试
http://localhost:8003/?user=yourname
如果交替输出下面结果则正确(刷新页面一次切换一次)
hello yourname current port is:8001
hello yourname current port is:8002