springboot集成consul
前言
consul 作为一个cloud支持的注册中心,安装方便,配置简单,小巧精致,是一款非常适合初学者来用的服务注册与发现中心;它没有nacos那样复杂,可以放配置文件,换句话说,他也没有nacos那样强大;
一、consul是什么?
一个注册中心,支持服务的注册与发现;
-
下载windows版本 consul下载地址
-
解压后 cmd启动
consul agent -dev -client=0.0.0.0
- 访问 http://localhost:8500
二、开始整合
由于是微服务,所以一般都是多个微服务,这里我采用分服务,但是不分包的做法
1.搭建一个父子模块的项目架构
第一步创建项目
-
idea 新建一个空的maven项目,删除src文件夹
-
创建一个module,选择springboot,版本选择2.7.10,以及其他依赖
-
在创建两个 module : service-b service-c
第二步配置项目
- 配置yml,改配置文件为bootstrap.yml,内容如下
服务a的配置内容
spring:cloud:consul:host: 127.0.0.1port: 8500config:enabled: truediscovery:service-name: ${spring.application.name}instance-id: ${spring.application.name}heartbeat:enabled: trueapplication:name: servicea
server:port: 8081servlet:context-path: /${spring.application.name}
- pom 内容
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.10</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>service-a</artifactId><version>0.0.1-SNAPSHOT</version><name>service-a</name><description>service-a</description><properties><java.version>1.8</java.version><spring-cloud.version>2021.0.6</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-config</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId></dependency><!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-bootstrap --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</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><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
另外两个项目也是如此配置,仅仅是yml中的名称,端口 不一样
application:
name: serviceb
server:
port: 8082
application:
name: servicec
server:
port: 8083
- 启动类上开启服务发现注解 @EnableDiscoveryClient
2.分别启动项目
找到每个服务的各自运行主类,右键 run ~~
再次查看consul
总结
以consul为注册中心,整合还是很快的,基本上没有版本不一致导致的各种问题,兼容性较好;
另整合过程视频地址: 传送门