環(huán)境
- JDK1.8
- docker
- springcloud 版本:Hoxton.SR12
安裝consul

image
- 拉取鏡像
- 運行consul 服務

image

image
consumer/provider
provider
- pom依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
- application.yml
server:
port: 10002
spring:
application:
name: consul-provider
cloud:
consul:
host: localhost
port: 8500
discovery:
health-check-path: /heath #consul 健康檢查路徑,默認為/actuator/heath 這個需要引入actuator相關的依賴,我這里沒有引入這個依賴,所以寫了一個接口
- 代碼
@SpringBootApplication
@EnableDiscoveryClient
public class ConsulProviderMain {
public static void main(String[] args) {
SpringApplication.run(ConsulProviderMain.class, args);
}
}
@RestController
public class HelloController {
private final static Logger LOGGER = LoggerFactory.getLogger(HelloController.class);
@GetMapping("/hello")
public String hello() {
LOGGER.info("provider start hello ----------------------");
return "hello";
}
@GetMapping("/heath")
public String heath(){
return "ok";
}
}
- 服務啟動,看consul控制臺

image
consumer
- pom依賴
<!-- 引入feign -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</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-web</artifactId>
</dependency>
- yml文件
server:
port: 10003
spring:
application:
name: consul-consumer
cloud:
consul:
host: localhost
port: 8500
discovery:
health-check-path: /heath
- 代碼
@EnableDiscoveryClient
@EnableFeignClients
@SpringBootApplication
public class ConsulConsumerMain {
public static void main(String[] args) {
SpringApplication.run(ConsulConsumerMain.class, args);
}
}
@RestController
public class HelloController {
private final static Logger LOGGER = LoggerFactory.getLogger(HelloController.class);
@Autowired
private HelloFacade helloFacade;
@GetMapping("/hello")
public String hello(){
LOGGER.info("consumer start hello--------------------------------------");
return helloFacade.hello();
}
@GetMapping("/heath")
public String heath(){
return "ok";
}
}
@FeignClient(name = "consul-provider")
public interface HelloFacade {
@GetMapping("/hello")
String hello();
}
- 服務啟動

image
- 服務調用

image
附錄
- 服務健康檢查異常
agent: Check is now critical: check=service:consul-provider-10002

image
沒有引入actuator,需要自己寫健康檢查接口

image