Spring Consul服務註冊

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去作爲健康檢查的地址

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章