consul-系统学习3-springBoot整合Consul

一、springBoot+Consul注册中心

1.1、代码

consul-系统学习3-springBoot整合Consul_第1张图片

pom.xml



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.2.1.RELEASE
         
    
    fei.zhou
    consul-01
    0.0.1-SNAPSHOT
    consul-01

    
        1.8
    

    
        
        
            org.springframework.cloud
            spring-cloud-starter-consul-discovery
        

        
            org.springframework.boot
            spring-boot-starter-web
        
    

    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                Greenwich.SR3
                pom
                import
            
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


Consul01Application
package fei.zhou.consul01;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class Consul01Application {
    
    public static void main(String[] args) {
        SpringApplication.run(Consul01Application.class, args);
    }
    
}

application.properties

server.port=8010
spring.application.name=consul-01

# consul 配置
spring.cloud.consul.host=60.205.188.229
spring.cloud.consul.port=8500
spring.cloud.consul.discovery.health-check-path=/actuator/health
# 注册到 Consul 的服务名称,后期客户端会根据这个名称来进行服务调用
spring.cloud.consul.discovery.service-name=consul-01
spring.cloud.consul.discovery.heartbeat.enabled=true 

management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always

1.2、核心代码

consul-系统学习3-springBoot整合Consul_第2张图片

consul-系统学习3-springBoot整合Consul_第3张图片

consul-系统学习3-springBoot整合Consul_第4张图片

1.3、效果

consul-系统学习3-springBoot整合Consul_第5张图片

二、springBoot+Consul注册中心+配置中心

对原有的代码进行改造

2.1、代码

consul-系统学习3-springBoot整合Consul_第6张图片

pom.xml



	4.0.0
	
		org.springframework.boot
		spring-boot-starter-parent
		2.2.1.RELEASE
		 
	
	fei.zhou
	consul-01
	0.0.1-SNAPSHOT
	consul-01

	
		1.8
	

	
		
		
			org.springframework.cloud
			spring-cloud-starter-consul-discovery
		

		
		
			org.springframework.cloud
			spring-cloud-starter-consul-config
		

	 
		
			org.projectlombok
			lombok
		
		
			org.springframework.boot
			spring-boot-starter-web
		
	

	
	
		
			
				org.springframework.cloud
				spring-cloud-dependencies
				Greenwich.SR3
				pom
				import
			
		
	

	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
			
		
	


bootstrap.properties

server.port=8010
spring.application.name=consul-01

# consul ip
spring.cloud.consul.host=60.205.188.229
# consul 端口
spring.cloud.consul.port=8500
# 健康检测API
spring.cloud.consul.discovery.health-check-path=/actuator/health
# 注册到 Consul 的服务名称,后期客户端会根据这个名称来进行服务调用
spring.cloud.consul.discovery.service-name=consul-01
# 使用心跳检查push机制定期向consul server汇报自身存活情况,逾期没有汇报则server认为异常。
spring.cloud.consul.discovery.heartbeat.enabled=true 
# 列出公开端点的ID
management.endpoints.web.exposure.include=*
# 详细信息显示给所有用户
management.endpoint.health.show-details=always

#让服务以ip的方式注册
spring.cloud.consul.discovery.prefer-ip-address=true


#  开启配置中心
spring.cloud.consul.config.enabled=true 
# consul创建key值与环境的分隔符
spring.cloud.consul.config.profile-separator=-

# 配置文件的文件格式
spring.cloud.consul.config.format=properties
# 配置文件的存储的根路径,默认为config
spring.cloud.consul.config.prefix = config
# 配置文件存储key的值,或者理解为文件的名称,默认为data
spring.cloud.consul.config.data-key = data
# 启用配置自动刷新
spring.cloud.consul.config.watch.enabled=true
# 刷新延迟时间,单位:秒
spring.cloud.consul.config.watch.wait-time=1
# 刷新频率,单位:毫秒
spring.cloud.consul.config.watch.delay=10000

DemoController

@RestController
public class DemoController {
    @Autowired
    private OrderProperties orderProperties;

    @RequestMapping("/search")
    public String searchDiscount() {
        return orderProperties.toString();
    }
}

OrderProperties

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component;


@ConfigurationProperties("order")
//动态刷新配置
@RefreshScope
@Data
@Component
public class OrderProperties {
    private Integer discount = 100;
}

2.2、代码变化的地方

consul-系统学习3-springBoot整合Consul_第7张图片

consul-系统学习3-springBoot整合Consul_第8张图片

consul-系统学习3-springBoot整合Consul_第9张图片

consul-系统学习3-springBoot整合Consul_第10张图片

注意点:

  1. 配置文件要用bootstrap.properties文件
    1. 配置中心默认加载bootstrap.(yml|yaml|properties)配置文件

2.3、启动项目

consul-系统学习3-springBoot整合Consul_第11张图片

consul-系统学习3-springBoot整合Consul_第12张图片

2.4、修改consul的配置

consul-系统学习3-springBoot整合Consul_第13张图片

order.discount=60 
config/consul-01/data

01、文件夹解释

  1. config

     配置文件的存储的根路径,默认为config
     spring.cloud.consul.config.prefix = config
    
  2. consul-01

     spring.application.name=consul-01
    
  3. data

     # 存储key的文件名称,默认为data
     spring.cloud.consul.config.data-key = data
    

02、效果

修改consul的配置后,日志输出拉取最新的配置

consul-系统学习3-springBoot整合Consul_第14张图片

重新请求后,发现内容改变

consul-系统学习3-springBoot整合Consul_第15张图片

代码位置

https://gitee.com/DanShenGuiZu/learnDemo/tree/mysql_mybaties_DB/consul-learn

你可能感兴趣的:(consul-系统学习3-springBoot整合Consul)