spring cloud 之二(服务注册与发现)

1、服务注册:在提供者工程上燕郊Eureka客户端依赖,自动将服务注册到Eureka注册中心服务列表。

  • 添加依赖   
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
  • 改造启动类,添加Eureka客户端发现注解  @EnableDiscoveryClient 开启Eureka客户端发现功能
  • 修改配置文件application.yml,设置Eureka 注册中心地址
 1 spring:
 2   application:
 3     name: springcloud-eureka-provider
 4 server:
 5   port: 8701
 6 #设置该服务中心的hostname,指定ip,该实例名称不能重复
 7 eureka:
 8   client:
 9     service-url:
10       defaultZone: http://localhost:8700/eureka

 

2、服务发现:在消费者工程上添加Eureka客户端依赖,可以使用根据服务名获取对应的服务列表。

  • 添加依赖
1  <dependency>
2     <groupId>org.springframework.cloud</groupId>
3     <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
4 </dependency>
5         
6 <dependency>
7     <groupId>org.springframework.boot</groupId>
8     <artifactId>spring-boot-starter-web</artifactId>
9 </dependency>
  • 改造启动类,添加Eureka客户端发现注解  @EnableDiscoveryClient 开启Eureka客户端发现功能
  • 修改文件application.yml,设置Eureka服务地址
 1 spring:
 2   application:
 3     name: springcloud-eureka-consumer
 4   #设置该服务中心的hostname,指定ip,该实例名称不能重复
 5 eureka:
 6     client:
 7       service-url:
 8         defaultZone: http://localhost:8700/eureka
 9 server:
10   port: 8702
  • 修改消费者controller类使用工具类discoveryClient根据服务名获取对应的服务地址列表

 

 1 @RestController
 2 @RequestMapping("/consumer")
 3 public class ConsumerController {
 4 
 5     @Autowired
 6     private DiscoveryClient discoveryClient;
 7 
 8     @Autowired
 9     private RestTemplate restTemplate;
10 
11     @GetMapping("/{id}")
12     private DemoVo getDemo(@PathVariable int id) {
13 
14         List<ServiceInstance> instances = discoveryClient.getInstances("springcloud-eureka-provider");
15         ServiceInstance serviceInstance = instances.get(0);
16         String host = serviceInstance.getHost();
17         int port = serviceInstance.getPort();
18         String url = "http://" + host + ":" + port + "/provider/" + id;
19         return restTemplate.getForObject(url, DemoVo.class);
20     }
21 }

注意 spring boot 与spring cloud 版本适配问题。导致程序无法启动 文档见:https://spring.io/projects/spring-cloud#learn

 

posted @ 2020-12-07 15:58  爱,诗意永存  阅读(89)  评论(0编辑  收藏  举报