住宅梦物语DX
52.25M · 2026-02-05

SnailJob 是一个开源的分布式任务调度与分布式任务重试平台,同时提供可视化工作流编排能力,目标是把重试、回调、死信、告警、任务分片/编排这些能力从业务代码里抽出来,统一治理。
给它一个定位:

@Scheduled/脚本补数/临时任务统一纳管,权限、审计、告警统一出口
方式 A:源码部署
doc/sql/snail_job_mysql.sqlgit clone
cd snail-job
mvn clean package
java -jar snail-job-server/snail-job-server-starter/target/snail-job-server-exec.jar
启动后默认控制台(以文档为准):
admin/admin方式 B:Docker 部署(生产更常用)
docker run opensnail/snail-job:{Latest Version} 的模板,核心是把数据源环境变量配置好并映射端口。group 与 token(客户端需要)<dependencies>
<!-- 核心依赖 -->
<dependency>
<groupId>com.aizuda</groupId>
<artifactId>snail-job-client-starter</artifactId>
<version>{Latest Version}</version>
</dependency>
<!-- 重试模块(若不需要可以不引入) -->
<dependency>
<groupId>com.aizuda</groupId>
<artifactId>snail-job-client-retry-core</artifactId>
<version>{Latest Version}</version>
</dependency>
<!-- 定时任务(若不需要可以不引入) -->
<dependency>
<groupId>com.aizuda</groupId>
<artifactId>snail-job-client-job-core</artifactId>
<version>{Latest Version}</version>
</dependency>
</dependencies>
启用:启动类添加 @EnableSnailJob。
@SpringBootApplication
// 这里还有另一种写法 @EnableSnailJob("test_sj_group")
// 注解优先级 > 配置文件优先级 建议直接配置到配置文件中
@EnableSnailJob
public class SnailJobSpringbootApplication {
public static void main(String[] args) {
SpringApplication.run(SnailJobSpringbootApplication.class, args);
}
}
配置:
snail-job:
# 任务调度服务器信息
server:
# 服务器IP地址(或域名);集群时建议通过 nginx 做负载均衡
host: 127.0.0.1
# 服务器通讯端口(不是后台管理页面服务端口)
port: 17888
# 命名空间 【上面配置的空间的唯一标识】
namespace: a1NSize1D5jP83Wj0B6Hre094f7kFeHB
# 接入组名【上面配置的组名称】注意: 若通过注解配置了这里的配置不生效
group: test_sj_group
# 接入组 token 【上面配置的token信息】
token: SJ_t3GFbbDCpmznt9M9Pp62GYJecE6S9q9H
# 客户端绑定IP,必须服务器可以访问到;默认自动推断,在服务器无法调度客户端时需要手动配置
host: 127.0.0.1
# 客户端通讯端口,默认 17889
port: 17899
# 实时日志配置
logging:
config: classpath:logback-boot.xml
启动客户端

SnailJob 的价值不在“又多一个定时任务框架”,而在把最难治理的那部分平台化: