一、consul安裝
2、選擇版本:本人開發環境是windows,所以選擇win64;
3、安裝:保存至D:/SpringCloud/consul(自定義路徑,linux將保存路徑加到PATH),執行consul -v,沒報錯說明安裝成功;
4、啟動consul:搭建集群環境至少需要3個節點,本次只介紹本地開發調試,使用開發者模式啟動即可,進入consul文件夾,執行consul agent -dev;
5、檢驗是否啟動成功:打開瀏覽器,訪問
http://localhost:8500
從界面可以看到consul能做什么:服務發現、健康檢查、K/V存儲、多數據中心;
二、新建Srping Cloud Consul項目(此文僅為記錄,以下源碼參考重新定義springcloud示例)
1、創建Maven父級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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>code</artifactId>
<groupId>cn.springcloud.book</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ch13-1</artifactId>
<packaging>pom</packaging>
<modules>
<module>ch13-1-consul-provider</module>
<module>ch13-1-consul-consumer</module>
<!--<module>ch13-1-consul-config</module>-->
</modules>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-all</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<!-- 管理依賴 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!--注意: 這里必須要添加,否則各種依賴有問題 -->
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/libs-milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
</project>
2、創建consul-provider模塊
pom文件繼承父級即可,創建啟動入口類ConsulProviderApplication:
/**
* consul-server 的啟動主類
* 為了簡化代碼,我們將 Controller 代碼放在主類中,實際工作中不建議這么做
*/
@RestController
@SpringBootApplication
public class ConsulProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ConsulProviderApplication.class, args);
}
/**
* 注意:新版Spring Cloud Consul 默認注冊健康檢查接口為:/actuator/health
*
* @return SUCCESS
*/
@GetMapping("/actuator/health")
public String health() {
return "SUCCESS";
}
/**
* 提供 sayHello 服務:根據對方傳來的名字 XX,返回:hello XX
* @return String
*/
@GetMapping("/sayHello")
public String sayHello(String name){
return "hello," + name;
}
}
在bootstrap.yml添加配置信息:
server:
port: 8081 # 因為本地啟動,防止端口沖突
spring:
application:
name: consul-provider
cloud:
consul:
host: 127.0.0.1 # consul 啟動地址
port: 8500 # consul 啟動端口
3、創建consul-consumer模塊
這里我們使用Spring Cloud Openfeign作為服務調用組件,因此要在consul-consumer的pom引入以下依賴:
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
創建啟動入口類ConsulConsumerApplication:
/**
* consul-consumer 的啟動主類
* 為了簡化代碼,我們將 Controller 代碼放在主類中,實際工作中不建議這么做
*/
@RestController
@SpringBootApplication
@EnableFeignClients
public class ConsulConsumerApplication {
/** 調用 hello 服務*/
@Autowired
private HelloService helloService;
@GetMapping("/actuator/health")
public String health(){
return "SUCCESS";
}
/** 接收前端傳來的參數,調用遠程接口,並返回調用結果 */
@GetMapping("/hello")
public String hello(String name){
return helloService.sayHello(name);
}
public static void main(String[] args) {
SpringApplication.run(ConsulConsumerApplication.class,args);
}
}
添加fegincliet類HelloService
/** 使用 openfeign 組件,調用遠程服務 */
@FeignClient("consul-provider")
public interface HelloService {
@RequestMapping(value = "/sayHello",method = RequestMethod.GET)
String sayHello(@RequestParam("name") String name);
}
在bootstrap.yml添加配置信息:
server:
port: 8082 # 因為本地啟動,防止端口沖突
spring:
application:
name: consul-consumer
cloud:
consul:
host: 127.0.0.1 # consul 啟動地址
port: 8500 # consul 啟動端口
三、效果展示
1、啟動consul;
2、啟動consul-provider和consul-consumer;
3、瀏覽器輸入http://localhost:8500,如果services->Health Checks顯示綠色勾選,即表示發布成功;
4、瀏覽器輸入
http://localhost:8082/hello?name=bootbook,如果“hello bootbook”,那么恭喜你,發布成功了。
