最近突然觉得不写博客又开始偷懒了,决定把定时任务结合钉钉群机器人的模式简单介绍下备忘。
背景是产品经理每次数据分析都要找后端同事要数据报表,索性做个定时任务,最好还能直接推送到钉钉群。定时任务之前一直是在springboot项目内开发,对定时任务管理服务早有耳闻,能把业务微服务和定时任务解耦,统一管理定时任务等好处,这次选型安排上。钉钉群机器人有发送群消息的功能,看了官方的api功能齐全,可以文字可以链接(资源连接可下载),还可以@某人。两者配合岂不美滋滋,感觉可以搞。
1.xxl-job
首先部署xxl-job调度中心,可以下载git官方源码本地编译打包部署也可以docker镜像下载部署,自行查阅。即使是docker部署的建议下载源码,里面还有自带的demo用例,不管springboot还是传统mvc都有。
通过注解@XxlJob的方式申明式的编写自己的定时任务逻辑。后续在调度中心选择好你的执行器后,选择的定时任务就是你@XxlJob的value。老规矩一图胜万言。
2.钉钉群机器人
钉钉群机器人的使用方法
可以查阅官方文档,使用也很简单。
step1:创建钉钉群,启用机器人,记录下serverurl含access_token及对应的secret。
step2:根据自己业务需要选择合适的发送模板,制定好规则测试发送。(机器人目前不支持直接发送附件,所以把统计好的excel放到ftp服务上,再把对应的ftp地址发送出去,供群成员下载)
建议把dingtalk消息发送整理成工具类放到公共组件。
3.设计该有的样子
a.考虑钉钉机器人配置信息、消息模板配置信息、定时任务和钉钉机器人的关联关系、定时任务和消息模板的关联关系建立表结构。达到定时任务处理结束,根据关联关系拿到消息模板,再根据关联关系
循环发送到诺干个机器人。这部分代码统一。
b.执行器项目下抽离xxl-job相关配置,统一放到component-xxk-job组件下,达到公司内部其他项目可以开箱即用。
4.效果展示
点击下载数据统计文件