Browse Source

update snailjob 1.3.0 => 1.4.0-beta2

疯狂的狮子Li 3 months ago
parent
commit
be5d69d5a5

+ 1 - 1
pom.xml

@@ -31,7 +31,7 @@
         <redisson.version>3.44.0</redisson.version>
         <lock4j.version>2.2.7</lock4j.version>
         <dynamic-ds.version>4.3.1</dynamic-ds.version>
-        <snailjob.version>1.3.0</snailjob.version>
+        <snailjob.version>1.4.0-beta2</snailjob.version>
         <mapstruct-plus.version>1.4.6</mapstruct-plus.version>
         <mapstruct-plus.lombok.version>0.2.0</mapstruct-plus.lombok.version>
         <lombok.version>1.18.36</lombok.version>

+ 0 - 11
ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-dev.yml

@@ -22,21 +22,10 @@ snail-job:
   job-pull-page-size: 1000
   # 服务器端口
   server-port: 17888
-  # 一个客户端每秒最多接收的重试数量指令
-  limiter: 1000
   # 号段模式下步长配置
   step: 100
   # 日志保存时间(单位: day)
   log-storage: 90
-  # 回调配置
-  callback:
-    #回调最大执行次数
-    max-count: 288
-    #间隔时间
-    trigger-interval: 900
-  # 重试每次拉取的次数
-  retry-max-pull-count: 10
-  # RPC通讯类型: netty,grpc
   rpc-type: grpc
 
 --- # 监控中心配置

+ 0 - 11
ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-prod.yml

@@ -22,21 +22,10 @@ snail-job:
   job-pull-page-size: 1000
   # 服务器端口
   server-port: 17888
-  # 一个客户端每秒最多接收的重试数量指令
-  limiter: 1000
   # 号段模式下步长配置
   step: 100
   # 日志保存时间(单位: day)
   log-storage: 90
-  # 回调配置
-  callback:
-    #回调最大执行次数
-    max-count: 288
-    #间隔时间
-    trigger-interval: 900
-  # 重试每次拉取的次数
-  retry-max-pull-count: 10
-  # RPC通讯类型: netty,grpc
   rpc-type: grpc
 
 --- # 监控中心配置

+ 139 - 136
script/sql/oracle/oracle_ry_job.sql

@@ -1,8 +1,9 @@
+
 /*
  SnailJob Database Transfer Tool
  Source Server Type    : MySQL
  Target Server Type    : Oracle
- Date: 2024-12-27 22:22:15
+ Date: 2025-02-25 22:16:28
 */
 
 
@@ -48,7 +49,6 @@ CREATE TABLE sj_group_config
     group_partition   number                                                      NOT NULL,
     id_generator_mode smallint      DEFAULT 1                                     NOT NULL,
     init_scene        smallint      DEFAULT 0                                     NOT NULL,
-    bucket_index      number        DEFAULT 0                                     NOT NULL,
     create_dt         date          DEFAULT CURRENT_TIMESTAMP                     NOT NULL,
     update_dt         date          DEFAULT CURRENT_TIMESTAMP                     NOT NULL
 );
@@ -68,13 +68,12 @@ COMMENT ON COLUMN sj_group_config.version IS '版本号';
 COMMENT ON COLUMN sj_group_config.group_partition IS '分区';
 COMMENT ON COLUMN sj_group_config.id_generator_mode IS '唯一id生成模式 默认号段模式';
 COMMENT ON COLUMN sj_group_config.init_scene IS '是否初始化场景 0:否 1:是';
-COMMENT ON COLUMN sj_group_config.bucket_index IS 'bucket';
 COMMENT ON COLUMN sj_group_config.create_dt IS '创建时间';
 COMMENT ON COLUMN sj_group_config.update_dt IS '修改时间';
 COMMENT ON TABLE sj_group_config IS '组配置';
 
-INSERT INTO sj_group_config (namespace_id, group_name, description, token, group_status, version, group_partition, id_generator_mode, init_scene, bucket_index, create_dt, update_dt) VALUES ('dev', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, 4, sysdate, sysdate);
-INSERT INTO sj_group_config (namespace_id, group_name, description, token, group_status, version, group_partition, id_generator_mode, init_scene, bucket_index, create_dt, update_dt) VALUES ('prod', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, 4, sysdate, sysdate);
+INSERT INTO sj_group_config (namespace_id, group_name, description, token, group_status, version, group_partition, id_generator_mode, init_scene, create_dt, update_dt) VALUES ('dev', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1,  sysdate, sysdate);
+INSERT INTO sj_group_config (namespace_id, group_name, description, token, group_status, version, group_partition, id_generator_mode, init_scene, create_dt, update_dt) VALUES ('prod', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1,  sysdate, sysdate);
 
 -- sj_notify_config
 CREATE TABLE sj_notify_config
@@ -144,12 +143,11 @@ COMMENT ON COLUMN sj_notify_recipient.create_dt IS '创建时间';
 COMMENT ON COLUMN sj_notify_recipient.update_dt IS '修改时间';
 COMMENT ON TABLE sj_notify_recipient IS '告警通知接收人';
 
--- sj_retry_dead_letter_0
-CREATE TABLE sj_retry_dead_letter_0
+-- sj_retry_dead_letter
+CREATE TABLE sj_retry_dead_letter
 (
     id            number GENERATED ALWAYS AS IDENTITY,
     namespace_id  varchar2(64)  DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL,
-    unique_id     varchar2(64)                                             NULL,
     group_name    varchar2(64)                                             NULL,
     scene_name    varchar2(64)                                             NULL,
     idempotent_id varchar2(64)                                             NULL,
@@ -157,40 +155,34 @@ CREATE TABLE sj_retry_dead_letter_0
     executor_name varchar2(512) DEFAULT ''                                 NULL,
     args_str      clob                                                     NULL,
     ext_attrs     clob                                                     NULL,
-    task_type     smallint      DEFAULT 1                                  NOT NULL,
     create_dt     date          DEFAULT CURRENT_TIMESTAMP                  NOT NULL
 );
 
-ALTER TABLE sj_retry_dead_letter_0
-    ADD CONSTRAINT pk_sj_retry_dead_letter_0 PRIMARY KEY (id);
-
-CREATE UNIQUE INDEX uk_sj_retry_dead_letter_0_01 ON sj_retry_dead_letter_0 (namespace_id, group_name, unique_id);
-
-CREATE INDEX idx_sj_retry_dead_letter_0_01 ON sj_retry_dead_letter_0 (namespace_id, group_name, scene_name);
-CREATE INDEX idx_sj_retry_dead_letter_0_02 ON sj_retry_dead_letter_0 (idempotent_id);
-CREATE INDEX idx_sj_retry_dead_letter_0_03 ON sj_retry_dead_letter_0 (biz_no);
-CREATE INDEX idx_sj_retry_dead_letter_0_04 ON sj_retry_dead_letter_0 (create_dt);
-
-COMMENT ON COLUMN sj_retry_dead_letter_0.id IS '主键';
-COMMENT ON COLUMN sj_retry_dead_letter_0.namespace_id IS '命名空间id';
-COMMENT ON COLUMN sj_retry_dead_letter_0.unique_id IS '同组下id唯一';
-COMMENT ON COLUMN sj_retry_dead_letter_0.group_name IS '组名称';
-COMMENT ON COLUMN sj_retry_dead_letter_0.scene_name IS '场景名称';
-COMMENT ON COLUMN sj_retry_dead_letter_0.idempotent_id IS '幂等id';
-COMMENT ON COLUMN sj_retry_dead_letter_0.biz_no IS '业务编号';
-COMMENT ON COLUMN sj_retry_dead_letter_0.executor_name IS '执行器名称';
-COMMENT ON COLUMN sj_retry_dead_letter_0.args_str IS '执行方法参数';
-COMMENT ON COLUMN sj_retry_dead_letter_0.ext_attrs IS '扩展字段';
-COMMENT ON COLUMN sj_retry_dead_letter_0.task_type IS '任务类型 1、重试数据 2、回调数据';
-COMMENT ON COLUMN sj_retry_dead_letter_0.create_dt IS '创建时间';
-COMMENT ON TABLE sj_retry_dead_letter_0 IS '死信队列表';
-
--- sj_retry_task_0
-CREATE TABLE sj_retry_task_0
+ALTER TABLE sj_retry_dead_letter
+    ADD CONSTRAINT pk_sj_retry_dead_letter PRIMARY KEY (id);
+
+CREATE INDEX idx_sj_retry_dead_letter_01 ON sj_retry_dead_letter (namespace_id, group_name, scene_name);
+CREATE INDEX idx_sj_retry_dead_letter_02 ON sj_retry_dead_letter (idempotent_id);
+CREATE INDEX idx_sj_retry_dead_letter_03 ON sj_retry_dead_letter (biz_no);
+CREATE INDEX idx_sj_retry_dead_letter_04 ON sj_retry_dead_letter (create_dt);
+
+COMMENT ON COLUMN sj_retry_dead_letter.id IS '主键';
+COMMENT ON COLUMN sj_retry_dead_letter.namespace_id IS '命名空间id';
+COMMENT ON COLUMN sj_retry_dead_letter.group_name IS '组名称';
+COMMENT ON COLUMN sj_retry_dead_letter.scene_name IS '场景名称';
+COMMENT ON COLUMN sj_retry_dead_letter.idempotent_id IS '幂等id';
+COMMENT ON COLUMN sj_retry_dead_letter.biz_no IS '业务编号';
+COMMENT ON COLUMN sj_retry_dead_letter.executor_name IS '执行器名称';
+COMMENT ON COLUMN sj_retry_dead_letter.args_str IS '执行方法参数';
+COMMENT ON COLUMN sj_retry_dead_letter.ext_attrs IS '扩展字段';
+COMMENT ON COLUMN sj_retry_dead_letter.create_dt IS '创建时间';
+COMMENT ON TABLE sj_retry_dead_letter IS '死信队列表';
+
+-- sj_retry
+CREATE TABLE sj_retry
 (
     id              number GENERATED ALWAYS AS IDENTITY,
     namespace_id    varchar2(64)  DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL,
-    unique_id       varchar2(64)                                             NULL,
     group_name      varchar2(64)                                             NULL,
     scene_name      varchar2(64)                                             NULL,
     idempotent_id   varchar2(64)                                             NULL,
@@ -198,112 +190,113 @@ CREATE TABLE sj_retry_task_0
     executor_name   varchar2(512) DEFAULT ''                                 NULL,
     args_str        clob                                                     NULL,
     ext_attrs       clob                                                     NULL,
-    next_trigger_at date                                                     NOT NULL,
+    next_trigger_at number                                                   NOT NULL,
     retry_count     number        DEFAULT 0                                  NOT NULL,
     retry_status    smallint      DEFAULT 0                                  NOT NULL,
     task_type       smallint      DEFAULT 1                                  NOT NULL,
+    bucket_index    number        DEFAULT 0                                  NOT NULL,
+    parent_id       number        DEFAULT 0                                  NOT NULL,
+    deleted         number        DEFAULT 0                                  NOT NULL,
     create_dt       date          DEFAULT CURRENT_TIMESTAMP                  NOT NULL,
     update_dt       date          DEFAULT CURRENT_TIMESTAMP                  NOT NULL
 );
 
