在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:quick-alarm开源软件地址:https://gitee.com/liuyueyi/quick-alarm开源软件介绍:一个可扩展的报警系统Quick-AlarmI. 背景日常的系统中,报警是不可缺少的一环,目前报警方式很多,最常见的有直接打日志,微信报警,短信报警,邮件报警等;而涉及到报警,一般不可避免的需要提前设置一些基本信息,如报警方式,报警频率,报警用户,开关等; 另外一个常见的问题是一般采用的是单一的报警方式,比如不管什么类型的报警全部都用短信方式触达,然后就会发现手机时常处于被淹没的状态了,久而久之对报警短信就不会敏感了 II. 目标因此我们准备设计一个通用的报警框架
通过做一个东西,当然是希望可以带来一些用处,或者能学习到什么东西,才不枉花费精力来折腾一下,那么我们这个报警系统,究竟有什么用,或者可以从中学习到什么东西呢? 用途:
学习: 抛开特有的知识点,可以抽象一些公共可用的地方,大概就下面这两点了
III. 设计整体来说,报警主要可以划分为三个步骤,如下:
从任务划分上来看,比较清晰简单,但是每一块的内容又必须可以拓展,
根据上面的拆解,在应用启动的时候,就有一些事情必须去做了
下图显示在应用启动时,报警规则解析的相关步骤 至于报警执行器的加载就比较简单了,如下图 因此,整个的工作流程如下图 IV. 任务拆解通过前面的任务设计之后,对需要做的东西有了一个大概的脉络了,因此在正式操刀实现之前,下对整个架构进行任务拆解,看下可以具体的执行步骤可以怎么来
所以,通过上面的分析可以看出,这个系统的结构还是蛮简单的,整个只需要四个部分就可以搞定,其中最主要的就是前面两个了,后面将分别说明 V. 整体说明0. 简单使用casea. 引入依赖基于maven项目,如下配置 先添加仓库 <repositories> <repository> <id>yihui-maven-repo</id> <url>https://raw.githubusercontent.com/liuyueyi/maven-repository/master/repository</url> </repository></repositories> 引入依赖 <dependency> <groupId>com.hust.hui.alarm</groupId> <artifactId>core</artifactId> <version>1.0</version></dependency> 也可以直接在将代码拷贝下来使用 b. 添加基本配置文件如果使用系统默认的配置注册方式,则在项目的资源目录下新增文件 alarm.properties ## 应用名,必填appName=test## 报警规则文件所在的路径,如果采用系统默认加载方式,必填## / 开头,表示存的是绝对路径## 非/开头,表示存的是系统相对路径,一般是放在资源目录下alarmConfPath=/tmp/alarmConfig## 最大的报警类型,非必填maxAlarmType=1000## 默认报警用户,必填defaultAlarmUsers=yihui 请注意其中的 (说明,外层的key为报警类型,default为默认的兜底规则,支持多个报警规则共享一个配置项,只需要用英文逗号分割即可,如下面的NPE, SELFDEFINE两种报警类型) { "default": { "level": "NONE", "autoIncEmergency": true, "max": 30, "min": 3, "threshold": [ { "level": "LOG", "threshold": 5, "users": [ "yihui", "erhui" ] } ], "users": [ "yihui" ] }, "NPE,SELFDEFINE": { "level": "LOG", "autoIncEmergency": false, "max": 30, "min": 0, "threshold": [ { "level": "SMS", "threshold": 20, "users": [ "345345345345", "123123123123" ] }, { "level": "WEIXIN", "threshold": 10, "users": [ "小灰灰Blog", "greyBlog" ] } ], "users": [ "yihui" ] }} c. 报警调用一个测试case如下 @Testpublic void sendMsg() throws InterruptedException { String key = "NPE"; String title = "NPE异常"; String msg = "出现NPE异常了!!!"; AlarmWrapper.getInstance().sendMsg(key, title, msg); // 不存在异常配置类型, 采用默认报警, 次数较小, 则直接不输出 AlarmWrapper.getInstance().sendMsg("zzz", "不存在xxx异常配置", "报警嗒嗒嗒嗒"); // 确保报警执行完毕,再退出任务 Thread.sleep(1000);} d. 更多对于如何扩展自定义报警执行器,如何使用自定义的配置文件加载类替换系统的,可以参考更详细文档: 报警系统QuickAlarm使用手册 如有任何问题,随时欢迎联系,通过issuse,email,微博都可以 这是个人信息主页: 小灰灰Blog 1. 相关文档所有文档可以在个人博客查看汇总: v0.1版相关文档
v0.2版改进文档 2. 历程
3. todoList
4. 版本说明
VI. 其他个人博客: 一灰灰blog基于hexo + github pages搭建的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛 声明尽信书则不如,以上内容,纯属一家之言,因本人能力一般,见识有限,如发现bug或者有更好的建议,随时欢迎批评指正,我的微博地址: 小灰灰Blog 扫描关注公众号&博客 打赏码 |
请发表评论