zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    解决方案
    项目管理
    项目管理
    产品经理
    产品经理
    产品经理
    产品经理
    vue学习面向对象,在项目中怎么用呢?
    vue表单验证不通过,依然能执行点击事件里面的代码?
    vue中js文件中export常见方法及使用
  • 原文地址:https://www.cnblogs.com/lxn0216/p/14095948.html
Copyright © 2011-2022 走看看