-ALTER TABLE sj_retry_task_0
-    ADD CONSTRAINT pk_sj_retry_task_0 PRIMARY KEY (id);
-
-CREATE UNIQUE INDEX uk_sj_retry_task_0_01 ON sj_retry_task_0 (namespace_id, group_name, unique_id);
-
-CREATE INDEX idx_sj_retry_task_0_01 ON sj_retry_task_0 (namespace_id, group_name, scene_name);
-CREATE INDEX idx_sj_retry_task_0_02 ON sj_retry_task_0 (namespace_id, group_name, task_type);
-CREATE INDEX idx_sj_retry_task_0_03 ON sj_retry_task_0 (namespace_id, group_name, retry_status);
-CREATE INDEX idx_sj_retry_task_0_04 ON sj_retry_task_0 (idempotent_id);
-CREATE INDEX idx_sj_retry_task_0_05 ON sj_retry_task_0 (biz_no);
-CREATE INDEX idx_sj_retry_task_0_06 ON sj_retry_task_0 (create_dt);
-
-COMMENT ON COLUMN sj_retry_task_0.id IS '主键';
-COMMENT ON COLUMN sj_retry_task_0.namespace_id IS '命名空间id';
-COMMENT ON COLUMN sj_retry_task_0.unique_id IS '同组下id唯一';
-COMMENT ON COLUMN sj_retry_task_0.group_name IS '组名称';
-COMMENT ON COLUMN sj_retry_task_0.scene_name IS '场景名称';
-COMMENT ON COLUMN sj_retry_task_0.idempotent_id IS '幂等id';
-COMMENT ON COLUMN sj_retry_task_0.biz_no IS '业务编号';
-COMMENT ON COLUMN sj_retry_task_0.executor_name IS '执行器名称';
-COMMENT ON COLUMN sj_retry_task_0.args_str IS '执行方法参数';
-COMMENT ON COLUMN sj_retry_task_0.ext_attrs IS '扩展字段';
-COMMENT ON COLUMN sj_retry_task_0.next_trigger_at IS '下次触发时间';
-COMMENT ON COLUMN sj_retry_task_0.retry_count IS '重试次数';
-COMMENT ON COLUMN sj_retry_task_0.retry_status IS '重试状态 0、重试中 1、成功 2、最大重试次数';
-COMMENT ON COLUMN sj_retry_task_0.task_type IS '任务类型 1、重试数据 2、回调数据';
-COMMENT ON COLUMN sj_retry_task_0.create_dt IS '创建时间';
-COMMENT ON COLUMN sj_retry_task_0.update_dt IS '修改时间';
-COMMENT ON TABLE sj_retry_task_0 IS '任务表';
-
--- sj_retry_task_log
-CREATE TABLE sj_retry_task_log
+ALTER TABLE sj_retry
+    ADD CONSTRAINT pk_sj_retry PRIMARY KEY (id);
+
+CREATE UNIQUE INDEX uk_sj_retry_01 ON sj_retry (namespace_id, group_name, task_type, idempotent_id, deleted);
+
+CREATE INDEX idx_sj_retry_01 ON sj_retry (namespace_id, group_name, scene_name);
+CREATE INDEX idx_sj_retry_02 ON sj_retry (namespace_id, group_name, retry_status);
+CREATE INDEX idx_sj_retry_03 ON sj_retry (idempotent_id);
+CREATE INDEX idx_sj_retry_04 ON sj_retry (biz_no);
+CREATE INDEX idx_sj_retry_05 ON sj_retry (parent_id);
+CREATE INDEX idx_sj_retry_06 ON sj_retry (create_dt);
+
+COMMENT ON COLUMN sj_retry.id IS '主键';
+COMMENT ON COLUMN sj_retry.namespace_id IS '命名空间id';
+COMMENT ON COLUMN sj_retry.group_name IS '组名称';
+COMMENT ON COLUMN sj_retry.scene_name IS '场景名称';
+COMMENT ON COLUMN sj_retry.idempotent_id IS '幂等id';
+COMMENT ON COLUMN sj_retry.biz_no IS '业务编号';
+COMMENT ON COLUMN sj_retry.executor_name IS '执行器名称';
+COMMENT ON COLUMN sj_retry.args_str IS '执行方法参数';
+COMMENT ON COLUMN sj_retry.ext_attrs IS '扩展字段';
+COMMENT ON COLUMN sj_retry.next_trigger_at IS '下次触发时间';
+COMMENT ON COLUMN sj_retry.retry_count IS '重试次数';
+COMMENT ON COLUMN sj_retry.retry_status IS '重试状态 0、重试中 1、成功 2、最大重试次数';
+COMMENT ON COLUMN sj_retry.task_type IS '任务类型 1、重试数据 2、回调数据';
+COMMENT ON COLUMN sj_retry.bucket_index IS 'bucket';
+COMMENT ON COLUMN sj_retry.parent_id IS '父节点id';
+COMMENT ON COLUMN sj_retry.deleted IS '逻辑删除';
+COMMENT ON COLUMN sj_retry.create_dt IS '创建时间';
+COMMENT ON COLUMN sj_retry.update_dt IS '修改时间';
+COMMENT ON TABLE sj_retry IS '重试信息表';
+
+-- sj_retry_task
+CREATE TABLE sj_retry_task
 (
-    id            number GENERATED ALWAYS AS IDENTITY,
-    namespace_id  varchar2(64)  DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL,
-    unique_id     varchar2(64)                                             NULL,
-    group_name    varchar2(64)                                             NULL,
-    scene_name    varchar2(64)                                             NULL,
-    idempotent_id varchar2(64)                                             NULL,
-    biz_no        varchar2(64)  DEFAULT ''                                 NULL,
-    executor_name varchar2(512) DEFAULT ''                                 NULL,
-    args_str      clob                                                     NULL,
-    ext_attrs     clob                                                     NULL,
-    retry_status  smallint      DEFAULT 0                                  NOT NULL,
-    task_type     smallint      DEFAULT 1                                  NOT NULL,
-    create_dt     date          DEFAULT CURRENT_TIMESTAMP                  NOT NULL,
-    update_dt     date          DEFAULT CURRENT_TIMESTAMP                  NOT NULL
+    id               number GENERATED ALWAYS AS IDENTITY,
+    namespace_id     varchar2(64)  DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL,
+    group_name       varchar2(64)                                             NULL,
+    scene_name       varchar2(64)                                             NULL,
+    retry_id         number                                                   NOT NULL,
+    ext_attrs        clob                                                     NULL,
+    task_status      smallint      DEFAULT 1                                  NOT NULL,
+    task_type        smallint      DEFAULT 1                                  NOT NULL,
+    operation_reason smallint      DEFAULT 0                                  NOT NULL,
+    client_info      varchar2(128) DEFAULT NULL                               NULL,
+    create_dt        date          DEFAULT CURRENT_TIMESTAMP                  NOT NULL,
+    update_dt        date          DEFAULT CURRENT_TIMESTAMP                  NOT NULL
 );
 
-ALTER TABLE sj_retry_task_log
-    ADD CONSTRAINT pk_sj_retry_task_log PRIMARY KEY (id);
-
-CREATE INDEX idx_sj_retry_task_log_01 ON sj_retry_task_log (namespace_id, group_name, scene_name);
-CREATE INDEX idx_sj_retry_task_log_02 ON sj_retry_task_log (retry_status);
-CREATE INDEX idx_sj_retry_task_log_03 ON sj_retry_task_log (idempotent_id);
-CREATE INDEX idx_sj_retry_task_log_04 ON sj_retry_task_log (unique_id);
-CREATE INDEX idx_sj_retry_task_log_05 ON sj_retry_task_log (biz_no);
-CREATE INDEX idx_sj_retry_task_log_06 ON sj_retry_task_log (create_dt);
-
-COMMENT ON COLUMN sj_retry_task_log.id IS '主键';
-COMMENT ON COLUMN sj_retry_task_log.namespace_id IS '命名空间id';
-COMMENT ON COLUMN sj_retry_task_log.unique_id IS '同组下id唯一';
-COMMENT ON COLUMN sj_retry_task_log.group_name IS '组名称';
-COMMENT ON COLUMN sj_retry_task_log.scene_name IS '场景名称';
-COMMENT ON COLUMN sj_retry_task_log.idempotent_id IS '幂等id';
-COMMENT ON COLUMN sj_retry_task_log.biz_no IS '业务编号';
-COMMENT ON COLUMN sj_retry_task_log.executor_name IS '执行器名称';
-COMMENT ON COLUMN sj_retry_task_log.args_str IS '执行方法参数';
-COMMENT ON COLUMN sj_retry_task_log.ext_attrs IS '扩展字段';
-COMMENT ON COLUMN sj_retry_task_log.retry_status IS '重试状态 0、重试中 1、成功 2、最大次数';
-COMMENT ON COLUMN sj_retry_task_log.task_type IS '任务类型 1、重试数据 2、回调数据';
-COMMENT ON COLUMN sj_retry_task_log.create_dt IS '创建时间';
-COMMENT ON COLUMN sj_retry_task_log.update_dt IS '修改时间';
-COMMENT ON TABLE sj_retry_task_log IS '任务日志基础信息表';
+ALTER TABLE sj_retry_task
+    ADD CONSTRAINT pk_sj_retry_task PRIMARY KEY (id);
+
+CREATE INDEX idx_sj_retry_task_01 ON sj_retry_task (namespace_id, group_name, scene_name);
+CREATE INDEX idx_sj_retry_task_02 ON sj_retry_task (task_status);
+CREATE INDEX idx_sj_retry_task_03 ON sj_retry_task (create_dt);
+CREATE INDEX idx_sj_retry_task_04 ON sj_retry_task (retry_id);
+
+COMMENT ON COLUMN sj_retry_task.id IS '主键';
+COMMENT ON COLUMN sj_retry_task.namespace_id IS '命名空间id';
+COMMENT ON COLUMN sj_retry_task.group_name IS '组名称';
+COMMENT ON COLUMN sj_retry_task.scene_name IS '场景名称';
+COMMENT ON COLUMN sj_retry_task.retry_id IS '重试信息Id';
+COMMENT ON COLUMN sj_retry_task.ext_attrs IS '扩展字段';
+COMMENT ON COLUMN sj_retry_task.task_status IS '重试状态';
+COMMENT ON COLUMN sj_retry_task.task_type IS '任务类型 1、重试数据 2、回调数据';
+COMMENT ON COLUMN sj_retry_task.operation_reason IS '操作原因';
+COMMENT ON COLUMN sj_retry_task.client_info IS '客户端地址 clientId#ip:port';
+COMMENT ON COLUMN sj_retry_task.create_dt IS '创建时间';
+COMMENT ON COLUMN sj_retry_task.update_dt IS '修改时间';
+COMMENT ON TABLE sj_retry_task IS '重试任务表';
 
 -- sj_retry_task_log_message
 CREATE TABLE sj_retry_task_log_message
 (
-    id           number GENERATED ALWAYS AS IDENTITY,
-    namespace_id varchar2(64) DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL,
-    group_name   varchar2(64)                                            NULL,
-    unique_id    varchar2(64)                                            NULL,
-    message      clob                                                    NULL,
-    log_num      number       DEFAULT 1                                  NOT NULL,
-    real_time    number       DEFAULT 0                                  NOT NULL,
-    create_dt    date         DEFAULT CURRENT_TIMESTAMP                  NOT NULL
+    id            number GENERATED ALWAYS AS IDENTITY,
+    namespace_id  varchar2(64) DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL,
+    group_name    varchar2(64)                                            NULL,
+    retry_id      number                                                  NOT NULL,
+    retry_task_id number                                                  NOT NULL,
+    message       clob                                                    NULL,
+    log_num       number       DEFAULT 1                                  NOT NULL,
+    real_time     number       DEFAULT 0                                  NOT NULL,
+    create_dt     date         DEFAULT CURRENT_TIMESTAMP                  NOT NULL
 );
 
 ALTER TABLE sj_retry_task_log_message
     ADD CONSTRAINT pk_sj_retry_task_log_message PRIMARY KEY (id);
 
-CREATE INDEX idx_sj_rt_log_message_01 ON sj_retry_task_log_message (namespace_id, group_name, unique_id);
+CREATE INDEX idx_sj_rt_log_message_01 ON sj_retry_task_log_message (namespace_id, group_name, retry_task_id);
 CREATE INDEX idx_sj_rt_log_message_02 ON sj_retry_task_log_message (create_dt);
 
 COMMENT ON COLUMN sj_retry_task_log_message.id IS '主键';
 COMMENT ON COLUMN sj_retry_task_log_message.namespace_id IS '命名空间id';
 COMMENT ON COLUMN sj_retry_task_log_message.group_name IS '组名称';
-COMMENT ON COLUMN sj_retry_task_log_message.unique_id IS '同组下id唯一';
+COMMENT ON COLUMN sj_retry_task_log_message.retry_id IS '重试信息Id';
+COMMENT ON COLUMN sj_retry_task_log_message.retry_task_id IS '重试任务Id';
 COMMENT ON COLUMN sj_retry_task_log_message.message IS '异常信息';
 COMMENT ON COLUMN sj_retry_task_log_message.log_num IS '日志数量';
 COMMENT ON COLUMN sj_retry_task_log_message.real_time IS '上报时间';
