注册中心见上篇Spring Cloud注册中心,Eureka集群,高可用版本(Finchley版本)
创建ribbon客户端和普通的注册到eureka-server服务上的客户端一样,引入spring-cloud-starter-netflix-eureka-client
和注解@EnableDiscoveryClient
,并将服务注册到注册中心中
<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.0modelVersion>
<groupId>com.friendsgroupId>
<artifactId>ribbon-clientartifactId>
<version>0.0.1-SNAPSHOTversion>
<name>ribbon-clientname>
<description>Demo project for Spring Clouddescription>
<parent>
<groupId>org.friendsgroupId>
<artifactId>centralparkartifactId>
<version>1.0-SNAPSHOTversion>
parent>
<dependencies>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
dependencies>
project>
RibbonClientApplication.java
@SpringBootApplication
@EnableDiscoveryClient
public class RibbonClientApplication {
public static void main(String[] args) {
SpringApplication.run(RibbonClientApplication.class, args);
}
}
application.yml
中spring:
profiles:
active: RibbonClient8602
application:
name: RibbonClient
---
eureka:
client:
serviceUrl:
defaultZone: http://peer1:8887/eureka/,http://peer2:8888/eureka/,http://peer3:8889/eureka/
server:
port: 8601
spring:
profiles: RibbonClient8601
---
eureka:
client:
serviceUrl:
defaultZone: http://peer1:8887/eureka/,http://peer2:8888/eureka/,http://peer3:8889/eureka/
server:
port: 8602
spring:
profiles: RibbonClient8602
RibbonClientController.java
@RestController
public class RibbonClientController {
@Value("${server.port}")
private String port;
@GetMapping("ribbonClient")
public String ribbonClient(){
return "I'm ribbonClient: port is "+port;
}
}
pom.xml
文件中引入riibbon支持包
<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.0modelVersion>
<groupId>com.friendsgroupId>
<artifactId>ribbon-consumerartifactId>
<version>0.0.1-SNAPSHOTversion>
<name>ribbon-consumername>
<description>Demo project for Spring Clouddescription>
<parent>
<groupId>org.friendsgroupId>
<artifactId>centralparkartifactId>
<version>1.0-SNAPSHOTversion>
parent>
<dependencies>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-netflix-ribbonartifactId>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
dependencies>
project>
RibbonConsumerApplication.java
中注入RestTemplate.java
模板类,用于rest风格的远端请求,并加入添加ribbon负载的注解@LoadBalanced
,官方文档出处见文章首部@SpringBootApplication
@EnableDiscoveryClient
public class RibbonConsumerApplication {
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(RibbonConsumerApplication.class, args);
}
}
RibbonConsumerController.java
中采用服务名spring.application.name: RibbonConsumer
的方式访问@RestController
public class RibbonConsumerController {
@Autowired
private RestTemplate restTemplate;
@GetMapping("ribbonClient")
public String ribbonClient(){
return restTemplate.getForObject("http://RibbonClient/ribbonClient",String.class);
}
}
spring:
application:
name: RibbonConsumer
eureka:
client:
serviceUrl:
defaultZone: http://peer1:8887/eureka/,http://peer2:8888/eureka/,http://peer3:8889/eureka/
server:
port: 8001
上一篇:Spring Cloud注册中心,Eureka集群,高可用版本(Finchley版本)
下一篇:Spring Cloud声明式服务调用,Feign(Finchley版本)