1 布景

  • 订单创建一段时刻后未付出,怎么及时的关闭订单?
  • 用户注册一段时刻后未完善资料,怎么及时提示?

delay-job就是专为此场景开发的轻量级分布式推迟使命调度系统,目前已在github开源。项目地址:github.com/findthinks/…

2 运用

2.1 服务端部署

个人测验服务器已装置Java8+、Mysql5.7+环境,测验进程运用root账号。

2.1.1 下载delay-job
# wget https://github.com/findthinks/delay-job/releases/download/0.6.1/delay-job-bin-0.6.1.zip
# unzip delay-job-bin-0.6.1.zip

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

2.1.2 建库表

提取解压文件下docs/db/schema_init.sql,执行建库建表。

mysql> source /root/delay-job/docs/db/schema_init.sql

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

2.1.3 修正配置

修正数据库配置信息,本文运用与默认配置一致。

# vi /root/delay-job/config/application.yaml

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

2.1.4 发动服务
# cd /root/delay-job/bin
# ./startup.sh

使用delay-job开源项目快速实现延迟调度业务
观察log/delay-job.log日志信息,确认服务正常发动,成功监听1989(http)、1990(grpc)端口。

2.2 客户端对接

delay-job触发告诉支撑http、grpc、kafka,本次运用http协议告诉。测验运用springboot开发了一个简易的http接口,用于接受使命触发告诉。为方便,客户端、服务端部署在同一台机器。

2.2.1 发动客户端

使用delay-job开源项目快速实现延迟调度业务
客户端接收推迟告诉的http接口为:http://127.0.0.1:9000/recv/notify

2.2.2 注册推迟使命

手艺注册一个测验使命,触发时刻点为1678206771,使命触发信息告诉到接口http://127.0.0.1:9000/recv/notify

curl -X 'POST' 'http://localhost:1989/api/v1/submit/job' \
 -H 'Content-Type:application/json' \
 -d'{
   "outJobNo":"job_no_000000000004",
   "triggerTime":1678206771,
   "callbackProtocol":"HTTP",
   "callbackEndpoint":"http://127.0.0.1:9000/recv/notify",
   "jobInfo":"First delay job."
  }'

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

2.2.3 触发告诉

客户端使命job_no_000000000004在1678206771时刻点按时收到回调告诉。

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

3 总结

本文展现了怎么借助delay-job开源项目,快速完成推迟调度业务,完成进程非常简单。