一、下载部署consul
1. docker部署consul
部署命令
docker run -d --name consul -p 8500:8500 consul
查看是否部署成功,查询consul版本
docker exec -it consul consul -version
2.官网下载
二、SpringCloud向consul中注册服务
1.引入库
<!--consul注册jar包--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId></dependency><!--健康检查、审计、统计和监控,用于springCloud心跳机制--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>
2.完整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.6.5</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>consul-servant2020</artifactId><version>0.0.1-SNAPSHOT</version><name>consul-servant2020</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><spring-cloud.version>2021.0.1</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--consul注册jar包--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId></dependency><!--健康检查、审计、统计和监控,用于springCloud心跳机制--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></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><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>
3.yml相关配置
server:port: 2021spring:application:name: consul-consumer2021#consul注册中心地址cloud:consul:host: 192.168.87.128port: 8500discovery:service-name: ${spring.application.name}prefer-ip-address: true # 表示注册时使用IP而不是hostname
4.使用@EnableDiscoveryClient注解声明main方法
@SpringBootApplication@EnableDiscoveryClientpublic class ConsulServant2020Application {public static void main(String[] args) {SpringApplication.run(ConsulServant2020Application.class, args);}}
5.RestTemplate配置
@Configurationpublic class ApplicationContextConfig {@Bean@LoadBalancedpublic RestTemplate getRestTemplate() {return new RestTemplate();}}
6.测试方法
@RestController@RequestMapping("consulServantController")public class ConsulServantController {@Value("${server.port}")String port;@Resourceprivate RestTemplate restTemplate;/**** description: 提供消费信息* version: 1.0 ->* date: 2022/3/27 16:51* author: xiaYZ* iteration: 迭代说明* @param* @return java.lang.String*/@RequestMapping("sendMessage")public String sendMessage(){return port + ":" + UUID.randomUUID();}private static final String INVOKE_URL = "http://consul-consumer2021";/*** description: 调佣consul-consumer2021服务中/consulConsumerController/sendMessage方法* version: 1.0* date: 2022/3/28 13:48* author: xiaYZ* iteration: 迭代说明* @param* @return*/@GetMapping(value = "getMessage")public String getMessage() {return restTemplate.getForObject(INVOKE_URL + "/consulConsumerController/sendMessage", String.class);}}
1.运行截图
- 运行项目查询consul的UI界面

- consul-servant2020服务调用consul-consumer2021中方法

总结
- 引入jar包
- 配置consul服务
- 调用方法
项目地址