@@ -313,21 +306,26 @@ COMMENT ON TABLE sj_retry_task_log_message IS '任务调度日志信息记录表
 -- sj_retry_scene_config
 CREATE TABLE sj_retry_scene_config
 (
-    id               number GENERATED ALWAYS AS IDENTITY,
-    namespace_id     varchar2(64)  DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL,
-    scene_name       varchar2(64)                                             NULL,
-    group_name       varchar2(64)                                             NULL,
-    scene_status     smallint      DEFAULT 0                                  NOT NULL,
-    max_retry_count  number        DEFAULT 5                                  NOT NULL,
-    back_off         smallint      DEFAULT 1                                  NOT NULL,
-    trigger_interval varchar2(16)  DEFAULT ''                                 NULL,
-    notify_ids       varchar2(128) DEFAULT ''                                 NULL,
-    deadline_request number        DEFAULT 60000                              NOT NULL,
-    executor_timeout number        DEFAULT 5                                  NOT NULL,
-    route_key        smallint      DEFAULT 4                                  NOT NULL,
-    description      varchar2(256) DEFAULT ''                                 NULL,
-    create_dt        date          DEFAULT CURRENT_TIMESTAMP                  NOT NULL,
-    update_dt        date          DEFAULT CURRENT_TIMESTAMP                  NOT NULL
+    id                  number GENERATED ALWAYS AS IDENTITY,
+    namespace_id        varchar2(64)  DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL,
+    scene_name          varchar2(64)                                             NULL,
+    group_name          varchar2(64)                                             NULL,
+    scene_status        smallint      DEFAULT 0                                  NOT NULL,
+    max_retry_count     number        DEFAULT 5                                  NOT NULL,
+    back_off            smallint      DEFAULT 1                                  NOT NULL,
+    trigger_interval    varchar2(16)  DEFAULT ''                                 NULL,
+    notify_ids          varchar2(128) DEFAULT ''                                 NULL,
+    deadline_request    number        DEFAULT 60000                              NOT NULL,
+    executor_timeout    number        DEFAULT 5                                  NOT NULL,
+    route_key           smallint      DEFAULT 4                                  NOT NULL,
+    block_strategy      smallint      DEFAULT 1                                  NOT NULL,
+    cb_status           smallint      DEFAULT 0                                  NOT NULL,
+    cb_trigger_type     smallint      DEFAULT 1                                  NOT NULL,
+    cb_max_count        number        DEFAULT 16                                 NOT NULL,
+    cb_trigger_interval varchar2(16)  DEFAULT ''                                 NULL,
+    description         varchar2(256) DEFAULT ''                                 NULL,
+    create_dt           date          DEFAULT CURRENT_TIMESTAMP                  NOT NULL,
+    update_dt           date          DEFAULT CURRENT_TIMESTAMP                  NOT NULL
 );
 
 ALTER TABLE sj_retry_scene_config
@@ -347,6 +345,11 @@ COMMENT ON COLUMN sj_retry_scene_config.notify_ids IS '通知告警场景配置i
 COMMENT ON COLUMN sj_retry_scene_config.deadline_request IS 'Deadline Request 调用链超时 单位毫秒';
 COMMENT ON COLUMN sj_retry_scene_config.executor_timeout IS '任务执行超时时间,单位秒';
 COMMENT ON COLUMN sj_retry_scene_config.route_key IS '路由策略';
+COMMENT ON COLUMN sj_retry_scene_config.block_strategy IS '阻塞策略 1、丢弃 2、覆盖 3、并行';
+COMMENT ON COLUMN sj_retry_scene_config.cb_status IS '回调状态 0、不开启 1、开启';
+COMMENT ON COLUMN sj_retry_scene_config.cb_trigger_type IS '1、默认等级 2、固定间隔时间 3、CRON 表达式';
+COMMENT ON COLUMN sj_retry_scene_config.cb_max_count IS '回调的最大执行次数';
+COMMENT ON COLUMN sj_retry_scene_config.cb_trigger_interval IS '回调的最大执行次数';
 COMMENT ON COLUMN sj_retry_scene_config.description IS '描述';
 COMMENT ON COLUMN sj_retry_scene_config.create_dt IS '创建时间';
 COMMENT ON COLUMN sj_retry_scene_config.update_dt IS '修改时间';
@@ -538,11 +541,11 @@ COMMENT ON COLUMN sj_job.executor_type IS '执行器类型';
 COMMENT ON COLUMN sj_job.executor_info IS '执行器名称';
 COMMENT ON COLUMN sj_job.trigger_type IS '触发类型 1.CRON 表达式 2. 固定时间';
 COMMENT ON COLUMN sj_job.trigger_interval IS '间隔时长';
-COMMENT ON COLUMN sj_job.block_strategy IS '阻塞策略 1、丢弃 2、覆盖 3、并行';
+COMMENT ON COLUMN sj_job.block_strategy IS '阻塞策略 1、丢弃 2、覆盖 3、并行 4、恢复';
 COMMENT ON COLUMN sj_job.executor_timeout IS '任务执行超时时间,单位秒';
 COMMENT ON COLUMN sj_job.max_retry_times IS '最大重试次数';
 COMMENT ON COLUMN sj_job.parallel_num IS '并行数';
-COMMENT ON COLUMN sj_job.retry_interval IS '重试间隔 ( s ) ';
+COMMENT ON COLUMN sj_job.retry_interval IS '重试间隔 ( s)';
 COMMENT ON COLUMN sj_job.bucket_index IS 'bucket';
 COMMENT ON COLUMN sj_job.resident IS '是否是常驻任务';
 COMMENT ON COLUMN sj_job.notify_ids IS '通知告警场景配置id列表';
@@ -721,7 +724,7 @@ CREATE INDEX idx_sj_job_summary_01 ON sj_job_summary (namespace_id, group_name,
 COMMENT ON COLUMN sj_job_summary.id IS '主键';
 COMMENT ON COLUMN sj_job_summary.namespace_id IS '命名空间id';
 COMMENT ON COLUMN sj_job_summary.group_name IS '组名称';
-COMMENT ON COLUMN sj_job_summary.business_id IS '业务id  ( job_id或workflow_id ) ';
+COMMENT ON COLUMN sj_job_summary.business_id IS '业务id  ( job_id或workflow_id)';
 COMMENT ON COLUMN sj_job_summary.system_task_type IS '任务类型 3、JOB任务 4、WORKFLOW任务';
 COMMENT ON COLUMN sj_job_summary.trigger_at IS '统计时间';
 COMMENT ON COLUMN sj_job_summary.success_num IS '执行成功-日志数量';

+ 130 - 128
script/sql/postgres/postgres_ry_job.sql

@@ -2,7 +2,7 @@
  SnailJob Database Transfer Tool
  Source Server Type    : MySQL
  Target Server Type    : PostgreSQL
- Date: 2024-12-27 22:13:49
+ Date: 2025-02-25 22:15:32
 */
 
 
@@ -45,7 +45,6 @@ CREATE TABLE sj_group_config
     group_partition   int          NOT NULL,
     id_generator_mode smallint     NOT NULL DEFAULT 1,
     init_scene        smallint     NOT NULL DEFAULT 0,
-    bucket_index      int          NOT NULL DEFAULT 0,
     create_dt         timestamp    NOT NULL DEFAULT CURRENT_TIMESTAMP,
     update_dt         timestamp    NOT NULL DEFAULT CURRENT_TIMESTAMP
 );
@@ -62,13 +61,12 @@ COMMENT ON COLUMN sj_group_config.version IS '版本号';
 COMMENT ON COLUMN sj_group_config.group_partition IS '分区';
 COMMENT ON COLUMN sj_group_config.id_generator_mode IS '唯一id生成模式 默认号段模式';
 COMMENT ON COLUMN sj_group_config.init_scene IS '是否初始化场景 0:否 1:是';
-COMMENT ON COLUMN sj_group_config.bucket_index IS 'bucket';
 COMMENT ON COLUMN sj_group_config.create_dt IS '创建时间';
 COMMENT ON COLUMN sj_group_config.update_dt IS '修改时间';
 COMMENT ON TABLE sj_group_config IS '组配置';
 
-INSERT INTO sj_group_config VALUES (1, 'dev', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, 4, now(), now());
-INSERT INTO sj_group_config VALUES (2, 'prod', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, 4, now(), now());
+INSERT INTO sj_group_config VALUES (1, 'dev', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1,  now(), now());
+INSERT INTO sj_group_config VALUES (2, 'prod', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1,  now(), now());
 
 -- sj_notify_config
 CREATE TABLE sj_notify_config
@@ -132,12 +130,11 @@ COMMENT ON COLUMN sj_notify_recipient.create_dt IS '创建时间';
 COMMENT ON COLUMN sj_notify_recipient.update_dt IS '修改时间';
 COMMENT ON TABLE sj_notify_recipient IS '告警通知接收人';
 
--- sj_retry_dead_letter_0
-CREATE TABLE sj_retry_dead_letter_0
+-- sj_retry_dead_letter
+CREATE TABLE sj_retry_dead_letter
 (
     id            bigserial PRIMARY KEY,
     namespace_id  varchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    unique_id     varchar(64)  NOT NULL,
     group_name    varchar(64)  NOT NULL,
     scene_name    varchar(64)  NOT NULL,
     idempotent_id varchar(64)  NOT NULL,
@@ -145,37 +142,31 @@ CREATE TABLE sj_retry_dead_letter_0
     executor_name varchar(512) NOT NULL DEFAULT '',
     args_str      text         NOT NULL,
     ext_attrs     text         NOT NULL,
-    task_type     smallint     NOT NULL DEFAULT 1,
     create_dt     timestamp    NOT NULL DEFAULT CURRENT_TIMESTAMP
 );
 
-CREATE UNIQUE INDEX uk_sj_retry_dead_letter_0_01 ON sj_retry_dead_letter_0 (namespace_id, group_name, unique_id);
-
-CREATE INDEX idx_sj_retry_dead_letter_0_01 ON sj_retry_dead_letter_0 (namespace_id, group_name, scene_name);
-CREATE INDEX idx_sj_retry_dead_letter_0_02 ON sj_retry_dead_letter_0 (idempotent_id);
-CREATE INDEX idx_sj_retry_dead_letter_0_03 ON sj_retry_dead_letter_0 (biz_no);
-CREATE INDEX idx_sj_retry_dead_letter_0_04 ON sj_retry_dead_letter_0 (create_dt);
-
-COMMENT ON COLUMN sj_retry_dead_letter_0.id IS '主键';
-COMMENT ON COLUMN sj_retry_dead_letter_0.namespace_id IS '命名空间id';
-COMMENT ON COLUMN sj_retry_dead_letter_0.unique_id IS '同组下id唯一';
-COMMENT ON COLUMN sj_retry_dead_letter_0.group_name IS '组名称';
-COMMENT ON COLUMN sj_retry_dead_letter_0.scene_name IS '场景名称';
-COMMENT ON COLUMN sj_retry_dead_letter_0.idempotent_id IS '幂等id';
-COMMENT ON COLUMN sj_retry_dead_letter_0.biz_no IS '业务编号';
-COMMENT ON COLUMN sj_retry_dead_letter_0.executor_name IS '执行器名称';
-COMMENT ON COLUMN sj_retry_dead_letter_0.args_str IS '执行方法参数';
-COMMENT ON COLUMN sj_retry_dead_letter_0.ext_attrs IS '扩展字段';
-COMMENT ON COLUMN sj_retry_dead_letter_0.task_type IS '任务类型 1、重试数据 2、回调数据';
-COMMENT ON COLUMN sj_retry_dead_letter_0.create_dt IS '创建时间';
-COMMENT ON TABLE sj_retry_dead_letter_0 IS '死信队列表';
-
--- sj_retry_task_0
-CREATE TABLE sj_retry_task_0
+CREATE INDEX idx_sj_retry_dead_letter_01 ON sj_retry_dead_letter (namespace_id, group_name, scene_name);
+CREATE INDEX idx_sj_retry_dead_letter_02 ON sj_retry_dead_letter (idempotent_id);
+CREATE INDEX idx_sj_retry_dead_letter_03 ON sj_retry_dead_letter (biz_no);
+CREATE INDEX idx_sj_retry_dead_letter_04 ON sj_retry_dead_letter (create_dt);
+
+COMMENT ON COLUMN sj_retry_dead_letter.id IS '主键';
+COMMENT ON COLUMN sj_retry_dead_letter.namespace_id IS '命名空间id';
+COMMENT ON COLUMN sj_retry_dead_letter.group_name IS '组名称';
+COMMENT ON COLUMN sj_retry_dead_letter.scene_name IS '场景名称';
+COMMENT ON COLUMN sj_retry_dead_letter.idempotent_id IS '幂等id';
+COMMENT ON COLUMN sj_retry_dead_letter.biz_no IS '业务编号';
+COMMENT ON COLUMN sj_retry_dead_letter.executor_name IS '执行器名称';
+COMMENT ON COLUMN sj_retry_dead_letter.args_str IS '执行方法参数';
+COMMENT ON COLUMN sj_retry_dead_letter.ext_attrs IS '扩展字段';
+COMMENT ON COLUMN sj_retry_dead_letter.create_dt IS '创建时间';
+COMMENT ON TABLE sj_retry_dead_letter IS '死信队列表';
+
+-- sj_retry
+CREATE TABLE sj_retry
 (
     id              bigserial PRIMARY KEY,
     namespace_id    varchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    unique_id       varchar(64)  NOT NULL,
     group_name      varchar(64)  NOT NULL,
     scene_name      varchar(64)  NOT NULL,
     idempotent_id   varchar(64)  NOT NULL,
@@ -183,103 +174,104 @@ CREATE TABLE sj_retry_task_0
     executor_name   varchar(512) NOT NULL DEFAULT '',
     args_str        text         NOT NULL,
     ext_attrs       text         NOT NULL,
-    next_trigger_at timestamp    NOT NULL,
+    next_trigger_at bigint       NOT NULL,
     retry_count     int          NOT NULL DEFAULT 0,
     retry_status    smallint     NOT NULL DEFAULT 0,
     task_type       smallint     NOT NULL DEFAULT 1,
+    bucket_index    int          NOT NULL DEFAULT 0,
+    parent_id       bigint       NOT NULL DEFAULT 0,
+    deleted         bigint       NOT NULL DEFAULT 0,
     create_dt       timestamp    NOT NULL DEFAULT CURRENT_TIMESTAMP,
     update_dt       timestamp    NOT NULL DEFAULT CURRENT_TIMESTAMP
 );
 
