当前位置 主页 > 服务器问题 > Linux/apache问题 >

    Spring boot2X Consul如何通过RestTemplate实现服务调用

    栏目:Linux/apache问题 时间:2019-12-02 15:33

    这篇文章主要介绍了spring boot2X Consul如何通过RestTemplate实现服务调用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Consul可以用于实现分布式系统的服务发现与配置

    服务调用有两种方式:

    A.使用RestTemplate 进行服务调用

    负载均衡——通过Ribbon注解RestTemplate

    B.使用Feign 进行声明式服务调用

    负载均衡——默认使用Ribbon实现

    先使用RestTemplate来实现

    1.服务注册发现中心

    启动Consul

    consul agent -dev

    2.服务端

    在spring boot2X整合Consul 的基础上

    添加服务provider,provider1

    provider测试方法

    package com.xyz.provider.controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class demoController {
     @RequestMapping("/hello")
     public String Hello(){
      return "hello,provider";
     }
    }

    provider1测试方法

    package com.xyz.provider1.controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    @RestController
    public class demoController {
     @RequestMapping("/hello")
     public String Hello(){
      return "hello,another provider";
     }
    }

    启动provider和provider1

    浏览器访问http://localhost:8500

    有两个服务提供者节点实例

    3.客户端

    (1)添加依赖

    <properties>
      <java.version>1.8</java.version>
      <spring-cloud.version>Greenwich.SR4</spring-cloud.version>
     </properties>
    
     <dependencies>
      <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
    
      <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-consul-discovery</artifactId>
      </dependency>
    
    </dependencies>
    
    <dependencyManagement>
      <dependencies>
       <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>${spring-cloud.version}</version>
        <type>pom</type>
        <scope>import</scope>
       </dependency>
      </dependencies>
    </dependencyManagement>

    (2)添加配置

    server.port=8015
    spring.application.name=xyz-comsumer
    spring.cloud.consul.host=localhost
    spring.cloud.consul.port=8500
    spring.cloud.consul.discovery.register=false
    spring.cloud.consul.discovery.health-check-url=/actuator/health
    spring.cloud.consul.discovery.heartbeat.enabled=true
    management.endpoints.web.exposure.include=*
    management.endpoint.health.show-details=always

    (3)测试方法