1. 简介
1.1 项目介绍
SnailJob是一个高效且可靠的开源分布式任务重试和任务调度平台,旨在解决复杂分布式环境中的任务执行问题。它的设计灵感源于对高可用性、灵活性和性能的追求,能够帮助企业提升分布式业务系统的整体一致性。通过SnailJob,您可以轻松创建、管理和监控可重试或定时执行的任务,确保业务流程的顺畅进行。
开源地址:https://gitee.com/aizuda/snail-job
1.2核心功能
1.3 开源组件对比
2. 常用注解
2.1Retryable注解
2.2ExecutorMethodRegister注解
2.3JobExecutor注解
3. 部署与试用
3.1 搭建数据库环境
Snail Job支持多种数据库,其中包含Mysql、Mariadb、Postgres、Oracle、MS SQL Server、达梦等。可以执行sql脚本生成相关表结构也可以使用 docker compse快速构建数据库环境。以使用docker搭建数据库环境为例,打开拉下来的项目代码
cd ./doc/docker
## 启动 mysql
docker compose up -d mysql
3.2 服务端配置
服务端代码整体目录结构如图所示:
在snail-job-server-sater启动服务端程序
application.yml 常用配置
3.3 客户端配置
注:在启动多个客户端时要配置客户端端口,否则会报地址被占用,在集群模式下只会有一个服务正常访问
3.4 服务端web界面
服务端启动后,默认访问地址为:http://127.0.0.1:8080/snail-job/
3.5 定时任务配置
点击新增新建一个新的定时任务
组名称:组是一个逻辑概念, 它可以看做是场景的分类或者是标签, 用于将一些相关性的场景进行分组,可以理解为MQ的Topic和Queue的关系; 服务端的负载均衡也是基于组 把不同的组分配到不同的服务端集群的其中一个节点。
客户端的group为已经配置好的组名
执行器名称:执行任务的方法名称
任务类型:
路由策略:
阻塞策略:
我们配置的为切片类型,因此在配置完定时任务后,我们启动两个不同端口的客户端,分组名为job_demo,点击执行该定时任务,两个客户端会收到不同的分片参数,如图所示
3.6工作流
可以通过工作流执行定时任务,以上文的切片任务为例
在创建完定时任务后,客户端以十秒一次执行切片任务,结果如下图所示