您的位置:首页 > 编程语言 > Java开发

SpringCloud之Consul

2019-06-06 12:59 295 查看

consul

服务的注册中心与配置中心

consul作为注册中心

下载启动consul
新建一个maven项目
项目pom
多加如下依赖

<!--监控配置中心文件刷新-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--consul的配置中心功能-->
<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>

bootstrap.yml

spring:
application:
name: myconsul
cloud:
consul:
host: localhost
port: 8500
server:
port: 8080

StartApp

@SpringBootApplication
//此注解自动将服务注册到consul或zk上,除eureka外
@EnableDiscoveryClient
public class StartApp {
public static void main(String[] args) {
SpringApplication.run(StartApp.class, args);
}
}

浏览器访问

consul作为配置中心

和上述代码一样
修改bootstrap.yml文件内容 注意:一定是bootstrap 而不是application 否则获取不到consul上面的值

spring:
application:
name: myconsul
cloud:
consul:
host: 127.0.0.1
port: 8500
discovery:
enabled: true
register: true
#healthCheckInterval: 15s
health-check-timeout: 1s
instance-id: ${spring.application.name}-${spring.cloud.consul.host}-${spring.cloud.consul.port}
serviecName: ${spring.application.name}
config:
enabled: true #false禁用Consul配置,默认true
format: YAML    # 表示consul上面文件的格式 有三种 YAML JSON HCL
#data-key: configuration    #表示consul上面的KEY值(或者说文件的名字) 默认是data
data-key: data    #表示consul上面的KEY值(或者说文件的名字) 默认是data
#prefix设置配置值的基本文件夹
#defaultContext设置所有应用程序使用的文件夹名称
#profileSeparator设置用于使用配置文件在属性源中分隔配置文件名称的分隔符的值
profiles:
active: dev
server:
port: 8080
#actuator 开启所有节点监控
management:
endpoints:
web:
exposure:
include: "*"

新建一个内容为空的bootstrap-dev.yml文件

consul上新建key-value

key-value说明

输入key和value
key:config/myconsul,dev/data
value:
myName: consul
user:
name: consul
age: 23
sex: 男

a、默认情况下,consul配置默认存储在/config文件夹中
b、myconsul为spring.application.name值,dev为spring.profiles.active值,data为data-key值
c、value用的是yaml格式的配置,冒号后面有一个空格。

User

@Data
@ConfigurationProperties(prefix = "user")
public class User {
private String name;
private String age;
private String sex;
}

StartApp

@SpringBootApplication
//此注解自动将服务注册到consul或zk上
@EnableDiscoveryClient
@EnableConfigurationProperties({User.class})
public class StartApp {
public static void main(String[] args) {
SpringApplication.run(StartApp.class, args);
}
}

UserController

@RestController
//监控consul配置中心文件是否修改,不加此注解修改consul后的值后下面获取到的值不是最新值
@RefreshScope
public class UserController {
@Autowired
private User user;

@Value("${myName}")
private String name;

@RequestMapping(value = "getUser", method = RequestMethod.GET)
public User getUser() {
return user;
}

@RequestMapping(value = "getName", method = RequestMethod.GET)
public String getName() {
return name;
}
}


修改age为25,myName 为consul22
使用postman的post请求方式,调用接口localhost:8080/actuator/refresh 刷新,不掉此接口值也不刷新




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: