Skip to content

SnailJob 1.4.0-beta1

Latest
Compare
Choose a tag to compare
@open-snail open-snail released this 01 Mar 03:55
  1. sdk手动触发调用时,支持传递临时参数【优化】
  2. oracle sql 索引名过长 【BUG】
  3. 默认rpc-type: grpc【新增】
  4. 场景添加回调配置 【新增】
  5. Converter移入convert包【优化】
  6. 添加 @EqualsAndHashCode(callSuper=true) 去除warning 【优化】
  7. 消除 client-starter 依赖冲突(error_prone_annotations)【优化】
  8. 消除 server-starter 依赖冲突(checker-qual,error_prone_annotations)【优化】
  9. 优化maven结构,根pom统一管理版本【优化】
  10. 修复定时任务触发常驻任务时,通过任务开关无法正常关闭定时任务问题 【BUG】
  11. 修复了oracle数据库更新定时任务状态失败问题【BUG】
  12. 修复代码编辑器格式化问题【BUG】
  13. 修复周期性cron问题【BUG】
  14. 重试模块服务端重构【新增】
  • sj_retry_task_0 改为 sj_retry
  • sj_retry_dead_letter_0 改为 sj_retry_dead_letter
  • sj_retry_task_log 改为 sj_retry_task_log

注意
本次重点重构了重试模块的流程,由之前的同步调度客户端改为异步调度客户端. 将支持更高并发的调度同时大大提高服务端的稳定性

MYSQL变更(其他DB变更请自行同步)

全量的SQL请参考项目 /doc/sql/x.sql

ALTER TABLE `sj_group_config` DROP COLUMN `bucket_index`;

ALTER TABLE `sj_job` MODIFY COLUMN `block_strategy` tinyint(4) NOT NULL DEFAULT 1 COMMENT '阻塞策略 1、丢弃 2、覆盖 3、并行 4、恢复';

ALTER TABLE `sj_retry_scene_config` ADD COLUMN `block_strategy` tinyint(4) NOT NULL DEFAULT 1 COMMENT '阻塞策略 1、丢弃 2、覆盖 3、并行' AFTER `route_key`;
ALTER TABLE `sj_retry_scene_config` ADD COLUMN `cb_status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '回调状态 0、不开启 1、开启' AFTER `block_strategy`;
ALTER TABLE `sj_retry_scene_config` ADD COLUMN `cb_trigger_type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '1、默认等级 2、固定间隔时间 3、CRON 表达式' AFTER `cb_status`;
ALTER TABLE `sj_retry_scene_config` ADD COLUMN `cb_max_count` int(11) NOT NULL DEFAULT 16 COMMENT '回调的最大执行次数' AFTER `cb_trigger_type`;
ALTER TABLE `sj_retry_scene_config` ADD COLUMN `cb_trigger_interval` varchar(16) NOT NULL DEFAULT '' COMMENT '回调的最大执行次数' AFTER `cb_max_count`;

ALTER TABLE `sj_retry_task_log_message` DROP COLUMN `unique_id`;
ALTER TABLE `sj_retry_task_log_message` ADD COLUMN `retry_id` bigint(20) NOT NULL COMMENT '重试信息Id' AFTER `group_name`;
ALTER TABLE `sj_retry_task_log_message` ADD COLUMN `retry_task_id` bigint(20) NOT NULL COMMENT '重试任务Id' AFTER `retry_id`;

CREATE INDEX idx_namespace_id_group_name_retry_task_id ON sj_retry_task_log_message (`namespace_id`, `group_name`, `retry_task_id`);
ALTER TABLE sj_retry_task_log_message DROP INDEX idx_namespace_id_group_name_scene_name;

CREATE TABLE `sj_retry_dead_letter`
(
   `id`            bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
   `namespace_id`  varchar(64)         NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
   `group_name`    varchar(64)         NOT NULL COMMENT '组名称',
   `scene_name`    varchar(64)         NOT NULL COMMENT '场景名称',
   `idempotent_id` varchar(64)         NOT NULL COMMENT '幂等id',
   `biz_no`        varchar(64)         NOT NULL DEFAULT '' COMMENT '业务编号',
   `executor_name` varchar(512)        NOT NULL DEFAULT '' COMMENT '执行器名称',
   `args_str`      text                NOT NULL COMMENT '执行方法参数',
   `ext_attrs`     text                NOT NULL COMMENT '扩展字段',
   `create_dt`     datetime            NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
   PRIMARY KEY (`id`),
   KEY `idx_namespace_id_group_name_scene_name` (`namespace_id`, `group_name`, `scene_name`),
   KEY `idx_idempotent_id` (`idempotent_id`),
   KEY `idx_biz_no` (`biz_no`),
   KEY `idx_create_dt` (`create_dt`)
) ENGINE = InnoDB
  AUTO_INCREMENT = 0
  DEFAULT CHARSET = utf8mb4 COMMENT ='死信队列表'
