(一)搭建Consul服务器
从官网下载对应版本下载地址 ,解压之后执行 consul agent -dev 通过docker安装
# 拉取镜像
docker pull consul: 1.12 .3
# 启动容器
docker run -- name consul - p 8500 : 8500 -- restart= always - d consul: 1.12 .3 agent - server - bootstrap - ui - node consul_one - client= '0.0 .0 .0 '
(二)项目总pom文件
1. pom.xml 文件配置
< ? 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 http://maven.apache.org/xsd/maven-4.0.0.xsd" >
< groupId> con. coffee< / groupId>
< artifactId> consul- demo< / artifactId>
< packaging> pom< / packaging>
< version> 1.0 - SNAPSHOT< / version>
< modelVersion> 4.0 .0 < / modelVersion>
< modules>
< module > consul- provider< / module >
< module > consul- consumer< / module >
< / modules>
< properties>
< spring- boot. version> 2.6 .0 < / spring- boot. version>
< spring- cloud. version> 2021.0 .0 < / spring- cloud. version>
< / properties>
< dependencyManagement>
< dependencies>
< dependency>
< groupId> org. springframework. boot< / groupId>
< artifactId> spring- boot- dependencies< / artifactId>
< version> ${ spring- boot. version} < / version>
< type> pom< / type>
< scope> import < / scope>
< / dependency>
< 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>
< pluginManagement>
< plugins>
< plugin>
< groupId> org. apache. maven. plugins< / groupId>
< artifactId> maven- compiler- plugin< / artifactId>
< configuration>
< source> 1.8 < / source>
< target> 1.8 < / target>
< compilerArgument> - parameters< / compilerArgument>
< / configuration>
< / plugin>
< plugin>
< groupId> org. springframework. boot< / groupId>
< artifactId> spring- boot- maven- plugin< / artifactId>
< executions>
< execution>
< goals>
< goal> repackage< / goal>
< / goals>
< configuration>
< mainClass> ${ main. class } < / mainClass>
< / configuration>
< / execution>
< / executions>
< / plugin>
< / plugins>
< / pluginManagement>
< / build>
< / project>
(三)服务提供者(consul-provider)
1. pom.xml 配置
< ? 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 http://maven.apache.org/xsd/maven-4.0.0.xsd" >
< parent>
< artifactId> consul- demo< / artifactId>
< groupId> con. coffee< / groupId>
< version> 1.0 - SNAPSHOT< / version>
< / parent>
< modelVersion> 4.0 .0 < / modelVersion>
< artifactId> consul- provider< / artifactId>
< 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- discovery< / artifactId>
< / dependency>
< dependency>
< groupId> org. springframework. boot< / groupId>
< artifactId> spring- boot- starter- actuator< / artifactId>
< / dependency>
< dependency>
< groupId> org. springframework. boot< / groupId>
< artifactId> spring- boot- starter- test< / artifactId>
< scope> test< / scope>
< / dependency>
< / dependencies>
< build>
< plugins>
< plugin>
< groupId> org. springframework. boot< / groupId>
< artifactId> spring- boot- maven- plugin< / artifactId>
< / plugin>
< / plugins>
< / build>
< / project>
2. application.yml 配置
server:
port: 8810
spring:
application:
name: consul- provider
cloud:
consul:
host: localhost
port: 8500
discovery:
serviceName: ${ spring. application. name}
3. Controller 编写
@RestController
public class ProviderController {
@GetMapping ( "/sayHello" )
public String sayHello ( @RequestParam ( "name" ) String name) {
return "Hello " + name + ", This is Spring Cloud Consul !" ;
}
}
4. 主启动类
@SpringBootApplication
@EnableDiscoveryClient
public class ConsulProviderApplication {
public static void main ( String [ ] args) {
SpringApplication . run ( ConsulProviderApplication . class , args) ;
}
}
(四)服务消费者(consul-consumer)
1. pom.xml 配置
< ? 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 http://maven.apache.org/xsd/maven-4.0.0.xsd" >
< parent>
< artifactId> consul- demo< / artifactId>
< groupId> con. coffee< / groupId>
< version> 1.0 - SNAPSHOT< / version>
< / parent>
< modelVersion> 4.0 .0 < / modelVersion>
< artifactId> consul- consumer< / artifactId>
< 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- discovery< / artifactId>
< / dependency>
< dependency>
< groupId> org. springframework. boot< / groupId>
< artifactId> spring- boot- starter- actuator< / artifactId>
< / dependency>
< dependency>
< groupId> org. springframework. boot< / groupId>
< artifactId> spring- boot- starter- test< / artifactId>
< scope> test< / scope>
< / dependency>
< / dependencies>
< build>
< plugins>
< plugin>
< groupId> org. springframework. boot< / groupId>
< artifactId> spring- boot- maven- plugin< / artifactId>
< / plugin>
< / plugins>
< / build>
< / project>
2. application.yml 配置
server:
port: 8820
spring:
application:
name: consul- consumer
cloud:
consul:
host: localhost
port: 8500
discovery:
serviceName: ${ spring. application. name}
3. Controller 编写
@RestController
public class ConsumerController {
@Autowired
private RestTemplate restTemplate;
@GetMapping ( "/sayHello" )
public String sayHello ( @RequestParam ( "name" ) String name) {
return restTemplate. getForObject ( "http://consul-provider/sayHello?name={1}" , String . class , name) ;
}
}
4. 主启动类
@SpringBootApplication
@EnableDiscoveryClient
public class ConsulConsumerApplication {
public static void main ( String [ ] args) {
SpringApplication . run ( ConsulConsumerApplication . class , args) ;
}
@LoadBalanced
@Bean
public RestTemplate restTemplate ( ) {
return new RestTemplate ( ) ;
}
}
(五)验证
分别启动consul-provider、consul-consumer 访问 http://localhost:8820/sayHello?name=consul,返回 “Hello consul, This is Spring Cloud Consul !” 则项目搭建成功。