-CREATE UNIQUE INDEX uk_sj_retry_task_0_01 ON sj_retry_task_0 (namespace_id, group_name, unique_id);
-
-CREATE INDEX idx_sj_retry_task_0_01 ON sj_retry_task_0 (namespace_id, group_name, scene_name);
-CREATE INDEX idx_sj_retry_task_0_02 ON sj_retry_task_0 (namespace_id, group_name, task_type);
-CREATE INDEX idx_sj_retry_task_0_03 ON sj_retry_task_0 (namespace_id, group_name, retry_status);
-CREATE INDEX idx_sj_retry_task_0_04 ON sj_retry_task_0 (idempotent_id);
-CREATE INDEX idx_sj_retry_task_0_05 ON sj_retry_task_0 (biz_no);
-CREATE INDEX idx_sj_retry_task_0_06 ON sj_retry_task_0 (create_dt);
-
-COMMENT ON COLUMN sj_retry_task_0.id IS '主键';
-COMMENT ON COLUMN sj_retry_task_0.namespace_id IS '命名空间id';
-COMMENT ON COLUMN sj_retry_task_0.unique_id IS '同组下id唯一';
-COMMENT ON COLUMN sj_retry_task_0.group_name IS '组名称';
-COMMENT ON COLUMN sj_retry_task_0.scene_name IS '场景名称';
-COMMENT ON COLUMN sj_retry_task_0.idempotent_id IS '幂等id';
-COMMENT ON COLUMN sj_retry_task_0.biz_no IS '业务编号';
-COMMENT ON COLUMN sj_retry_task_0.executor_name IS '执行器名称';
-COMMENT ON COLUMN sj_retry_task_0.args_str IS '执行方法参数';
-COMMENT ON COLUMN sj_retry_task_0.ext_attrs IS '扩展字段';
-COMMENT ON COLUMN sj_retry_task_0.next_trigger_at IS '下次触发时间';
-COMMENT ON COLUMN sj_retry_task_0.retry_count IS '重试次数';
-COMMENT ON COLUMN sj_retry_task_0.retry_status IS '重试状态 0、重试中 1、成功 2、最大重试次数';
-COMMENT ON COLUMN sj_retry_task_0.task_type IS '任务类型 1、重试数据 2、回调数据';
-COMMENT ON COLUMN sj_retry_task_0.create_dt IS '创建时间';
-COMMENT ON COLUMN sj_retry_task_0.update_dt IS '修改时间';
-COMMENT ON TABLE sj_retry_task_0 IS '任务表';
-
--- sj_retry_task_log
-CREATE TABLE sj_retry_task_log
+CREATE UNIQUE INDEX uk_sj_retry_01 ON sj_retry (namespace_id, group_name, task_type, idempotent_id, deleted);
+
+CREATE INDEX idx_sj_retry_01 ON sj_retry (namespace_id, group_name, scene_name);
+CREATE INDEX idx_sj_retry_02 ON sj_retry (namespace_id, group_name, retry_status);
+CREATE INDEX idx_sj_retry_03 ON sj_retry (idempotent_id);
+CREATE INDEX idx_sj_retry_04 ON sj_retry (biz_no);
+CREATE INDEX idx_sj_retry_05 ON sj_retry (parent_id);
+CREATE INDEX idx_sj_retry_06 ON sj_retry (create_dt);
+
+COMMENT ON COLUMN sj_retry.id IS '主键';
+COMMENT ON COLUMN sj_retry.namespace_id IS '命名空间id';
+COMMENT ON COLUMN sj_retry.group_name IS '组名称';
+COMMENT ON COLUMN sj_retry.scene_name IS '场景名称';
+COMMENT ON COLUMN sj_retry.idempotent_id IS '幂等id';
+COMMENT ON COLUMN sj_retry.biz_no IS '业务编号';
+COMMENT ON COLUMN sj_retry.executor_name IS '执行器名称';
+COMMENT ON COLUMN sj_retry.args_str IS '执行方法参数';
+COMMENT ON COLUMN sj_retry.ext_attrs IS '扩展字段';
+COMMENT ON COLUMN sj_retry.next_trigger_at IS '下次触发时间';
+COMMENT ON COLUMN sj_retry.retry_count IS '重试次数';
+COMMENT ON COLUMN sj_retry.retry_status IS '重试状态 0、重试中 1、成功 2、最大重试次数';
+COMMENT ON COLUMN sj_retry.task_type IS '任务类型 1、重试数据 2、回调数据';
+COMMENT ON COLUMN sj_retry.bucket_index IS 'bucket';
+COMMENT ON COLUMN sj_retry.parent_id IS '父节点id';
+COMMENT ON COLUMN sj_retry.deleted IS '逻辑删除';
+COMMENT ON COLUMN sj_retry.create_dt IS '创建时间';
+COMMENT ON COLUMN sj_retry.update_dt IS '修改时间';
+COMMENT ON TABLE sj_retry IS '重试信息表';
+
+-- sj_retry_task
+CREATE TABLE sj_retry_task
 (
-    id            bigserial PRIMARY KEY,
-    namespace_id  varchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    unique_id     varchar(64)  NOT NULL,
-    group_name    varchar(64)  NOT NULL,
-    scene_name    varchar(64)  NOT NULL,
-    idempotent_id varchar(64)  NOT NULL,
-    biz_no        varchar(64)  NOT NULL DEFAULT '',
-    executor_name varchar(512) NOT NULL DEFAULT '',
-    args_str      text         NOT NULL,
-    ext_attrs     text         NOT NULL,
-    retry_status  smallint     NOT NULL DEFAULT 0,
-    task_type     smallint     NOT NULL DEFAULT 1,
-    create_dt     timestamp    NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    update_dt     timestamp    NOT NULL DEFAULT CURRENT_TIMESTAMP
+    id               bigserial PRIMARY KEY,
+    namespace_id     varchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name       varchar(64)  NOT NULL,
+    scene_name       varchar(64)  NOT NULL,
+    retry_id         bigint       NOT NULL,
+    ext_attrs        text         NOT NULL,
+    task_status      smallint     NOT NULL DEFAULT 1,
+    task_type        smallint     NOT NULL DEFAULT 1,
+    operation_reason smallint     NOT NULL DEFAULT 0,
+    client_info      varchar(128) NULL     DEFAULT NULL,
+    create_dt        timestamp    NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    update_dt        timestamp    NOT NULL DEFAULT CURRENT_TIMESTAMP
 );
 
-CREATE INDEX idx_sj_retry_task_log_01 ON sj_retry_task_log (namespace_id, group_name, scene_name);
-CREATE INDEX idx_sj_retry_task_log_02 ON sj_retry_task_log (retry_status);
-CREATE INDEX idx_sj_retry_task_log_03 ON sj_retry_task_log (idempotent_id);
-CREATE INDEX idx_sj_retry_task_log_04 ON sj_retry_task_log (unique_id);
-CREATE INDEX idx_sj_retry_task_log_05 ON sj_retry_task_log (biz_no);
-CREATE INDEX idx_sj_retry_task_log_06 ON sj_retry_task_log (create_dt);
-
-COMMENT ON COLUMN sj_retry_task_log.id IS '主键';
-COMMENT ON COLUMN sj_retry_task_log.namespace_id IS '命名空间id';
-COMMENT ON COLUMN sj_retry_task_log.unique_id IS '同组下id唯一';
-COMMENT ON COLUMN sj_retry_task_log.group_name IS '组名称';
-COMMENT ON COLUMN sj_retry_task_log.scene_name IS '场景名称';
-COMMENT ON COLUMN sj_retry_task_log.idempotent_id IS '幂等id';
-COMMENT ON COLUMN sj_retry_task_log.biz_no IS '业务编号';
-COMMENT ON COLUMN sj_retry_task_log.executor_name IS '执行器名称';
-COMMENT ON COLUMN sj_retry_task_log.args_str IS '执行方法参数';
-COMMENT ON COLUMN sj_retry_task_log.ext_attrs IS '扩展字段';
-COMMENT ON COLUMN sj_retry_task_log.retry_status IS '重试状态 0、重试中 1、成功 2、最大次数';
-COMMENT ON COLUMN sj_retry_task_log.task_type IS '任务类型 1、重试数据 2、回调数据';
-COMMENT ON COLUMN sj_retry_task_log.create_dt IS '创建时间';
-COMMENT ON COLUMN sj_retry_task_log.update_dt IS '修改时间';
-COMMENT ON TABLE sj_retry_task_log IS '任务日志基础信息表';
+CREATE INDEX idx_sj_retry_task_01 ON sj_retry_task (namespace_id, group_name, scene_name);
+CREATE INDEX idx_sj_retry_task_02 ON sj_retry_task (task_status);
+CREATE INDEX idx_sj_retry_task_03 ON sj_retry_task (create_dt);
+CREATE INDEX idx_sj_retry_task_04 ON sj_retry_task (retry_id);
+
+COMMENT ON COLUMN sj_retry_task.id IS '主键';
+COMMENT ON COLUMN sj_retry_task.namespace_id IS '命名空间id';
+COMMENT ON COLUMN sj_retry_task.group_name IS '组名称';
+COMMENT ON COLUMN sj_retry_task.scene_name IS '场景名称';
+COMMENT ON COLUMN sj_retry_task.retry_id IS '重试信息Id';
+COMMENT ON COLUMN sj_retry_task.ext_attrs IS '扩展字段';
+COMMENT ON COLUMN sj_retry_task.task_status IS '重试状态';
+COMMENT ON COLUMN sj_retry_task.task_type IS '任务类型 1、重试数据 2、回调数据';
+COMMENT ON COLUMN sj_retry_task.operation_reason IS '操作原因';
+COMMENT ON COLUMN sj_retry_task.client_info IS '客户端地址 clientId#ip:port';
+COMMENT ON COLUMN sj_retry_task.create_dt IS '创建时间';
+COMMENT ON COLUMN sj_retry_task.update_dt IS '修改时间';
+COMMENT ON TABLE sj_retry_task IS '重试任务表';
 
 -- sj_retry_task_log_message
 CREATE TABLE sj_retry_task_log_message
 (
-    id           bigserial PRIMARY KEY,
-    namespace_id varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    group_name   varchar(64) NOT NULL,
-    unique_id    varchar(64) NOT NULL,
-    message      text        NOT NULL,
-    log_num      int         NOT NULL DEFAULT 1,
-    real_time    bigint      NOT NULL DEFAULT 0,
-    create_dt    timestamp   NOT NULL DEFAULT CURRENT_TIMESTAMP
+    id            bigserial PRIMARY KEY,
+    namespace_id  varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name    varchar(64) NOT NULL,
+    retry_id      bigint      NOT NULL,
+    retry_task_id bigint      NOT NULL,
+    message       text        NOT NULL,
+    log_num       int         NOT NULL DEFAULT 1,
+    real_time     bigint      NOT NULL DEFAULT 0,
+    create_dt     timestamp   NOT NULL DEFAULT CURRENT_TIMESTAMP
 );
 
