一、下载部署consul

1. docker部署consul

  1. 部署命令

    1. docker run -d --name consul -p 8500:8500 consul
  2. 查看是否部署成功,查询consul版本

    1. docker exec -it consul consul -version

2.官网下载

软件安装包下载

二、SpringCloud向consul中注册服务

1.引入库

  1. <!--consul注册jar包-->
  2. <dependency>
  3. <groupId>org.springframework.cloud</groupId>
  4. <artifactId>spring-cloud-starter-consul-discovery</artifactId>
  5. </dependency>
  6. <!--健康检查、审计、统计和监控,用于springCloud心跳机制-->
  7. <dependency>
  8. <groupId>org.springframework.boot</groupId>
  9. <artifactId>spring-boot-starter-actuator</artifactId>
  10. </dependency>

2.完整pom文件内容

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-parent</artifactId>
  8. <version>2.6.5</version>
  9. <relativePath/> <!-- lookup parent from repository -->
  10. </parent>
  11. <groupId>com.example</groupId>
  12. <artifactId>consul-servant2020</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <name>consul-servant2020</name>
  15. <description>Demo project for Spring Boot</description>
  16. <properties>
  17. <java.version>1.8</java.version>
  18. <spring-cloud.version>2021.0.1</spring-cloud.version>
  19. </properties>
  20. <dependencies>
  21. <dependency>
  22. <groupId>org.springframework.boot</groupId>
  23. <artifactId>spring-boot-starter-web</artifactId>
  24. </dependency>
  25. <!--consul注册jar包-->
  26. <dependency>
  27. <groupId>org.springframework.cloud</groupId>
  28. <artifactId>spring-cloud-starter-consul-discovery</artifactId>
  29. </dependency>
  30. <!--健康检查、审计、统计和监控,用于springCloud心跳机制-->
  31. <dependency>
  32. <groupId>org.springframework.boot</groupId>
  33. <artifactId>spring-boot-starter-actuator</artifactId>
  34. </dependency>
  35. <dependency>
  36. <groupId>org.springframework.boot</groupId>
  37. <artifactId>spring-boot-devtools</artifactId>
  38. <scope>runtime</scope>
  39. <optional>true</optional>
  40. </dependency>
  41. <dependency>
  42. <groupId>org.projectlombok</groupId>
  43. <artifactId>lombok</artifactId>
  44. <optional>true</optional>
  45. </dependency>
  46. <dependency>
  47. <groupId>org.springframework.boot</groupId>
  48. <artifactId>spring-boot-starter-test</artifactId>
  49. <scope>test</scope>
  50. </dependency>
  51. </dependencies>
  52. <dependencyManagement>
  53. <dependencies>
  54. <dependency>
  55. <groupId>org.springframework.cloud</groupId>
  56. <artifactId>spring-cloud-dependencies</artifactId>
  57. <version>${spring-cloud.version}</version>
  58. <type>pom</type>
  59. <scope>import</scope>
  60. </dependency>
  61. </dependencies>
  62. </dependencyManagement>
  63. <build>
  64. <plugins>
  65. <plugin>
  66. <groupId>org.springframework.boot</groupId>
  67. <artifactId>spring-boot-maven-plugin</artifactId>
  68. <configuration>
  69. <excludes>
  70. <exclude>
  71. <groupId>org.projectlombok</groupId>
  72. <artifactId>lombok</artifactId>
  73. </exclude>
  74. </excludes>
  75. </configuration>
  76. </plugin>
  77. </plugins>
  78. </build>
  79. </project>

3.yml相关配置

  1. server:
  2. port: 2021
  3. spring:
  4. application:
  5. name: consul-consumer2021
  6. #consul注册中心地址
  7. cloud:
  8. consul:
  9. host: 192.168.87.128
  10. port: 8500
  11. discovery:
  12. service-name: ${spring.application.name}
  13. prefer-ip-address: true # 表示注册时使用IP而不是hostname

4.使用@EnableDiscoveryClient注解声明main方法

  1. @SpringBootApplication
  2. @EnableDiscoveryClient
  3. public class ConsulServant2020Application {
  4. public static void main(String[] args) {
  5. SpringApplication.run(ConsulServant2020Application.class, args);
  6. }
  7. }

5.RestTemplate配置

  1. @Configuration
  2. public class ApplicationContextConfig {
  3. @Bean
  4. @LoadBalanced
  5. public RestTemplate getRestTemplate() {
  6. return new RestTemplate();
  7. }
  8. }

6.测试方法

  1. @RestController
  2. @RequestMapping("consulServantController")
  3. public class ConsulServantController {
  4. @Value("${server.port}")
  5. String port;
  6. @Resource
  7. private RestTemplate restTemplate;
  8. /***
  9. * description: 提供消费信息
  10. * version: 1.0 ->
  11. * date: 2022/3/27 16:51
  12. * author: xiaYZ
  13. * iteration: 迭代说明
  14. * @param
  15. * @return java.lang.String
  16. */
  17. @RequestMapping("sendMessage")
  18. public String sendMessage(){
  19. return port + ":" + UUID.randomUUID();
  20. }
  21. private static final String INVOKE_URL = "http://consul-consumer2021";
  22. /**
  23. * description: 调佣consul-consumer2021服务中/consulConsumerController/sendMessage方法
  24. * version: 1.0
  25. * date: 2022/3/28 13:48
  26. * author: xiaYZ
  27. * iteration: 迭代说明
  28. * @param
  29. * @return
  30. */
  31. @GetMapping(value = "getMessage")
  32. public String getMessage() {
  33. return restTemplate.getForObject(INVOKE_URL + "/consulConsumerController/sendMessage", String.class);
  34. }
  35. }

1.运行截图

  1. 运行项目查询consul的UI界面
    7.向consul中注册服务,并实现调用 - 图1
  2. consul-servant2020服务调用consul-consumer2021中方法
    7.向consul中注册服务,并实现调用 - 图2

总结

  1. 引入jar包
  2. 配置consul服务
  3. 调用方法
    项目地址