报警系统设计
2019-03-02 本文已影响148人
Real_man
在开发的过程中,经常会出现一些意料之外的情况,而这些情况在方案设计之前一般要尽量想到,虽然情况可能匪夷所思,但还是要处理,一般的方式就是将出现的情况通过报警的方式发送给项目的相关负责人员,开发人员。
这里看下一个简单的报警系统
功能
首先要有一个对外使用的客户端AlarmClient,可以发短信,邮件,或者一起发送
- 报警(同时发送邮件与短信)
- 发短信(可根据用户,用户组发送)
- 发邮件(可根据用户,用户组发送)
模型
所有模型一般都有必备的几个字段:
主键,是否有效,创建时间,创建人,修改时间,修改人,备注
用户
- 姓名
- 手机
- 邮箱
- 属组
用户组
- 组名
任务
- 报警关键字
- 任务类型
- 发送次数
- 任务状态,(成功,失败,未发送)
- 报警信息id
报警信息
- 报警类型(根据关键字,短信,邮件,邮件&短信)
- 报警关键字id
- 报警短信的具体信息
- 报警邮件具体内容
- 发送时间
- 邮箱地址
- 手机号
- 发送端ip
- 报警消息状态(新建,已发送,未发送,禁用)
报警用户组配置
- 报警关键字id
- 用户组id
- 用户配置id
- 是否发送邮件
- 是否发送短信
报警用户配置
- 报警关键字id
- 用户id
- 是否发送短信
- 是否发送邮件
报警关键字
- 关键字
- 关键字描述
实现
报警虽然紧急,但可以异步执行,通过接受MQ消息来进行报警。
- AlarmMQListener
- AlarmMsgHandlerService
- 可以直接发送
- 也可以再次异步处理,将消息转换成任务,再次将任务进行批量发送。
这边用的是Disruptor框架,进行消息转换,任务发送,短信与邮件属于基本的工具类,封装好即可,两种发送方式单独配置线程池。
关于AlarmClient,利用所学设计模式可进行再次封装为便捷易用的工具类
image-20190302093823809 image-20190302094453485最后
仅供参考