-
-
Notifications
You must be signed in to change notification settings - Fork 11.4k
新增(企业微信、飞书、钉钉、webhook)告警实现,以及新增任务执行失败后停止的功能,避免重复执行失败任务 #3741
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
- 新增 AlarmTypeEnum 枚举类,定义不同告警类型 - 实现 BaseAlarm 类,提供告警基础功能- 添加 DingDingJobAlarm 和 FeishuJobAlarm 类,实现钉钉和飞书告警- 修改 EmailJobAlarm 类,支持新的告警类型 - 更新 JobAlarmer 类,支持多种告警方式 - 调整前端界面,增加告警类型和 URL 相关字段
-将 StringBuffer 替换为 StringBuilder,提高性能 - 新增任务执行失败后停止的功能,避免重复执行失败任务 - 更新任务失败停止时的日志记录和数据库状态更新
- 调整了 XxlJobInfoMapper.xml 中 alarmUrl 和 alarmType 字段的顺序- 优化了数据库表结构,使报警相关字段更加集中
- 在 JobAlarmer 类中的报警逻辑中添加了日志输出 - 日志输出包括报警类型,以便更好地追踪和调试
- 为 ReturnT 类添加 @serial 注解以标识 serialVersionUID - 修改 SUCCESS 和 FAIL 常量的初始化方式,增加默认消息 - 在 XxlJobTrigger 中简化 ReturnT 对象的创建和使用
- 修改了 BaseAlarm 和 EmailJobAlarm 类中的告警内容格式 - 使用更清晰和统一的表述方式 - 在 EmailJobAlarm 中添加了 HTML 格式化的告警内容 - 调整了告警内容的顺序和结构,提高了可读性
|
从tomj2ee的xxl-job合并后加以优化。tomj2ee的项目地址:https://github.com/tomj2ee/xxl-job |
- 在 XxlJobCompleter 和 XxlJobTrigger 中添加任务失败后停止的逻辑 - 在 XxlJobInfoDao 中新增 stop 方法,用于停止任务 - 更新 XxlJobInfoMapper.xml,添加 stop 方法的 SQL语句 - 修改 XxlJobServiceImpl 中的 stop 方法,使用新的 stop 方法
- 在 XxlJobInfoDaoTest.java 文件中,将 setAlarmEmail 方法替换为 setAlarmUrl - 此修改可能是为了支持更灵活的报警方式,如 Webhook 等
- 新增 ApiAuthTokenInterceptor 实现 API token验证 - 重构 JobApiController,使用拦截器进行权限验证- 更新 WebMvcConfig,添加 API token 验证拦截器 - 优化 XxlJobRemotingUtil 中的 HTTP 请求处理 - 在示例任务中添加异常抛出测试
- 将 logger 声明从 private 修改为 private final - 删除未使用的 Map 导入
- 将 logger 定义从 private static transient 修改为 private static final transient - 修正异常日志打印方法,使用正确的参数格式 - 使用泛型构造函数简化 ReturnT 对象的创建
- 将类名从 JobApiController 改为 AdminApiController,以更好地反映该控制器的功能 - 删除了一些未使用的导入语句,简化了代码结构
- 新增 JobApiController、XxlJobApiService 和 XxlJobApiServiceImpl 类 - 实现任务添加、移除、启动和停止的接口 - 增加定时结束任务的逻辑,包括结束时间和结束任务处理器的设置 - 新增 XxlJobInfoBo 类作为任务信息的传输对象
- 添加 maven-source-plugin、maven-javadoc-plugin、spring-boot-maven-plugin等插件 - 更新 maven-compiler-plugin 配置,支持 Java 17 -优化 pom.xml 文件格式,增加可读性
- 使用 isEmpty() 替代 trim().length()==0 判断字符串是否为空 - 使用 StringBuilder 替代字符串拼接提高性能 - 统一代码风格,提升可读性
- 在 XxlJobInfo模型中添加 endTime 字段,用于记录任务结束时间 - 在数据库中添加相应的 endTime 列 - 实现任务结束时间的前端展示和后端处理逻辑 - 优化任务调度逻辑,支持根据结束时间停止任务
- 在 jobinfo.index.1.js 和 jobinfo.index.ftl 中添加任务上次执行时间(triggerLastTime)列 - 调整任务信息表格各列的宽度,以适应新增字段 - 在 message_*.properties 文件中添加对应的国际化支持
- 在数据库中添加触发时间索引,提高查询效率 - 增加任务下次执行时间和结束时间的输入框和验证逻辑 - 优化任务调度逻辑,支持指定下次执行时间 - 修复任务结束时间小于当前时间的校验问题 - 优化国际化文案,增加新的提示信息
- 添加 setJobInfoDefaultVal 方法,用于设置作业信息的默认值- 在 addJob 方法中调用该方法,为新建作业设置以下默认值: - 作者:SYSTEM - 执行超时时间:0 - 失败重试次数:1 - Glue 类型:BEAN - 执行器路由策略:LEAST_FREQUENTLY_USED - 漏火策略:DO_NOTHING -执行器阻塞策略:SERIAL_EXECUTION
|
发现了这些问题,多个告警实现类(DingDingJobAlarm、FeishuJobAlarm等)有相似的代码结构,可以考虑抽象出公共父类。 |
告警代码我已经重构了,后面重新提交。 |
- 新增 AbstractJobAlarm 抽象类,实现 JobAlarm 接口的通用逻辑- 重构 DingDingJobAlarm、EmailJobAlarm、FeishuJobAlarm、WebChatJobAlarm 和 WebHookJobAlarm 类,使其继承自 AbstractJobAlarm - 新增 EmailMsg 类用于封装邮件消息 - 优化告警消息的创建和发送逻辑,提高代码复用性和可维护性
- 将 'id' 列设置为可见,并调整其宽度为 4% -调整 'appname' 和 'title' 列的宽度为28%
- 将数据库连接信息替换为环境变量 - 将邮箱配置信息替换为环境变量 - 将 job accessToken 替换为环境变量
What kind of change does this PR introduce? (check at least one)
The description of the PR:
新增功能
变更内容


添加飞书告警,失败后立即停止任务
添加邮件告警,失败后立即停止任务
告警信息如下:


飞书告警信息
邮件告警信息
任务列表新增上次执行时间、下次执行时间、任务结束时间显示字段

