问题
由于适应公司不断发展带来的,售后问题,要求我们要对所有服务进行,主动检查.避免服务异常,造成损失。在这里将该项目的思路及springboot的自动化配置使用分享给大家,希望共同进步。学习。有共同爱好的童鞋,可以点击关注小编,如果看完本文想学习下源码,可以私信我,发送autoconfig关键字获取,地址。
目前的方式是这样:
网关部门定时扫描各个服务,进行监控状态检查,并通知给指定负责人.
实现逻辑:
1. 要求每个线上服务暴露一个/status 地址,并返回指定json,将项目中依赖的数据库连接信息返回
实现要求:
1. 组件式开发
2. 引入即可用,自动监控项目中数据库连接
3. 暴露一个指定的可供网关扫描的地址
技术实现方式:
1. 引入spring-boot-autoconfigure自动配置
2. 引入spring-boot-actuator 使用EndPoint 定制暴露给网关的扫描地址
1. 在autoconfigure中实现定制url的方式是这样的,而不是使用@RequestMapping注解,id就是我们的url,其他属性见注释,非常清楚
2. 加入配置信息,交给合项目负责人维护
3 .导入我们定制的节点
4. 数据库的健康我们按照Spring的套路来
首先定义个接口,然后是抽象模板类,然后是各个数据源的实现类
Mongo检查
消息队列检查
5. 将以上数据检查组件都加入到配置中
注意,要判断,如果服务中没有引入过 Mongodb等数据源,就不要注入,否则强制注入会保存,这里要注意下,这几个注解的意思。这里就不介绍了。
6 . 将这些配置交给autoconfigure 管理,通过服务中的springboot main 启动中@EnableAutoConfiguration 引入,我们组建中的配置。
7 .重点来了,看我们的工具类怎么写的,逻辑就是
从上下文中获取到我们项目中依赖的数据源,首先要判断是否存在,并实现IStatus继承抽象接口中status()方式返回boolean来判断是否数据源连接状态,并返回json给网关,执行EndPoint中的invoke方法返回
8 .使用方法
application.yml 中添加
应用启动验证
接口验证
看到这里,基本就介绍完了,是不是很简单,其实没什么难点,spring是契约式开发,没有会不会一说,只有会不会用,看的多了就会了。最后感谢你的阅读!感兴趣的同学可以关注小编,会不断分享实战知识给大家。如果你发现有错误,请提出宝贵意见,会及时改正!谢谢