-CREATE INDEX idx_sj_retry_task_log_message_01 ON sj_retry_task_log_message (namespace_id, group_name, unique_id);
+CREATE INDEX idx_sj_retry_task_log_message_01 ON sj_retry_task_log_message (namespace_id, group_name, retry_task_id);
 CREATE INDEX idx_sj_retry_task_log_message_02 ON sj_retry_task_log_message (create_dt);
 
 COMMENT ON COLUMN sj_retry_task_log_message.id IS '主键';
 COMMENT ON COLUMN sj_retry_task_log_message.namespace_id IS '命名空间id';
 COMMENT ON COLUMN sj_retry_task_log_message.group_name IS '组名称';
-COMMENT ON COLUMN sj_retry_task_log_message.unique_id IS '同组下id唯一';
+COMMENT ON COLUMN sj_retry_task_log_message.retry_id IS '重试信息Id';
+COMMENT ON COLUMN sj_retry_task_log_message.retry_task_id IS '重试任务Id';
 COMMENT ON COLUMN sj_retry_task_log_message.message IS '异常信息';
 COMMENT ON COLUMN sj_retry_task_log_message.log_num IS '日志数量';
 COMMENT ON COLUMN sj_retry_task_log_message.real_time IS '上报时间';
@@ -289,21 +281,26 @@ COMMENT ON TABLE sj_retry_task_log_message IS '任务调度日志信息记录表
 -- sj_retry_scene_config
 CREATE TABLE sj_retry_scene_config
 (
-    id               bigserial PRIMARY KEY,
-    namespace_id     varchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    scene_name       varchar(64)  NOT NULL,
-    group_name       varchar(64)  NOT NULL,
-    scene_status     smallint     NOT NULL DEFAULT 0,
-    max_retry_count  int          NOT NULL DEFAULT 5,
-    back_off         smallint     NOT NULL DEFAULT 1,
-    trigger_interval varchar(16)  NOT NULL DEFAULT '',
-    notify_ids       varchar(128) NOT NULL DEFAULT '',
-    deadline_request bigint       NOT NULL DEFAULT 60000,
-    executor_timeout int          NOT NULL DEFAULT 5,
-    route_key        smallint     NOT NULL DEFAULT 4,
-    description      varchar(256) NOT NULL DEFAULT '',
-    create_dt        timestamp    NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    update_dt        timestamp    NOT NULL DEFAULT CURRENT_TIMESTAMP
+    id                  bigserial PRIMARY KEY,
+    namespace_id        varchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    scene_name          varchar(64)  NOT NULL,
+    group_name          varchar(64)  NOT NULL,
+    scene_status        smallint     NOT NULL DEFAULT 0,
+    max_retry_count     int          NOT NULL DEFAULT 5,
+    back_off            smallint     NOT NULL DEFAULT 1,
+    trigger_interval    varchar(16)  NOT NULL DEFAULT '',
+    notify_ids          varchar(128) NOT NULL DEFAULT '',
+    deadline_request    bigint       NOT NULL DEFAULT 60000,
+    executor_timeout    int          NOT NULL DEFAULT 5,
+    route_key           smallint     NOT NULL DEFAULT 4,
+    block_strategy      smallint     NOT NULL DEFAULT 1,
+    cb_status           smallint     NOT NULL DEFAULT 0,
+    cb_trigger_type     smallint     NOT NULL DEFAULT 1,
+    cb_max_count        int          NOT NULL DEFAULT 16,
+    cb_trigger_interval varchar(16)  NOT NULL DEFAULT '',
+    description         varchar(256) NOT NULL DEFAULT '',
+    create_dt           timestamp    NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    update_dt           timestamp    NOT NULL DEFAULT CURRENT_TIMESTAMP
 );
 
 CREATE UNIQUE INDEX uk_sj_retry_scene_config_01 ON sj_retry_scene_config (namespace_id, group_name, scene_name);
@@ -320,6 +317,11 @@ COMMENT ON COLUMN sj_retry_scene_config.notify_ids IS '通知告警场景配置i
 COMMENT ON COLUMN sj_retry_scene_config.deadline_request IS 'Deadline Request 调用链超时 单位毫秒';
 COMMENT ON COLUMN sj_retry_scene_config.executor_timeout IS '任务执行超时时间,单位秒';
 COMMENT ON COLUMN sj_retry_scene_config.route_key IS '路由策略';
+COMMENT ON COLUMN sj_retry_scene_config.block_strategy IS '阻塞策略 1、丢弃 2、覆盖 3、并行';
+COMMENT ON COLUMN sj_retry_scene_config.cb_status IS '回调状态 0、不开启 1、开启';
+COMMENT ON COLUMN sj_retry_scene_config.cb_trigger_type IS '1、默认等级 2、固定间隔时间 3、CRON 表达式';
+COMMENT ON COLUMN sj_retry_scene_config.cb_max_count IS '回调的最大执行次数';
+COMMENT ON COLUMN sj_retry_scene_config.cb_trigger_interval IS '回调的最大执行次数';
 COMMENT ON COLUMN sj_retry_scene_config.description IS '描述';
 COMMENT ON COLUMN sj_retry_scene_config.create_dt IS '创建时间';
 COMMENT ON COLUMN sj_retry_scene_config.update_dt IS '修改时间';
@@ -362,7 +364,7 @@ COMMENT ON TABLE sj_server_node IS '服务器节点';
 -- sj_distributed_lock
 CREATE TABLE sj_distributed_lock
 (
-    name       varchar(64)  PRIMARY KEY,
+    name       varchar(64)  NOT NULL,
     lock_until timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
     locked_at  timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
     locked_by  varchar(255) NOT NULL,
@@ -493,11 +495,11 @@ COMMENT ON COLUMN sj_job.executor_type IS '执行器类型';
 COMMENT ON COLUMN sj_job.executor_info IS '执行器名称';
 COMMENT ON COLUMN sj_job.trigger_type IS '触发类型 1.CRON 表达式 2. 固定时间';
 COMMENT ON COLUMN sj_job.trigger_interval IS '间隔时长';
-COMMENT ON COLUMN sj_job.block_strategy IS '阻塞策略 1、丢弃 2、覆盖 3、并行';
+COMMENT ON COLUMN sj_job.block_strategy IS '阻塞策略 1、丢弃 2、覆盖 3、并行 4、恢复';
 COMMENT ON COLUMN sj_job.executor_timeout IS '任务执行超时时间,单位秒';
 COMMENT ON COLUMN sj_job.max_retry_times IS '最大重试次数';
 COMMENT ON COLUMN sj_job.parallel_num IS '并行数';
-COMMENT ON COLUMN sj_job.retry_interval IS '重试间隔 ( s ) ';
+COMMENT ON COLUMN sj_job.retry_interval IS '重试间隔 ( s)';
 COMMENT ON COLUMN sj_job.bucket_index IS 'bucket';
 COMMENT ON COLUMN sj_job.resident IS '是否是常驻任务';
 COMMENT ON COLUMN sj_job.notify_ids IS '通知告警场景配置id列表';
@@ -664,7 +666,7 @@ CREATE INDEX idx_sj_job_summary_01 ON sj_job_summary (namespace_id, group_name,
 COMMENT ON COLUMN sj_job_summary.id IS '主键';
 COMMENT ON COLUMN sj_job_summary.namespace_id IS '命名空间id';
 COMMENT ON COLUMN sj_job_summary.group_name IS '组名称';
-COMMENT ON COLUMN sj_job_summary.business_id IS '业务id  ( job_id或workflow_id ) ';
+COMMENT ON COLUMN sj_job_summary.business_id IS '业务id  ( job_id或workflow_id)';
 COMMENT ON COLUMN sj_job_summary.system_task_type IS '任务类型 3、JOB任务 4、WORKFLOW任务';
 COMMENT ON COLUMN sj_job_summary.trigger_at IS '统计时间';
 COMMENT ON COLUMN sj_job_summary.success_num IS '执行成功-日志数量';

+ 63 - 62
script/sql/ry_job.sql

@@ -30,7 +30,6 @@ CREATE TABLE `sj_group_config`
     `group_partition`   int(11)             NOT NULL COMMENT '分区',
     `id_generator_mode` tinyint(4)          NOT NULL DEFAULT 1 COMMENT '唯一id生成模式 默认号段模式',
     `init_scene`        tinyint(4)          NOT NULL DEFAULT 0 COMMENT '是否初始化场景 0:否 1:是',
-    `bucket_index`      int(11)             NOT NULL DEFAULT 0 COMMENT 'bucket',
     `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`),
@@ -39,8 +38,8 @@ CREATE TABLE `sj_group_config`
   AUTO_INCREMENT = 0
   DEFAULT CHARSET = utf8mb4 COMMENT ='组配置';
 
-INSERT INTO `sj_group_config` VALUES (1, 'dev', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, 4, now(), now());
-INSERT INTO `sj_group_config` VALUES (2, 'prod', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, 4, now(), now());
+INSERT INTO `sj_group_config` VALUES (1, 'dev', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1,  now(), now());
+INSERT INTO `sj_group_config` VALUES (2, 'prod', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1,  now(), now());
 
 CREATE TABLE `sj_notify_config`
 (
@@ -80,11 +79,10 @@ CREATE TABLE `sj_notify_recipient`
   AUTO_INCREMENT = 0
   DEFAULT CHARSET = utf8mb4 COMMENT ='告警通知接收人';
 
-CREATE TABLE `sj_retry_dead_letter_0`
+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',
-    `unique_id`     varchar(64)         NOT NULL COMMENT '同组下id唯一',
     `group_name`    varchar(64)         NOT NULL COMMENT '组名称',
     `scene_name`    varchar(64)         NOT NULL COMMENT '场景名称',
     `idempotent_id` varchar(64)         NOT NULL COMMENT '幂等id',
@@ -92,23 +90,20 @@ CREATE TABLE `sj_retry_dead_letter_0`
     `executor_name` varchar(512)        NOT NULL DEFAULT '' COMMENT '执行器名称',
     `args_str`      text                NOT NULL COMMENT '执行方法参数',
     `ext_attrs`     text                NOT NULL COMMENT '扩展字段',
-    `task_type`     tinyint(4)          NOT NULL DEFAULT 1 COMMENT '任务类型 1、重试数据 2、回调数据',
     `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`),
-    UNIQUE KEY `uk_namespace_id_group_name_unique_id` (`namespace_id`, `group_name`, `unique_id`)
+    KEY `idx_create_dt` (`create_dt`)
 ) ENGINE = InnoDB
   AUTO_INCREMENT = 0
   DEFAULT CHARSET = utf8mb4 COMMENT ='死信队列表';
 
