Consul5-springboot2使用consul做为配置中心
上面的链接是我整理的consul的一系列博文,本篇博文基于
Consul5-springboot2使用consul做为配置中心
之上写的,使用consul作为服务调用中心
一,创建一个springboot项目
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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.jack</groupId>
<artifactId>consul_study5</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>consul_study5</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR2</spring-cloud.version>
</properties>
<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-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.45</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</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>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2,主类代码如下
package com.jack.consul_study5;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ConsulStudy5Application {
public static void main(String[] args) {
SpringApplication.run(ConsulStudy5Application.class, args);
}
}
3,写一个controller作为服务提供提供者
package com.jack.consul_study5.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* create by jack 2019/9/3
*
* @author jack
* @date: 2019/9/3 21:41
* @Description:
*/
@RestController
@RequestMapping("consul5")
public class TestController {
@RequestMapping("test")
public String test(String name) {
return "consul5 test,"+name;
}
}
4,在resource目录下创建bootstrap.yml文件
内容如下:
server:
port: 8082
spring:
application:
name: consul5
cloud:
consul:
#配置consul服务器的host
host: localhost
#配置端口
port: 8500
config:
#配置默认文件名
default-context: ${spring.application.name}
#是否启用consul配置
enabled: true
#配置文件格式
format: YAML
#配置基本文件,默认值config
prefix: jack
#配置文件名,默认data
data-key: data
discovery:
#是否启用服务发现
enabled: true
#配置健康检查路径
health-check-path: /actuator/health
#配置健康检查时间间隔
health-check-interval: 15s
#配置实例id
instance-id: ${spring.application.name}:${vcap.application.instance_id:${spring.application.instance_id:${random.value}}}
#配置服务注册
register: true
#服务停止时取消注册,http://www.imooc.com/article/286883?block_id=tuijian_wz
deregister: true
#表示注册时使用ip而不是hostname
prefer-ip-address: true
#健康检查失败多长时间取消注册
health-check-critical-timeout: 30s
profiles:
active: dev
有两个空的文件,application-dev.yml,和application.yml,实际项目可以用来配置其他的东西
5,启动新的服务
在consul可以看到现在注册了两个服务了,健康检查正常两个服务了
二,修改consul4的springboot项目
在Consul5-springboot2使用consul做为配置中心博文的基础上改,
1,新增一个接口
代码如下:
package com.jack.consul4.service;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
/**
* create by jack 2019/9/3
*
* @author jack
* @date: 2019/9/3 21:43
* @Description:
*/
@FeignClient("consul5")
public interface HelloService {
@RequestMapping(value = "/consul5/test",produces ="application/json" )
String hello(@RequestParam("name") String name);
}
2,在控制器新增一个测试方法,test2
package com.jack.consul4.controller;
import com.alibaba.fastjson.JSONObject;
import com.jack.consul4.config.StudentConfig;
import com.jack.consul4.service.HelloService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* create by jack 2019/9/3
*
* @author jack
* @date: 2019/9/3 20:17
* @Description:
*/
@RestController
@RequestMapping("test")
public class TestController {
@Autowired
private StudentConfig studentConfig;
@Autowired
private HelloService helloService;
@RequestMapping("test1")
public String test1(){
return JSONObject.toJSONString(studentConfig);
}
@RequestMapping("test2")
public String test2(String name){
return JSONObject.toJSONString(helloService.hello(name));
}
}
然后重启服务
三,测试
1,使用postman请求接口:http://localhost:8081/test/test2?name=jack
返回数据如下:
"consul5 test,jack"
请求成功,说明使用springboot2,基于consul的服务调用成功了
源码:源码1
源码:源码2
学习交流群:331227121