当前位置: 首页 > 后端技术 > Java

使用delay-job开源项目快速实现延迟调度业务

时间:2023-04-01 21:10:09 Java

1背景订单一段时间后未付款,如何及时关闭订单?注册后过了一段时间,如何提醒用户信息还没有补全?delay-job是专门针对该场景开发的轻量级分布式延迟任务调度系统,目前已在github上开源。项目地址:https://github.com/findthinks/delay-job2使用2.1服务器部署个人测试服务器安装了Java8+、Mysql5.7+环境,测试过程中使用root账号。2.1.1下载delay-job#wgethttps://github.com/findthinks/delay-job/releases/download/0.6.1/delay-job-bin-0.6.1.zip#解压delay-job-bin-0.6.1.zip2.1.2建库建表解压docs/db/schema_init.sql下的文件,执行建库建表。mysql>source/root/delay-job/docs/db/schema_init.sql2.1.3modifyconfiguration修改数据库配置信息,本文使用与默认配置相同。#vi/root/delay-job/config/application.yaml2.1.4启动服务#cd/root/delay-job/bin#./startup.sh观察log/delay-job.log日志信息,确认服务启动正常情况下,成功监听了1989(http)和1990(grpc)端口。2.2客户端对接delay-job触发通知,支持http、grpc、kafka。这次使用的是http协议通知。测试使用springboot开发了一个简单的http接口,用于接受任务触发通知。为了方便,客户端和服务器部署在同一台机器上。2.2.1启动客户端客户端接收延迟通知的http接口为:http://127.0.0.1:9000/recv/notify2.2.2注册一个延迟任务手动注册一个测试任务,触发时间点为1678206771,任务触发信息通知Tointerfacehttp://127.0.0.1:9000/recv/notifycurl-X'POST''http://localhost:1989/api/v1/submit/job'\-H'Content-类型:application/json'\-d'{“outJobNo”:“job_no_000000000004”,“triggerTime”:1678206771,“callbackProtocol”:“HTTP”,“callbackEndpoint”:“http://127.0.0.1:9000/recv/notify",Info"job"Firstdelayjob."}'2.2.3触发通知客户端任务job_no_000000000004在1678206771准时收到回调通知。3总结本文介绍如何使用delay-job开源项目快速实现延时调度业务,实现过程非常简单。