-CREATE TABLE `sj_retry_task_0`
+CREATE TABLE `sj_retry`
 (
     `id`              bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
     `namespace_id`    varchar(64)         NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
-    `unique_id`       varchar(64)         NOT NULL COMMENT '同组下id唯一',
     `group_name`      varchar(64)         NOT NULL COMMENT '组名称',
     `scene_name`      varchar(64)         NOT NULL COMMENT '场景名称',
     `idempotent_id`   varchar(64)         NOT NULL COMMENT '幂等id',
@@ -116,63 +111,63 @@ CREATE TABLE `sj_retry_task_0`
     `executor_name`   varchar(512)        NOT NULL DEFAULT '' COMMENT '执行器名称',
     `args_str`        text                NOT NULL COMMENT '执行方法参数',
     `ext_attrs`       text                NOT NULL COMMENT '扩展字段',
-    `next_trigger_at` datetime            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_task_type` (`namespace_id`, `group_name`, `task_type`),
     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_unique_id` (`namespace_id`, `group_name`, `unique_id`)
+    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 ='任务表';
+  DEFAULT CHARSET = utf8mb4 COMMENT ='重试信息表';
 
-CREATE TABLE `sj_retry_task_log`
+CREATE TABLE `sj_retry_task`
 (
-    `id`            bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
-    `namespace_id`  varchar(64)         NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
-    `unique_id`     varchar(64)         NOT NULL 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 '扩展字段',
-    `retry_status`  tinyint(4)          NOT NULL DEFAULT 0 COMMENT '重试状态 0、重试中 1、成功 2、最大次数',
-    `task_type`     tinyint(4)          NOT NULL DEFAULT 1 COMMENT '任务类型 1、重试数据 2、回调数据',
-    `create_dt`     datetime            NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-    `update_dt`     datetime            NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
+    `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 `idx_retry_status` (`retry_status`),
-    KEY `idx_idempotent_id` (`idempotent_id`),
-    KEY `idx_unique_id` (`unique_id`),
-    KEY `idx_biz_no` (`biz_no`),
-    KEY `idx_create_dt` (`create_dt`)
+    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 ='任务日志基础信息表';
+  DEFAULT CHARSET = utf8mb4 COMMENT ='重试任务表';
 
 CREATE TABLE `sj_retry_task_log_message`
 (
-    `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 '组名称',
-    `unique_id`    varchar(64)         NOT NULL COMMENT '同组下id唯一',
-    `message`      longtext            NOT NULL COMMENT '异常信息',
-    `log_num`      int(11)             NOT NULL DEFAULT 1 COMMENT '日志数量',
-    `real_time`    bigint(13)          NOT NULL DEFAULT 0 COMMENT '上报时间',
-    `create_dt`    datetime            NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+    `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 '组名称',
+    `retry_id`      bigint(20)          NOT NULL COMMENT '重试信息Id',
+    `retry_task_id` bigint(20)          NOT NULL COMMENT '重试任务Id',
+    `message`       longtext            NOT NULL COMMENT '异常信息',
+    `log_num`       int(11)             NOT NULL DEFAULT 1 COMMENT '日志数量',
+    `real_time`     bigint(13)          NOT NULL DEFAULT 0 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`, `unique_id`),
+    KEY `idx_namespace_id_group_name_retry_task_id` (`namespace_id`, `group_name`, `retry_task_id`),
     KEY `idx_create_dt` (`create_dt`)
 ) ENGINE = InnoDB
   AUTO_INCREMENT = 0
