zoukankan      html  css  js  c++  java
  • consul注册中心

    consul注册中心准备

    下载方式:链接:https://pan.baidu.com/s/1JpoJq1zvV0TUBlh3_5pKLw  提取码:neg1 

    1、下载consul.exe软件,在cmd运行

     2、查看版本

    3、运行consul注册中心consul agent -dev,启动代理程序

    4、测试一下成功没,http://localhost:8500,由于刚才我注册过,所以有两个xx的服务,如果出现这个页面表示consul能用

     

     consul客户端服务

    模拟两个服务在注册中心进行注册后,相互通信查询数据

    product数据源服务

    1、创建product9997服务模块

     2、老规矩,配置pom,添加版本号配置+consul+健康检查配置

        <properties>
            <java.version>1.8</java.version>
            <spring-cloud.version>Hoxton.SR6</spring-cloud.version>
        </properties>
    
        <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>
    
            <!--consul注册中心的依赖 因为eureka2.0已经停止更新 所以就没有去用他-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-consul-discovery</artifactId>
            </dependency>
            <!--这个包是用来健康监控的-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>

    3、配置文件properties

    #开放的端口号
    server.port=9997
    #注册客户端服务的名字
    spring.application.name=product9997
    spring.cloud.consul.host=localhost
    #注册consul服务的主机   这个是哪个consul.exe 的服务端口号  我们下载了哪个exe 运行以后就有了consul服务注册中心
    #不像eureka那样 在一个电脑上要做一个eurekaserver
    spring.cloud.consul.port=8500
    #注册consul服务的端口号  关闭了consul服务的健康检查 不推荐
    #spring.cloud.consul.discovery.register-health-check=false
    #指定注册服务名称 默认就是应用名
    #spring.cloud.consul.discovery.service-name=${spring.application.name}

    4、启动类

    package com.example.product9997;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    
    @SpringBootApplication
    @EnableDiscoveryClient
    public class Product9997Application {
    
        public static void main(String[] args) {
            SpringApplication.run(Product9997Application.class, args);
        }
    
    }

    5、controller模仿数据源

    package com.example.product9997.controller;
    
    import lombok.extern.log4j.Log4j;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.actuate.autoconfigure.hazelcast.HazelcastHealthContributorAutoConfiguration;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.HashMap;
    import java.util.Map;
    
    @RestController
    //@Slf4j  //日志注解
    public class ProductController {
    
        @Value("${server.port}")
        private int port;
    
        @RequestMapping("/product/findps")
        public Map<String, Object> findPs() {
    
            System.out.println("商品调用成功" + port);
            //使用一个map  装数据
            Map<String,Object> map = new HashMap<String, Object>();
            map.put("msg", "服务调用成功:" + port);
            map.put("status", true);  //放一个数据状态
            return map;
        }
    }

    user访问服务

    1、创建user9998服务模块

     2、老规矩pom.xml,这里配置了版本管理+consul配置+健康检查

        <properties>
            <java.version>1.8</java.version>
            <spring-cloud.version>Hoxton.SR6</spring-cloud.version>
        </properties>
    
        <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>
    
            <!--consul注册中心的依赖 因为eureka2.0已经停止更新 所以就没有去用他-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-consul-discovery</artifactId>
            </dependency>
            <!--这个包是用来健康监控的-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>

    3、properties配置

    #开放的端口号
    server.port=9998
    #注册客户端服务的名字
    spring.application.name=user9998
    spring.cloud.consul.host=localhost
    #注册consul服务的主机   这个是哪个consul.exe 的服务端口号  我们下载了哪个exe 运行以后就有了consul服务注册中心
    #不像eureka那样 在一个电脑上要做一个eurekaserver
    spring.cloud.consul.port=8500
    #注册consul服务的端口号  关闭了consul服务的健康检查 不推荐
    #spring.cloud.consul.discovery.register-health-check=false
    #指定注册服务名称 默认就是应用名
    #spring.cloud.consul.discovery.service-name=${spring.application.name}

    4、applicaton注解,其实这个注解可以加可以不加,consul最新版默认是可以省略的

    @SpringBootApplication
    @EnableDiscoveryClient
    public class User9998Application {
    
        public static void main(String[] args) {
            SpringApplication.run(User9998Application.class, args);
        }
    
    }

    5、controller,从另一个服务拿数据

    package com.example.user9998.controller;
    
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.client.RestTemplate;
    
    @RestController  //包裹的是一个json字符串
    public class UserController {
        @GetMapping("/user/findps")
        public String findps(){
            System.out.println("正在调用用户端");
            //http请求工具去访问
            RestTemplate restTemplate = new RestTemplate();
            //访问另一台机器上的端口
            String ps = restTemplate.getForObject("http://localhost:9997/product/findps", String.class);
            return ps;
        }
    }

    测试

    1、在consul中查看两个服务是否注册,http://localhost:8500/

    2、这里需要从user模块中的controller去访问,拿到product中的数据

    注意 

      服务之间的访问,使用的http协议,restTemplate工具发送请求,从注册中心的注册地址,查找到该服务进行调用。

  • 相关阅读:
    团队项目个人工作总结(4.27)
    团队项目个人工作总结(4.26)
    团队项目个人工作总结(4.25)
    评测—输入法
    学习进度(2016.4.24)
    团队项目个人工作总结(4.24)
    团队项目个人工作总结(4.23)
    第一阶段冲刺(第四天)
    典型用户和用户场景描述
    第一阶段冲刺(第三天)
  • 原文地址:https://www.cnblogs.com/HelloM/p/14316872.html
Copyright © 2011-2022 走看看