码迷,mamicode.com
首页 > 其他好文 > 详细

基于consul的服务注册(含踩坑过程)

时间:2020-02-06 16:46:57      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:cli   bsp   文档   启动   检查   cloud   enc   cat   acl   

在本地的一个案例中进行修改

技术图片

修改微服务的相关pom文件
修改每个微服务的pom文件,添加SpringCloud提供的基于Consul的依赖

<!--SpringCloud提供的基于Consul的服务发现-->
<dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-consul-discovery</artifactId>
    </dependency>
<!--actuator用于心跳检查-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

 

注:由于我之前的代码是注册到eureka中,把配置注解要删了,pom的依赖还在,启动直接报错,还是要去掉的

<!--引入EurekaClient-->
        <!--  <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency> -->

其中 spring-cloud-starter-consul-discovery 是SpringCloud提供的对consul支持的相关依赖。
spring-boot-starter-actuator 适用于完成心跳检测响应的相关依赖。

配置服务注册

server:
  port: 9001 #端口
spring:
  application:
    name: service-product #服务名称
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
    username: root
    password: 123456
  jpa:
    database: MySQL
    show-sql: true
    open-in-view: true
  ###开始配置consul的服务注册
  cloud:
    consul:
      host: 192.168.180.137 #consul服务器的主机地址
      port: 8500 #consul服务器的ip地址
      discovery:
        #是否需要注册
        register: true
        #注册的实例ID (唯一标志)
        instance-id: ${spring.application.name}-1
        #服务的名称
        service-name: ${spring.application.name}
        #服务的请求端口
        port: ${server.port}
        #指定开启ip地址注册
        prefer-ip-address: true
        #当前服务的请求ip
        ip-address: ${spring.cloud.client.ip-address}

 

server:
  port: 9002 #端口
spring:
  application:
    name: service-order #服务名称
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
    username: root
    password: 123456
  jpa:
    database: MySQL
    show-sql: true
    open-in-view: true
  ###开始配置consul的服务注册
  cloud:
    consul:
      host: 192.168.180.137 #consul服务器的主机地址
      port: 8500 #consul服务器的ip地址
      discovery:
        #是否需要注册
        register: true
        #注册的实例ID (唯一标志)
        instance-id: ${spring.application.name}-1
        #服务的名称
        service-name: ${spring.application.name}
        #服务的请求端口
        port: ${server.port}
        #指定开启ip地址注册
        prefer-ip-address: true
        #当前服务的请求ip
        ip-address: ${spring.cloud.client.ip-address}

其中 spring.cloud.consul 中添加consul的相关配置
host:表示Consul的Server的请求地址
port:表示Consul的Server的端口
discovery:服务注册与发现的相关配置
instance-id : 实例的唯一id(推荐必填),spring cloud官网文档的推荐,为了保证生成一个唯一的id ,也可以换成
${spring.application.name}:${spring.cloud.client.ipAddress}
prefer-ip-address:开启ip地址注册
ip-address:当前微服务的请求ip

在控制台中查看服务列表
打开ConsulServer的管理控制台,可以发现三个微服务已经全部注册到Consul中了。

技术图片

 

 

进行测试:

技术图片

 

 发现没有问题。

由于第一次部署实在阿里云上的,但是在服务检查的时候一直显示连接超时,可能网络不带好,换成自己的虚拟机就没有问题。如下图:

技术图片

 

 技术图片

基于consul的服务注册(含踩坑过程)

标签:cli   bsp   文档   启动   检查   cloud   enc   cat   acl   

原文地址:https://www.cnblogs.com/dalianpai/p/12268930.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!