## monitor-spring-boot-starter
### 简介
- 本模块实现了一个定时监控并推送通知的服务,适用于处理一些定时监控并实时通知的场景,举个栗子,可以用来监控火车票,当检测到有票之后触发通知,通过配置好的通知方式告知我们,目前内置了邮件通知、日志输出方式,以及自定义通知。
### 引入
```java
com.hxuanyu
monitor-spring-boot-starter
1.0.4
```
### 使用
- 创建监控项
```java
@MonitorItem(cron = "0/20 * * * * *")
public class TestMonitorItem extends BaseMonitorItem {
private final Logger logger = LoggerFactory.getLogger(TestMonitorItem.class);
@Override
public CheckResult check() {
double random = Math.random();
int result = (int) (random * NotifyType.values().length);
logger.info("随机索引值:{}", result);
if (NotifyType.values().length > 0) {
NotifyType notifyType = NotifyType.values()[result];
switch (notifyType) {
case TYPE_LOG:
return CheckResult.triggered("日志输出", NotifyType.TYPE_LOG);
case TYPE_CUSTOM:
return CheckResult.triggered(new NotifyService.CustomNotify() {
@Override
public void onNotify() {
logger.info("自定义通知");
}
});
case TYPE_MAIL:
return CheckResult.triggered(new Mail("2252193204@qq.com", "测试邮件主题", "测试邮件内容"), NotifyType.TYPE_MAIL);
case TYPE_MSG:
return CheckResult.triggered("短信通知", NotifyType.TYPE_MSG);
default:
return CheckResult.triggered("默认通知", null);
}
}
return CheckResult.nonTriggered();
}
}
```
> MonitorManager会在启动时扫描标注了`@MonitorItem`的类,并创建对应的实例,定时执行类中实现的`check()`方法,当方法返回`CheckResult`的`triggered`字段为`true`时,会自动执行`CheckResult`中传入的通知。
- 新增任务
```java
Msg msg = monitorItemBeanManager.addMonitorTask(new BaseMonitorItem("CustomBean", "0/10 * * * * *") {
@Override
public CheckResult check() {
return CheckResult.triggered("动态新增通知", NotifyType.TYPE_LOG);
}
});
```
- 定时任务管理器:用于修改监控间隔、删除任务或者查看当前所有任务
```java
@Resource
MonitorItemBeanManager monitorItemBeanManager;
```
- 查看任务列表
```java
Map monitorItemMap = monitorItemBeanManager.getMonitorItemMap();
```
- 设置任务监控频率
```java
Msg msg = monitorItemBeanManager.setMonitorTaskCron(taskId, taskCron);
```
- 移除定时任务
```java
Msg msg = monitorItemBeanManager.deleteMonitorTask(taskId);
```