;

CREATE TABLE `sj_retry`
(
   `id`              bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
   `namespace_id`    varchar(64)         NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
   `group_name`      varchar(64)         NOT NULL COMMENT '组名称',
   `scene_name`      varchar(64)         NOT NULL COMMENT '场景名称',
   `idempotent_id`   varchar(64)         NOT NULL COMMENT '幂等id',
   `biz_no`          varchar(64)         NOT NULL DEFAULT '' COMMENT '业务编号',
   `executor_name`   varchar(512)        NOT NULL DEFAULT '' COMMENT '执行器名称',
   `args_str`        text                NOT NULL COMMENT '执行方法参数',
   `ext_attrs`       text                NOT NULL COMMENT '扩展字段',
   `next_trigger_at` bigint(13)          NOT NULL COMMENT '下次触发时间',
   `retry_count`     int(11)             NOT NULL DEFAULT 0 COMMENT '重试次数',
   `retry_status`    tinyint(4)          NOT NULL DEFAULT 0 COMMENT '重试状态 0、重试中 1、成功 2、最大重试次数',
   `task_type`       tinyint(4)          NOT NULL DEFAULT 1 COMMENT '任务类型 1、重试数据 2、回调数据',
   `bucket_index`    int(11)             NOT NULL DEFAULT 0 COMMENT 'bucket',
   `parent_id`       bigint(20)          NOT NULL DEFAULT 0 COMMENT '父节点id',
   `deleted`         bigint(20)          NOT NULL DEFAULT 0 COMMENT '逻辑删除',
   `create_dt`       datetime            NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
   `update_dt`       datetime            NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
   PRIMARY KEY (`id`),
   KEY `idx_namespace_id_group_name_scene_name` (`namespace_id`, `group_name`, `scene_name`),
   KEY `idx_namespace_id_group_name_retry_status` (`namespace_id`, `group_name`, `retry_status`),
   KEY `idx_idempotent_id` (`idempotent_id`),
   KEY `idx_biz_no` (`biz_no`),
   KEY `idx_parent_id` (`parent_id`),
   KEY `idx_create_dt` (`create_dt`),
   UNIQUE KEY `uk_name_task_type_idempotent_id_deleted` (`namespace_id`, `group_name`, `task_type`, `idempotent_id`, `deleted`)
) ENGINE = InnoDB
  AUTO_INCREMENT = 0
  DEFAULT CHARSET = utf8mb4 COMMENT ='重试信息表'
;

CREATE TABLE `sj_retry_task`
(
   `id`               bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
   `namespace_id`     varchar(64)         NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
   `group_name`       varchar(64)         NOT NULL COMMENT '组名称',
   `scene_name`       varchar(64)         NOT NULL COMMENT '场景名称',
   `retry_id`         bigint(20)          NOT NULL COMMENT '重试信息Id',
   `ext_attrs`        text                NOT NULL COMMENT '扩展字段',
   `task_status`      tinyint(4)          NOT NULL DEFAULT 1 COMMENT '重试状态',
   `task_type`        tinyint(4)          NOT NULL DEFAULT 1 COMMENT '任务类型 1、重试数据 2、回调数据',
   `operation_reason` tinyint(4)          NOT NULL DEFAULT 0 COMMENT '操作原因',
   `client_info`      varchar(128)        DEFAULT NULL COMMENT '客户端地址 clientId#ip:port',
   `create_dt`        datetime            NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
   `update_dt`        datetime            NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
   PRIMARY KEY (`id`),
   KEY `idx_group_name_scene_name` (`namespace_id`, `group_name`, `scene_name`),
   KEY `task_status` (`task_status`),
   KEY `idx_create_dt` (`create_dt`),
   KEY `idx_retry_id` (`retry_id`)
) ENGINE = InnoDB
  AUTO_INCREMENT = 0
  DEFAULT CHARSET = utf8mb4 COMMENT ='重试任务表'
;

DROP TABLE sj_retry_dead_letter_0;
DROP TABLE sj_retry_task_0;
DROP TABLE sj_retry_task_log;