1.pom依賴
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.SR2</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<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>
</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>
因爲各版本互相依賴,這裏用了spring 2.x的版本
2.在啓動類中加入@EnableDiscoveryClient
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class MainStart {
public static void main(String[] args) {
SpringApplication.run(MainStart.class, args);
}
}
3.新建Rest接口
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ConsulProviderApplication {
/**
* 獲取啓動節點的端口
*/
@Value("${server.port}")
private int port;
@RequestMapping("/hiconsul")
public String hello() {
return "hello : " + port;
}
}
4.加入配置
server.port=8082
spring.application.name=provider
spring.cloud.consul.host=10.228.131.99
spring.cloud.consul.port=8500
#註冊到consul的服務名稱
spring.cloud.consul.discovery.serviceName=service-producerv
spring.cloud.consul.discovery.hostname=xxx.xxx.xxx.xxx
spring.cloud.consul.discovery.prefer-ip-address=true
spring.cloud.consul.discovery.ip-address=XXX.xxx.xxx.xxx
spring.cloud.consul.discovery.tags:foo=bar, baz
spring.cloud.consul.discovery.health-check-path=/actuator/health
因爲採用了actuator,所以這個健康檢查的路徑需要填寫
spring.cloud.consul.discovery.health-check-path=/actuator/health
不然會報錯 is now critical
如果是註冊到不是本機的consul上,需要添加
spring.cloud.consul.discovery.prefer-ip-address=true
spring.cloud.consul.discovery.ip-address=
不然他會用hostname去作爲健康檢查的地址