@@ -180,21 +175,26 @@ CREATE TABLE `sj_retry_task_log_message`
 
 CREATE TABLE `sj_retry_scene_config`
 (
-    `id`               bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
-    `namespace_id`     varchar(64)         NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
-    `scene_name`       varchar(64)         NOT NULL COMMENT '场景名称',
-    `group_name`       varchar(64)         NOT NULL COMMENT '组名称',
-    `scene_status`     tinyint(4)          NOT NULL DEFAULT 0 COMMENT '组状态 0、未启用 1、启用',
-    `max_retry_count`  int(11)             NOT NULL DEFAULT 5 COMMENT '最大重试次数',
-    `back_off`         tinyint(4)          NOT NULL DEFAULT 1 COMMENT '1、默认等级 2、固定间隔时间 3、CRON 表达式',
-    `trigger_interval` varchar(16)         NOT NULL DEFAULT '' COMMENT '间隔时长',
-    `notify_ids`       varchar(128)        NOT NULL DEFAULT '' COMMENT '通知告警场景配置id列表',
-    `deadline_request` bigint(20) unsigned NOT NULL DEFAULT 60000 COMMENT 'Deadline Request 调用链超时 单位毫秒',
-    `executor_timeout` int(11) unsigned    NOT NULL DEFAULT 5 COMMENT '任务执行超时时间,单位秒',
-    `route_key`        tinyint(4)          NOT NULL DEFAULT 4 COMMENT '路由策略',
-    `description`      varchar(256)        NOT NULL DEFAULT '' COMMENT '描述',
-    `create_dt`        datetime            NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-    `update_dt`        datetime            NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
+    `id`                  bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
+    `namespace_id`        varchar(64)         NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
+    `scene_name`          varchar(64)         NOT NULL COMMENT '场景名称',
+    `group_name`          varchar(64)         NOT NULL COMMENT '组名称',
+    `scene_status`        tinyint(4)          NOT NULL DEFAULT 0 COMMENT '组状态 0、未启用 1、启用',
+    `max_retry_count`     int(11)             NOT NULL DEFAULT 5 COMMENT '最大重试次数',
+    `back_off`            tinyint(4)          NOT NULL DEFAULT 1 COMMENT '1、默认等级 2、固定间隔时间 3、CRON 表达式',
+    `trigger_interval`    varchar(16)         NOT NULL DEFAULT '' COMMENT '间隔时长',
+    `notify_ids`          varchar(128)        NOT NULL DEFAULT '' COMMENT '通知告警场景配置id列表',
+    `deadline_request`    bigint(20) unsigned NOT NULL DEFAULT 60000 COMMENT 'Deadline Request 调用链超时 单位毫秒',
+    `executor_timeout`    int(11) unsigned    NOT NULL DEFAULT 5 COMMENT '任务执行超时时间,单位秒',
+    `route_key`           tinyint(4)          NOT NULL DEFAULT 4 COMMENT '路由策略',
+    `block_strategy`      tinyint(4)          NOT NULL DEFAULT 1 COMMENT '阻塞策略 1、丢弃 2、覆盖 3、并行',
+    `cb_status`           tinyint(4)          NOT NULL DEFAULT 0 COMMENT '回调状态 0、不开启 1、开启',
+    `cb_trigger_type`     tinyint(4)          NOT NULL DEFAULT 1 COMMENT '1、默认等级 2、固定间隔时间 3、CRON 表达式',
+    `cb_max_count`        int(11)             NOT NULL DEFAULT 16 COMMENT '回调的最大执行次数',
+    `cb_trigger_interval` varchar(16)         NOT NULL DEFAULT '' COMMENT '回调的最大执行次数',
+    `description`         varchar(256)        NOT NULL DEFAULT '' 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`),
     UNIQUE KEY `uk_namespace_id_group_name_scene_name` (`namespace_id`, `group_name`, `scene_name`)
 ) ENGINE = InnoDB
@@ -249,7 +249,8 @@ CREATE TABLE `sj_system_user`
   DEFAULT CHARSET = utf8mb4 COMMENT ='系统用户表';
 
 -- pwd: admin
-INSERT INTO `sj_system_user` VALUES (1, 'admin', '465c194afb65670f38322df087f0a9bb225cc257e43eb4ac5a0c98ef5b3173ac', 2, now(), now());
+INSERT INTO `sj_system_user` (username, password, role)
+VALUES ('admin', '465c194afb65670f38322df087f0a9bb225cc257e43eb4ac5a0c98ef5b3173ac', 2);
 
 CREATE TABLE `sj_system_user_permission`
 (
@@ -294,7 +295,7 @@ CREATE TABLE `sj_job`
     `executor_info`    varchar(255)                 DEFAULT NULL COMMENT '执行器名称',
     `trigger_type`     tinyint(4)          NOT NULL COMMENT '触发类型 1.CRON 表达式 2. 固定时间',
     `trigger_interval` varchar(255)        NOT NULL COMMENT '间隔时长',
-    `block_strategy`   tinyint(4)          NOT NULL DEFAULT 1 COMMENT '阻塞策略 1、丢弃 2、覆盖 3、并行',
+    `block_strategy`   tinyint(4)          NOT NULL DEFAULT 1 COMMENT '阻塞策略 1、丢弃 2、覆盖 3、并行 4、恢复',
     `executor_timeout` int(11)             NOT NULL DEFAULT 0 COMMENT '任务执行超时时间,单位秒',
     `max_retry_times`  int(11)             NOT NULL DEFAULT 0 COMMENT '最大重试次数',
     `parallel_num`     int(11)             NOT NULL DEFAULT 1 COMMENT '并行数',
@@ -448,7 +449,7 @@ CREATE TABLE `sj_workflow`
     `workflow_status`  tinyint(4)          NOT NULL DEFAULT 1 COMMENT '工作流状态 0、关闭、1、开启',
     `trigger_type`     tinyint(4)          NOT NULL COMMENT '触发类型 1.CRON 表达式 2. 固定时间',
     `trigger_interval` varchar(255)        NOT NULL COMMENT '间隔时长',
-    `next_trigger_at`  bigint(13)          NOT NULL COMMENT '下次触发时间',
+    `next_trigger_at`  bigint              NOT NULL COMMENT '下次触发时间',
     `block_strategy`   tinyint(4)          NOT NULL DEFAULT 1 COMMENT '阻塞策略 1、丢弃 2、覆盖 3、并行',
     `executor_timeout` int(11)             NOT NULL DEFAULT 0 COMMENT '任务执行超时时间,单位秒',
     `description`      varchar(256)        NOT NULL DEFAULT '' COMMENT '描述',

+ 193 - 176
script/sql/sqlserver/sqlserver_ry_job.sql

@@ -2,7 +2,7 @@
  SnailJob Database Transfer Tool
  Source Server Type    : MySQL
  Target Server Type    : Microsoft SQL Server
- Date: 2024-12-27 22:24:37
+ Date: 2025-02-25 22:16:48
 */
 
 
@@ -95,7 +95,6 @@ CREATE TABLE sj_group_config
     group_partition   int           NOT NULL,
     id_generator_mode tinyint       NOT NULL DEFAULT 1,
     init_scene        tinyint       NOT NULL DEFAULT 0,
-    bucket_index      int           NOT NULL DEFAULT 0,
     create_dt         datetime2     NOT NULL DEFAULT CURRENT_TIMESTAMP,
     update_dt         datetime2     NOT NULL DEFAULT CURRENT_TIMESTAMP
 )
@@ -174,13 +173,6 @@ EXEC sp_addextendedproperty
      'COLUMN', N'init_scene'
 GO
 
-EXEC sp_addextendedproperty
-     'MS_Description', N'bucket',
-     'SCHEMA', N'dbo',
-     'TABLE', N'sj_group_config',
-     'COLUMN', N'bucket_index'
-GO
-
 EXEC sp_addextendedproperty
      'MS_Description', N'创建时间',
      'SCHEMA', N'dbo',
@@ -201,9 +193,9 @@ EXEC sp_addextendedproperty
      'TABLE', N'sj_group_config'
 GO
 
-INSERT INTO sj_group_config(namespace_id, group_name, description, token, group_status, version, group_partition, id_generator_mode, init_scene, bucket_index, create_dt, update_dt) VALUES (N'dev', N'ruoyi_group', N'', N'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', N'1', N'1', N'0', N'1', N'1', N'4', getdate(), getdate())
+INSERT INTO sj_group_config(namespace_id, group_name, description, token, group_status, version, group_partition, id_generator_mode, init_scene, create_dt, update_dt) VALUES (N'dev', N'ruoyi_group', N'', N'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', N'1', N'1', N'0', N'1', N'1', getdate(), getdate())
 GO
-INSERT INTO sj_group_config(namespace_id, group_name, description, token, group_status, version, group_partition, id_generator_mode, init_scene, bucket_index, create_dt, update_dt) VALUES (N'prod', N'ruoyi_group', N'', N'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', N'1', N'1', N'0', N'1', N'1', N'4', getdate(), getdate())
+INSERT INTO sj_group_config(namespace_id, group_name, description, token, group_status, version, group_partition, id_generator_mode, init_scene, create_dt, update_dt) VALUES (N'prod', N'ruoyi_group', N'', N'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', N'1', N'1', N'0', N'1', N'1', getdate(), getdate())
 GO
 
 -- sj_notify_config
@@ -412,12 +404,11 @@ EXEC sp_addextendedproperty
      'TABLE', N'sj_notify_recipient'
 GO
 
--- sj_retry_dead_letter_0
-CREATE TABLE sj_retry_dead_letter_0
+-- sj_retry_dead_letter
+CREATE TABLE sj_retry_dead_letter
 (
     id            bigint        NOT NULL PRIMARY KEY IDENTITY,
     namespace_id  nvarchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    unique_id     nvarchar(64)  NOT NULL,
     group_name    nvarchar(64)  NOT NULL,
     scene_name    nvarchar(64)  NOT NULL,
     idempotent_id nvarchar(64)  NOT NULL,
@@ -425,119 +416,100 @@ CREATE TABLE sj_retry_dead_letter_0
     executor_name nvarchar(512) NOT NULL DEFAULT '',
     args_str      nvarchar(max) NOT NULL,
     ext_attrs     nvarchar(max) NOT NULL,
-    task_type     tinyint       NOT NULL DEFAULT 1,
     create_dt     datetime2     NOT NULL DEFAULT CURRENT_TIMESTAMP
 )
 GO
 
-CREATE UNIQUE INDEX uk_sj_retry_dead_letter_0_01 ON sj_retry_dead_letter_0 (namespace_id, group_name, unique_id)
-GO
-
-CREATE INDEX idx_sj_retry_dead_letter_0_01 ON sj_retry_dead_letter_0 (namespace_id, group_name, scene_name)
+CREATE INDEX idx_sj_retry_dead_letter_01 ON sj_retry_dead_letter (namespace_id, group_name, scene_name)
 GO
-CREATE INDEX idx_sj_retry_dead_letter_0_02 ON sj_retry_dead_letter_0 (idempotent_id)
+CREATE INDEX idx_sj_retry_dead_letter_02 ON sj_retry_dead_letter (idempotent_id)
 GO
-CREATE INDEX idx_sj_retry_dead_letter_0_03 ON sj_retry_dead_letter_0 (biz_no)
+CREATE INDEX idx_sj_retry_dead_letter_03 ON sj_retry_dead_letter (biz_no)
 GO
-CREATE INDEX idx_sj_retry_dead_letter_0_04 ON sj_retry_dead_letter_0 (create_dt)
+CREATE INDEX idx_sj_retry_dead_letter_04 ON sj_retry_dead_letter (create_dt)
 GO
 
 EXEC sp_addextendedproperty
      'MS_Description', N'主键',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_dead_letter_0',
+     'TABLE', N'sj_retry_dead_letter',
      'COLUMN', N'id'
 GO
 
 EXEC sp_addextendedproperty
      'MS_Description', N'命名空间id',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_dead_letter_0',
+     'TABLE', N'sj_retry_dead_letter',
      'COLUMN', N'namespace_id'
 GO
 
-EXEC sp_addextendedproperty
-     'MS_Description', N'同组下id唯一',
-     'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_dead_letter_0',
-     'COLUMN', N'unique_id'
-GO
-
 EXEC sp_addextendedproperty
      'MS_Description', N'组名称',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_dead_letter_0',
+     'TABLE', N'sj_retry_dead_letter',
      'COLUMN', N'group_name'
 GO
 
 EXEC sp_addextendedproperty
      'MS_Description', N'场景名称',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_dead_letter_0',
+     'TABLE', N'sj_retry_dead_letter',
      'COLUMN', N'scene_name'
 GO
 
 EXEC sp_addextendedproperty
      'MS_Description', N'幂等id',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_dead_letter_0',
+     'TABLE', N'sj_retry_dead_letter',
      'COLUMN', N'idempotent_id'
 GO
 
 EXEC sp_addextendedproperty
      'MS_Description', N'业务编号',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_dead_letter_0',
+     'TABLE', N'sj_retry_dead_letter',
      'COLUMN', N'biz_no'
 GO
 
 EXEC sp_addextendedproperty
      'MS_Description', N'执行器名称',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_dead_letter_0',
+     'TABLE', N'sj_retry_dead_letter',
      'COLUMN', N'executor_name'
 GO
 
 EXEC sp_addextendedproperty
      'MS_Description', N'执行方法参数',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_dead_letter_0',
+     'TABLE', N'sj_retry_dead_letter',
      'COLUMN', N'args_str'
 GO
 
 EXEC sp_addextendedproperty
      'MS_Description', N'扩展字段',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_dead_letter_0',
+     'TABLE', N'sj_retry_dead_letter',
      'COLUMN', N'ext_attrs'
 GO
 
-EXEC sp_addextendedproperty
-     'MS_Description', N'任务类型 1、重试数据 2、回调数据',
-     'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_dead_letter_0',
-     'COLUMN', N'task_type'
-GO
-
 EXEC sp_addextendedproperty
      'MS_Description', N'创建时间',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_dead_letter_0',
+     'TABLE', N'sj_retry_dead_letter',
      'COLUMN', N'create_dt'
 GO
 
 EXEC sp_addextendedproperty
      'MS_Description', N'死信队列表',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_dead_letter_0'
+     'TABLE', N'sj_retry_dead_letter'
 GO
 
--- sj_retry_task_0
-CREATE TABLE sj_retry_task_0
+-- sj_retry
+CREATE TABLE sj_retry
 (
     id              bigint        NOT NULL PRIMARY KEY IDENTITY,
     namespace_id    nvarchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    unique_id       nvarchar(64)  NOT NULL,
     group_name      nvarchar(64)  NOT NULL,
     scene_name      nvarchar(64)  NOT NULL,
     idempotent_id   nvarchar(64)  NOT NULL,
@@ -545,301 +517,299 @@ CREATE TABLE sj_retry_task_0
     executor_name   nvarchar(512) NOT NULL DEFAULT '',
     args_str        nvarchar(max) NOT NULL,
     ext_attrs       nvarchar(max) NOT NULL,
-    next_trigger_at datetime2     NOT NULL,
+    next_trigger_at bigint        NOT NULL,
     retry_count     int           NOT NULL DEFAULT 0,
     retry_status    tinyint       NOT NULL DEFAULT 0,
     task_type       tinyint       NOT NULL DEFAULT 1,
+    bucket_index    int           NOT NULL DEFAULT 0,
+    parent_id       bigint        NOT NULL DEFAULT 0,
+    deleted         bigint        NOT NULL DEFAULT 0,
     create_dt       datetime2     NOT NULL DEFAULT CURRENT_TIMESTAMP,
     update_dt       datetime2     NOT NULL DEFAULT CURRENT_TIMESTAMP
 )
 GO
 
-CREATE UNIQUE INDEX uk_sj_retry_task_0_01 ON sj_retry_task_0 (namespace_id, group_name, unique_id)
+CREATE UNIQUE INDEX uk_sj_retry_01 ON sj_retry (namespace_id, group_name, task_type, idempotent_id, deleted)
 GO
 
-CREATE INDEX idx_sj_retry_task_0_01 ON sj_retry_task_0 (namespace_id, group_name, scene_name)
+CREATE INDEX idx_sj_retry_01 ON sj_retry (namespace_id, group_name, scene_name)
 GO
-CREATE INDEX idx_sj_retry_task_0_02 ON sj_retry_task_0 (namespace_id, group_name, task_type)
+CREATE INDEX idx_sj_retry_02 ON sj_retry (namespace_id, group_name, retry_status)
 GO
-CREATE INDEX idx_sj_retry_task_0_03 ON sj_retry_task_0 (namespace_id, group_name, retry_status)
+CREATE INDEX idx_sj_retry_03 ON sj_retry (idempotent_id)
 GO
-CREATE INDEX idx_sj_retry_task_0_04 ON sj_retry_task_0 (idempotent_id)
+CREATE INDEX idx_sj_retry_04 ON sj_retry (biz_no)
 GO
-CREATE INDEX idx_sj_retry_task_0_05 ON sj_retry_task_0 (biz_no)
+CREATE INDEX idx_sj_retry_05 ON sj_retry (parent_id)
 GO
-CREATE INDEX idx_sj_retry_task_0_06 ON sj_retry_task_0 (create_dt)
+CREATE INDEX idx_sj_retry_06 ON sj_retry (create_dt)
 GO
 
 EXEC sp_addextendedproperty
      'MS_Description', N'主键',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_0',
+     'TABLE', N'sj_retry',
      'COLUMN', N'id'
 GO
 
 EXEC sp_addextendedproperty
      'MS_Description', N'命名空间id',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_0',
+     'TABLE', N'sj_retry',
      'COLUMN', N'namespace_id'
 GO
 
-EXEC sp_addextendedproperty
-     'MS_Description', N'同组下id唯一',
-     'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_0',
-     'COLUMN', N'unique_id'
-GO
-
 EXEC sp_addextendedproperty
      'MS_Description', N'组名称',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_0',
+     'TABLE', N'sj_retry',
      'COLUMN', N'group_name'
 GO
 
 EXEC sp_addextendedproperty
      'MS_Description', N'场景名称',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_0',
+     'TABLE', N'sj_retry',
      'COLUMN', N'scene_name'
 GO
 
 EXEC sp_addextendedproperty
      'MS_Description', N'幂等id',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_0',
+     'TABLE', N'sj_retry',
      'COLUMN', N'idempotent_id'
 GO
 
 EXEC sp_addextendedproperty
      'MS_Description', N'业务编号',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_0',
+     'TABLE', N'sj_retry',
      'COLUMN', N'biz_no'
 GO
 
 EXEC sp_addextendedproperty
      'MS_Description', N'执行器名称',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_0',
+     'TABLE', N'sj_retry',
      'COLUMN', N'executor_name'
 GO
 
 EXEC sp_addextendedproperty
      'MS_Description', N'执行方法参数',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_0',
+     'TABLE', N'sj_retry',
      'COLUMN', N'args_str'
 GO
 
 EXEC sp_addextendedproperty
      'MS_Description', N'扩展字段',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_0',
+     'TABLE', N'sj_retry',
      'COLUMN', N'ext_attrs'
 GO
 
 EXEC sp_addextendedproperty
      'MS_Description', N'下次触发时间',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_0',
+     'TABLE', N'sj_retry',
      'COLUMN', N'next_trigger_at'
 GO
 
 EXEC sp_addextendedproperty
      'MS_Description', N'重试次数',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_0',
+     'TABLE', N'sj_retry',
      'COLUMN', N'retry_count'
 GO
 
 EXEC sp_addextendedproperty
      'MS_Description', N'重试状态 0、重试中 1、成功 2、最大重试次数',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_0',
+     'TABLE', N'sj_retry',
      'COLUMN', N'retry_status'
 GO
 
 EXEC sp_addextendedproperty
      'MS_Description', N'任务类型 1、重试数据 2、回调数据',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_0',
+     'TABLE', N'sj_retry',
      'COLUMN', N'task_type'
 GO
 
+EXEC sp_addextendedproperty
+     'MS_Description', N'bucket',
+     'SCHEMA', N'dbo',
+     'TABLE', N'sj_retry',
+     'COLUMN', N'bucket_index'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'父节点id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'sj_retry',
+     'COLUMN', N'parent_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'逻辑删除',
+     'SCHEMA', N'dbo',
+     'TABLE', N'sj_retry',
+     'COLUMN', N'deleted'
+GO
+
 EXEC sp_addextendedproperty
      'MS_Description', N'创建时间',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_0',
+     'TABLE', N'sj_retry',
      'COLUMN', N'create_dt'
 GO
 
 EXEC sp_addextendedproperty
      'MS_Description', N'修改时间',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_0',
+     'TABLE', N'sj_retry',
      'COLUMN', N'update_dt'
 GO
 
 EXEC sp_addextendedproperty
-     'MS_Description', N'任务表',
+     'MS_Description', N'重试信息表',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_0'
+     'TABLE', N'sj_retry'
 GO
 
--- sj_retry_task_log
-CREATE TABLE sj_retry_task_log
+-- sj_retry_task
+CREATE TABLE sj_retry_task
 (
-    id            bigint        NOT NULL PRIMARY KEY IDENTITY,
-    namespace_id  nvarchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    unique_id     nvarchar(64)  NOT NULL,
-    group_name    nvarchar(64)  NOT NULL,
-    scene_name    nvarchar(64)  NOT NULL,
-    idempotent_id nvarchar(64)  NOT NULL,
-    biz_no        nvarchar(64)  NOT NULL DEFAULT '',
-    executor_name nvarchar(512) NOT NULL DEFAULT '',
-    args_str      nvarchar(max) NOT NULL,
-    ext_attrs     nvarchar(max) NOT NULL,
-    retry_status  tinyint       NOT NULL DEFAULT 0,
-    task_type     tinyint       NOT NULL DEFAULT 1,
-    create_dt     datetime2     NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    update_dt     datetime2     NOT NULL DEFAULT CURRENT_TIMESTAMP
+    id               bigint        NOT NULL PRIMARY KEY IDENTITY,
+    namespace_id     nvarchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name       nvarchar(64)  NOT NULL,
+    scene_name       nvarchar(64)  NOT NULL,
+    retry_id         bigint        NOT NULL,
+    ext_attrs        nvarchar(max) NOT NULL,
+    task_status      tinyint       NOT NULL DEFAULT 1,
+    task_type        tinyint       NOT NULL DEFAULT 1,
+    operation_reason tinyint       NOT NULL DEFAULT 0,
+    client_info      nvarchar(128) NULL     DEFAULT NULL,
+    create_dt        datetime2     NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    update_dt        datetime2     NOT NULL DEFAULT CURRENT_TIMESTAMP
 )
 GO
 
-CREATE INDEX idx_sj_retry_task_log_01 ON sj_retry_task_log (namespace_id, group_name, scene_name)
-GO
-CREATE INDEX idx_sj_retry_task_log_02 ON sj_retry_task_log (retry_status)
-GO
-CREATE INDEX idx_sj_retry_task_log_03 ON sj_retry_task_log (idempotent_id)
+CREATE INDEX idx_sj_retry_task_01 ON sj_retry_task (namespace_id, group_name, scene_name)
 GO
-CREATE INDEX idx_sj_retry_task_log_04 ON sj_retry_task_log (unique_id)
+CREATE INDEX idx_sj_retry_task_02 ON sj_retry_task (task_status)
 GO
-CREATE INDEX idx_sj_retry_task_log_05 ON sj_retry_task_log (biz_no)
+CREATE INDEX idx_sj_retry_task_03 ON sj_retry_task (create_dt)
 GO
-CREATE INDEX idx_sj_retry_task_log_06 ON sj_retry_task_log (create_dt)
+CREATE INDEX idx_sj_retry_task_04 ON sj_retry_task (retry_id)
 GO
 
 EXEC sp_addextendedproperty
      'MS_Description', N'主键',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_log',
+     'TABLE', N'sj_retry_task',
      'COLUMN', N'id'
 GO
 
 EXEC sp_addextendedproperty
      'MS_Description', N'命名空间id',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_log',
+     'TABLE', N'sj_retry_task',
      'COLUMN', N'namespace_id'
 GO
 
-EXEC sp_addextendedproperty
-     'MS_Description', N'同组下id唯一',
-     'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_log',
-     'COLUMN', N'unique_id'
-GO
-
 EXEC sp_addextendedproperty
      'MS_Description', N'组名称',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_log',
+     'TABLE', N'sj_retry_task',
      'COLUMN', N'group_name'
 GO
 
 EXEC sp_addextendedproperty
      'MS_Description', N'场景名称',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_log',
+     'TABLE', N'sj_retry_task',
      'COLUMN', N'scene_name'
 GO
 
 EXEC sp_addextendedproperty
-     'MS_Description', N'幂等id',
+     'MS_Description', N'重试信息Id',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_log',
-     'COLUMN', N'idempotent_id'
-GO
-
-EXEC sp_addextendedproperty
-     'MS_Description', N'业务编号',
-     'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_log',
-     'COLUMN', N'biz_no'
+     'TABLE', N'sj_retry_task',
+     'COLUMN', N'retry_id'
 GO
 
 EXEC sp_addextendedproperty
-     'MS_Description', N'执行器名称',
+     'MS_Description', N'扩展字段',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_log',
-     'COLUMN', N'executor_name'
+     'TABLE', N'sj_retry_task',
+     'COLUMN', N'ext_attrs'
 GO
 
 EXEC sp_addextendedproperty
-     'MS_Description', N'执行方法参数',
+     'MS_Description', N'重试状态',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_log',
-     'COLUMN', N'args_str'
+     'TABLE', N'sj_retry_task',
+     'COLUMN', N'task_status'
 GO
 
 EXEC sp_addextendedproperty
-     'MS_Description', N'扩展字段',
+     'MS_Description', N'任务类型 1、重试数据 2、回调数据',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_log',
-     'COLUMN', N'ext_attrs'
+     'TABLE', N'sj_retry_task',
+     'COLUMN', N'task_type'
 GO
 
 EXEC sp_addextendedproperty
-     'MS_Description', N'重试状态 0、重试中 1、成功 2、最大次数',
+     'MS_Description', N'操作原因',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_log',
-     'COLUMN', N'retry_status'
+     'TABLE', N'sj_retry_task',
+     'COLUMN', N'operation_reason'
 GO
 
 EXEC sp_addextendedproperty
-     'MS_Description', N'任务类型 1、重试数据 2、回调数据',
+     'MS_Description', N'客户端地址 clientId#ip:port',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_log',
-     'COLUMN', N'task_type'
+     'TABLE', N'sj_retry_task',
+     'COLUMN', N'client_info'
 GO
 
 EXEC sp_addextendedproperty
      'MS_Description', N'创建时间',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_log',
+     'TABLE', N'sj_retry_task',
      'COLUMN', N'create_dt'
 GO
 
 EXEC sp_addextendedproperty
      'MS_Description', N'修改时间',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_log',
+     'TABLE', N'sj_retry_task',
      'COLUMN', N'update_dt'
 GO
 
 EXEC sp_addextendedproperty
-     'MS_Description', N'任务日志基础信息表',
+     'MS_Description', N'重试任务表',
      'SCHEMA', N'dbo',
-     'TABLE', N'sj_retry_task_log'
+     'TABLE', N'sj_retry_task'
 GO
 
 -- sj_retry_task_log_message
 CREATE TABLE sj_retry_task_log_message
 (
-    id           bigint        NOT NULL PRIMARY KEY IDENTITY,
-    namespace_id nvarchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    group_name   nvarchar(64)  NOT NULL,
-    unique_id    nvarchar(64)  NOT NULL,
-    message      nvarchar(max) NOT NULL,
-    log_num      int           NOT NULL DEFAULT 1,
-    real_time    bigint        NOT NULL DEFAULT 0,
-    create_dt    datetime2     NOT NULL DEFAULT CURRENT_TIMESTAMP
+    id            bigint        NOT NULL PRIMARY KEY IDENTITY,
+    namespace_id  nvarchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    group_name    nvarchar(64)  NOT NULL,
+    retry_id      bigint        NOT NULL,
+    retry_task_id bigint        NOT NULL,
+    message       nvarchar(max) NOT NULL,
+    log_num       int           NOT NULL DEFAULT 1,
+    real_time     bigint        NOT NULL DEFAULT 0,
+    create_dt     datetime2     NOT NULL DEFAULT CURRENT_TIMESTAMP
 )
 GO
 
-CREATE INDEX idx_sj_retry_task_log_message_01 ON sj_retry_task_log_message (namespace_id, group_name, unique_id)
+CREATE INDEX idx_sj_retry_task_log_message_01 ON sj_retry_task_log_message (namespace_id, group_name, retry_task_id)
 GO
 CREATE INDEX idx_sj_retry_task_log_message_02 ON sj_retry_task_log_message (create_dt)
 GO
@@ -866,10 +836,17 @@ EXEC sp_addextendedproperty
 GO
 
 EXEC sp_addextendedproperty
-     'MS_Description', N'同组下id唯一',
+     'MS_Description', N'重试信息Id',
      'SCHEMA', N'dbo',
      'TABLE', N'sj_retry_task_log_message',
-     'COLUMN', N'unique_id'
+     'COLUMN', N'retry_id'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'重试任务Id',
+     'SCHEMA', N'dbo',
+     'TABLE', N'sj_retry_task_log_message',
+     'COLUMN', N'retry_task_id'
 GO
 
 EXEC sp_addextendedproperty
@@ -909,21 +886,26 @@ GO
 -- sj_retry_scene_config
 CREATE TABLE sj_retry_scene_config
 (
-    id               bigint        NOT NULL PRIMARY KEY IDENTITY,
-    namespace_id     nvarchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
-    scene_name       nvarchar(64)  NOT NULL,
-    group_name       nvarchar(64)  NOT NULL,
-    scene_status     tinyint       NOT NULL DEFAULT 0,
-    max_retry_count  int           NOT NULL DEFAULT 5,
-    back_off         tinyint       NOT NULL DEFAULT 1,
-    trigger_interval nvarchar(16)  NOT NULL DEFAULT '',
-    notify_ids       nvarchar(128) NOT NULL DEFAULT '',
-    deadline_request bigint        NOT NULL DEFAULT 60000,
-    executor_timeout int           NOT NULL DEFAULT 5,
-    route_key        tinyint       NOT NULL DEFAULT 4,
-    description      nvarchar(256) NOT NULL DEFAULT '',
-    create_dt        datetime2     NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    update_dt        datetime2     NOT NULL DEFAULT CURRENT_TIMESTAMP
+    id                  bigint        NOT NULL PRIMARY KEY IDENTITY,
+    namespace_id        nvarchar(64)  NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
+    scene_name          nvarchar(64)  NOT NULL,
+    group_name          nvarchar(64)  NOT NULL,
+    scene_status        tinyint       NOT NULL DEFAULT 0,
+    max_retry_count     int           NOT NULL DEFAULT 5,
+    back_off            tinyint       NOT NULL DEFAULT 1,
+    trigger_interval    nvarchar(16)  NOT NULL DEFAULT '',
+    notify_ids          nvarchar(128) NOT NULL DEFAULT '',
+    deadline_request    bigint        NOT NULL DEFAULT 60000,
+    executor_timeout    int           NOT NULL DEFAULT 5,
+    route_key           tinyint       NOT NULL DEFAULT 4,
+    block_strategy      tinyint       NOT NULL DEFAULT 1,
+    cb_status           tinyint       NOT NULL DEFAULT 0,
+    cb_trigger_type     tinyint       NOT NULL DEFAULT 1,
+    cb_max_count        int           NOT NULL DEFAULT 16,
+    cb_trigger_interval nvarchar(16)  NOT NULL DEFAULT '',
+    description         nvarchar(256) NOT NULL DEFAULT '',
+    create_dt           datetime2     NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    update_dt           datetime2     NOT NULL DEFAULT CURRENT_TIMESTAMP
 )
 GO
 
@@ -1014,6 +996,41 @@ EXEC sp_addextendedproperty
      'COLUMN', N'route_key'
 GO
 
+EXEC sp_addextendedproperty
+     'MS_Description', N'阻塞策略 1、丢弃 2、覆盖 3、并行',
+     'SCHEMA', N'dbo',
+     'TABLE', N'sj_retry_scene_config',
+     'COLUMN', N'block_strategy'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'回调状态 0、不开启 1、开启',
+     'SCHEMA', N'dbo',
+     'TABLE', N'sj_retry_scene_config',
+     'COLUMN', N'cb_status'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'1、默认等级 2、固定间隔时间 3、CRON 表达式',
+     'SCHEMA', N'dbo',
+     'TABLE', N'sj_retry_scene_config',
+     'COLUMN', N'cb_trigger_type'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'回调的最大执行次数',
+     'SCHEMA', N'dbo',
+     'TABLE', N'sj_retry_scene_config',
+     'COLUMN', N'cb_max_count'
+GO
+
+EXEC sp_addextendedproperty
+     'MS_Description', N'回调的最大执行次数',
+     'SCHEMA', N'dbo',
+     'TABLE', N'sj_retry_scene_config',
+     'COLUMN', N'cb_trigger_interval'
+GO
+
 EXEC sp_addextendedproperty
      'MS_Description', N'描述',
      'SCHEMA', N'dbo',
@@ -1152,7 +1169,7 @@ GO
 -- sj_distributed_lock
 CREATE TABLE sj_distributed_lock
 (
-    name       nvarchar(64)  NOT NULL PRIMARY KEY,
+    name       nvarchar(64)  NOT NULL,
     lock_until datetime2     NOT NULL DEFAULT CURRENT_TIMESTAMP,
     locked_at  datetime2     NOT NULL DEFAULT CURRENT_TIMESTAMP,
     locked_by  nvarchar(255) NOT NULL,
@@ -1539,7 +1556,7 @@ EXEC sp_addextendedproperty
 GO
 
 EXEC sp_addextendedproperty
-     'MS_Description', N'阻塞策略 1、丢弃 2、覆盖 3、并行',
+     'MS_Description', N'阻塞策略 1、丢弃 2、覆盖 3、并行 4、恢复',
      'SCHEMA', N'dbo',
      'TABLE', N'sj_job',
      'COLUMN', N'block_strategy'
@@ -1567,7 +1584,7 @@ EXEC sp_addextendedproperty
 GO
 
 EXEC sp_addextendedproperty
-     'MS_Description', N'重试间隔 ( s ) ',
+     'MS_Description', N'重试间隔 ( s)',
      'SCHEMA', N'dbo',
      'TABLE', N'sj_job',
      'COLUMN', N'retry_interval'
@@ -2121,7 +2138,7 @@ EXEC sp_addextendedproperty
 GO
 
 EXEC sp_addextendedproperty
-     'MS_Description', N'业务id  ( job_id或workflow_id ) ',
+     'MS_Description', N'业务id  ( job_id或workflow_id)',
      'SCHEMA', N'dbo',
      'TABLE', N'sj_job_summary',
      'COLUMN', N'business_id'