java微服务的统一配置中心
2019-09-17 10:28:30来源:博客园 阅读 ()
java微服务的统一配置中心
为了更好的管理应用的配置,也为了不用每次更改配置都重启应用,我们可以使用配置中心
关于eureka的服务注册和rabbitMQ的安装使用(自动更新配置需要用到rabbitMQ)这里不赘述,只关注配置中心的内容
我们需要引入关键的包是这三个
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
需要在启动类加上@EnableConfigServer注解,这里有个busRefresh2方法需要讲下,其实这里有个坑,如果在github的webhook直接访问/actuator/bus-refresh是有json转换错误的,
因为github触发webhook的时候会带一大串字符,就是这段字符引发json转换错误,所以我们在这里包装下/actuator/bus-refresh
@SpringBootApplication @EnableDiscoveryClient @EnableConfigServer @RestController public class ConfigApplication { @PostMapping("/actuator/bus-refresh2") @ResponseBody public Object busRefresh2(HttpServletRequest request, @RequestBody(required = false) String s) { System.out.println(s); return new ModelAndView("/actuator/bus-refresh"); } public static void main(String[] args) { SpringApplication.run(ConfigApplication.class, args); } }
然后在配置文件上加上这些内容,主要是配置github上的配置文件的路径,配置rabbitMQ和启用bus-refresh端点。
spring: application: name: config cloud: config: server: git: uri: https://github.com/skychmz/config.git username: skychmz password: xxxxxxx rabbitmq: host: localhost username: guest password: guest management: endpoints: web: exposure: include: bus-refresh
如果某个服务需要使用配置中心,先引入以下包
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-client</artifactId> </dependency>
在yml配置文件上加上如下配置,主要是开启配置中心,我们的配置中心的服务名是CONFIG
spring: cloud: config: discovery: enabled: true service-id: CONFIG
把该服务的配置文件放到github,注意eureka的配置还是要放本地的,因为服务启动的时候要先访问eureka才会找到CONFIG服务
配置github的webhooks,这里我用的是内网穿透的地址
在需要刷新配置的地方加上@RefreshScope注解,这样就完成了。当我们更改github上的配置文件之后,GitHub就会触发webhook从而自动刷新配置。
最后提一下如果zuul网关服务也需要自动刷新配置的话可以在启动类加一个方法返回一个ZuulProperties(),当然还要加上@RefreshScope注解
@SpringBootApplication @EnableZuulProxy public class ApiGatewayApplication { public static void main(String[] args) { SpringApplication.run(ApiGatewayApplication.class, args); } @ConfigurationProperties("zuul") @RefreshScope public ZuulProperties zuulProperties() { return new ZuulProperties(); } }
原文链接:https://www.cnblogs.com/skychmz/p/11503924.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash