开发环境
开发工具:IDEA 2021.3.2
JDK版本:JDK1.8
Maven版本:Maven3.8
Consul版本:Consul-1.13.3
SpringCloud版本:Hoxton.SR12
SpringBoot版本:2.3.12.RELEASE
创建Consul注册中心
点击链接下载Consul
https://releases.hashicorp.com/consul/1.13.3/consul_1.13.3_windows_amd64.zip
解压缩consul_1.13.3_windows_amd64.zip
进入consul.exe所在路径,打开cmd,cmd输入consul agent -dev命令启动consul服务
浏览器打开 http://localhost:8500/ ,访问consul客户端
创建父工程
创建maven工程,命名为spring-cloud-2022-consul
删除src目录
导入依赖
<dependencyManagement> <dependencies> <!--SpringCloud 依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Hoxton.SR12</version> <type>pom</type> <scope>import</scope> </dependency> <!--SpringBoot 依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.3.12.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> </dependencies> </dependencyManagement>
创建服务提供者
父工程里面创建maven模块,命名为cloud-provider8001
导入依赖
①导入Consul依赖
<!--consul 依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-consul-discovery</artifactId> </dependency>
②导入SpringBoot依赖
<!--springboot依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
创建application.yml配置文件
server: port: 8001 spring: application: name: cloud-provider cloud: consul: port: 8500 host: localhost discovery: service-name: ${spring.application.name}
创建启动类,添加@EnableDiscoveryClient注解
@EnableDiscoveryClient @SpringBootApplication public class ProviderConsul8001{ public static void main(String[] args) { SpringApplication.run(ProviderConsul8001.class, args); } }
创建controller
@RestController @RequestMapping("provider") public class ProviderController { @GetMapping("getUUID") public String getUUID() { return UUID.randomUUID().toString(); } }
启动项目,注册到Consul注册中心
创建服务消费者
创建maven模块,命名为cloud-consumer80
导入依赖
<dependencies> <!--consul 依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-consul-discovery</artifactId> </dependency> <!--springboot依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> </dependencies>
创建application.yml配置文件
server: port: 80 spring: application: name: cloud-consumer cloud: consul: host: localhost port: 8500 discovery: service-name: ${spring.application.name}
创建启动类,添加@EnableDiscoveryClient注解
@EnableDiscoveryClient @SpringBootApplication public class ConsumerConsul80 { public static void main(String[] args) { SpringApplication.run(ConsumerConsul80.class,args); } }
创建ApplicationContextConfig,将RestTemple注入到容器里面
@Configuration public class ApplicationContextConfig { @Bean @LoadBalanced public RestTemplate getRestTemplate() { return new RestTemplate(); } }
创建controller
@RestController @RequestMapping("consumer") public class ConsumerController { private static final String URL = "http://cloud-provider/provider"; @Autowired private RestTemplate restTemplate; @GetMapping("getUUID") public String getUUID() { return restTemplate.getForObject(URL + "/getUUID", String.class); } }
启动项目,注册到Consul注册中心上
实现远程调用