diff --git a/doc/sql/easy_retry_mysql.sql b/doc/sql/easy_retry_mysql.sql index e9e88653..77f63d63 100644 --- a/doc/sql/easy_retry_mysql.sql +++ b/doc/sql/easy_retry_mysql.sql @@ -263,7 +263,8 @@ CREATE TABLE `job_log_message` `ext_attrs` varchar(256) NULL default '' COMMENT '扩展字段', PRIMARY KEY (`id`), KEY `idx_task_batch_id_task_id` (`task_batch_id`, `task_id`), - KEY `idx_create_dt` (`create_dt`) + KEY `idx_create_dt` (`create_dt`), + KEY `idx_group_name` (`group_name`) ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COMMENT='调度日志'; CREATE TABLE `job_task` @@ -284,7 +285,8 @@ CREATE TABLE `job_task` `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`id`), KEY `idx_task_batch_id_task_status` (`task_batch_id`, `task_status`), - KEY `idx_create_dt` (`create_dt`) + KEY `idx_create_dt` (`create_dt`), + KEY `idx_group_name` (`group_name`) ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COMMENT='任务实例'; CREATE TABLE `job_task_batch` @@ -295,11 +297,13 @@ CREATE TABLE `job_task_batch` `task_batch_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '任务批次状态 0、失败 1、成功', `operation_reason` tinyint(4) NOT NULL DEFAULT '0' COMMENT '操作原因', `execution_at` bigint(13) NOT NULL DEFAULT '0' COMMENT '任务执行时间', + `parent_id` varchar(64) 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 '修改时间', `deleted` tinyint(4) NOT NULL DEFAULT '0' COMMENT '逻辑删除 1、删除', `ext_attrs` varchar(256) NULL default '' COMMENT '扩展字段', PRIMARY KEY (`id`), KEY `idx_job_id_task_batch_status` (`job_id`, `task_batch_status`), - KEY `idx_create_dt` (`create_dt`) + KEY `idx_create_dt` (`create_dt`), + KEY `idx_group_name` (`group_name`) ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COMMENT='任务批次'; diff --git a/doc/sql/easy_retry_postgre.sql b/doc/sql/easy_retry_postgre.sql index 50a5cc8d..32c4854d 100644 --- a/doc/sql/easy_retry_postgre.sql +++ b/doc/sql/easy_retry_postgre.sql @@ -34,6 +34,7 @@ CREATE TABLE notify_config ( id BIGSERIAL PRIMARY KEY, group_name VARCHAR(64) NOT NULL, + notify_status SMALLINT NOT NULL DEFAULT 0, notify_type SMALLINT NOT NULL DEFAULT 0, notify_attribute VARCHAR(512) NOT NULL, notify_threshold INT NOT NULL DEFAULT 0, @@ -45,26 +46,17 @@ CREATE TABLE notify_config CREATE INDEX idx_group_name ON notify_config (group_name); -COMMENT -ON COLUMN "notify_config"."id" IS '主键'; -COMMENT -ON COLUMN "notify_config"."group_name" IS '组名称'; -COMMENT -ON COLUMN "notify_config"."notify_type" IS '通知类型 1、钉钉 2、邮件 3、企业微信'; -COMMENT -ON COLUMN "notify_config"."notify_attribute" IS '配置属性'; -COMMENT -ON COLUMN "notify_config"."notify_threshold" IS '通知阈值'; -COMMENT -ON COLUMN "notify_config"."notify_scene" IS '通知场景'; -COMMENT -ON COLUMN "notify_config"."description" IS '描述'; -COMMENT -ON COLUMN "notify_config"."create_dt" IS '创建时间'; -COMMENT -ON COLUMN "notify_config"."update_dt" IS '修改时间'; -COMMENT -ON TABLE "notify_config" IS '通知配置'; +COMMENT ON COLUMN "notify_config"."id" IS '主键'; +COMMENT ON COLUMN "notify_config"."group_name" IS '组名称'; +COMMENT ON COLUMN "notify_config"."notify_status" IS '通知状态 0、未启用 1、启用'; +COMMENT ON COLUMN "notify_config"."notify_type" IS '通知类型 1、钉钉 2、邮件 3、企业微信'; +COMMENT ON COLUMN "notify_config"."notify_attribute" IS '配置属性'; +COMMENT ON COLUMN "notify_config"."notify_threshold" IS '通知阈值'; +COMMENT ON COLUMN "notify_config"."notify_scene" IS '通知场景'; +COMMENT ON COLUMN "notify_config"."description" IS '描述'; +COMMENT ON COLUMN "notify_config"."create_dt" IS '创建时间'; +COMMENT ON COLUMN "notify_config"."update_dt" IS '修改时间'; +COMMENT ON TABLE "notify_config" IS '通知配置'; CREATE TABLE retry_dead_letter_0 @@ -116,7 +108,6 @@ CREATE TABLE retry_task_0 retry_count INT NOT NULL DEFAULT 0, retry_status SMALLINT NOT NULL DEFAULT 0, task_type SMALLINT NOT NULL DEFAULT 1, - route_key SMALLINT NOT NULL, create_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, update_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ); @@ -184,11 +175,12 @@ COMMENT ON TABLE "retry_task_log" IS '任务日志基础信息表'; CREATE TABLE retry_task_log_message ( - id BIGSERIAL PRIMARY KEY, - group_name VARCHAR(64) NOT NULL, - unique_id VARCHAR(64) NOT NULL, - create_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - message TEXT NOT NULL + id BIGSERIAL PRIMARY KEY, + group_name VARCHAR(64) NOT NULL, + unique_id VARCHAR(64) NOT NULL, + create_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + message TEXT NOT NULL, + client_info VARCHAR(128) DEFAULT NULL ); CREATE INDEX "idx_group_name_unique_id" ON "retry_task_log_message" ("group_name", "unique_id"); @@ -198,6 +190,7 @@ COMMENT ON COLUMN "retry_task_log_message"."group_name" IS '组名称'; COMMENT ON COLUMN "retry_task_log_message"."unique_id" IS '同组下id唯一'; COMMENT ON COLUMN "retry_task_log_message"."create_dt" IS '创建时间'; COMMENT ON COLUMN "retry_task_log_message"."message" IS '异常信息'; +COMMENT ON COLUMN "retry_task_log_message"."client_info" IS '客户端地址 clientId#ip:port'; COMMENT ON TABLE "retry_task_log_message" IS '任务调度日志信息记录表'; CREATE TABLE scene_config @@ -210,7 +203,7 @@ CREATE TABLE scene_config back_off SMALLINT NOT NULL DEFAULT 1, trigger_interval VARCHAR(16) NOT NULL DEFAULT '', deadline_request BIGINT NOT NULL DEFAULT 60000, - route_key SMALLINT NOT NULL, + route_key SMALLINT NOT NULL DEFAULT 4, executor_timeout INT NOT NULL DEFAULT 5, description VARCHAR(256) NOT NULL DEFAULT '', create_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, @@ -351,8 +344,7 @@ CREATE TABLE job group_name VARCHAR(64) NOT NULL, job_name VARCHAR(64) NOT NULL, args_str TEXT NOT NULL, - args_type SMALLINT NOT NULL 1, - ext_attrs TEXT NOT NULL, + args_type SMALLINT NOT NULL DEFAULT 1, next_trigger_at BIGINT NOT NULL, job_status SMALLINT NOT NULL DEFAULT 1, task_type SMALLINT NOT NULL DEFAULT 1, @@ -375,9 +367,9 @@ CREATE TABLE job deleted SMALLINT NOT NULL DEFAULT 0 ); -CREATE INDEX "idx_group_name" ON "job" ("group_name"); -CREATE INDEX "idx_job_status_bucket_index" ON "job" (`job_status`, `bucket_index`); -CREATE INDEX "idx_create_dt" ON "job" (`create_dt`); +CREATE INDEX "idx_group_name_to_job" ON "job" ("group_name"); +CREATE INDEX "idx_job_status_bucket_index_job" ON "job" ("job_status", "bucket_index"); +CREATE INDEX "idx_create_dt_job" ON "job" ("create_dt"); COMMENT ON COLUMN "job"."id" IS '主键'; COMMENT ON COLUMN "job"."group_name" IS '组名称'; @@ -406,8 +398,7 @@ COMMENT ON COLUMN "job"."deleted" IS '逻辑删除 1、删除'; COMMENT ON COLUMN "job"."update_dt" IS '更新时间'; COMMENT ON TABLE "job" IS '任务信息'; - -CREATE TABLE sequence_alloc +CREATE TABLE job_log_message ( id BIGSERIAL PRIMARY KEY, group_name VARCHAR(64) NOT NULL, @@ -419,6 +410,9 @@ CREATE TABLE sequence_alloc create_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ); +CREATE INDEX "idx_group_name_to_job_log_message" ON "job_log_message" ("group_name"); +CREATE INDEX "idx_task_batch_id_task_id_to_job_log_message" ON "job_log_message" ("task_batch_id", "task_id"); +CREATE INDEX "idx_create_dt_to_job_log_message" ON "job_log_message" ("create_dt"); COMMENT ON COLUMN "job_log_message"."id" IS '主键'; COMMENT ON COLUMN "job_log_message"."group_name" IS '组名称'; COMMENT ON COLUMN "job_log_message"."job_id" IS '任务信息id'; @@ -429,40 +423,71 @@ COMMENT ON COLUMN "job_log_message"."create_dt" IS '创建时间'; COMMENT ON COLUMN "job_log_message"."ext_attrs" IS '扩展字段'; COMMENT ON TABLE "job_log_message" IS '调度日志'; -CREATE TABLE `job_task` +CREATE TABLE job_task ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', - `group_name` varchar(64) NOT NULL COMMENT '组名称', - `job_id` bigint(20) NOT NULL COMMENT '任务信息id', - `task_batch_id` bigint(20) NOT NULL COMMENT '调度任务id', - `parent_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '父执行器id', - `task_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '执行的状态 0、失败 1、成功', - `retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '重试次数', - `client_info` varchar(128) DEFAULT NULL COMMENT '客户端地址 clientId#ip:port', - `result_message` text NOT NULL COMMENT '执行结果', - `args_str` text DEFAULT NULL COMMENT '执行方法参数', - `args_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '参数类型 ', - `ext_attrs` varchar(256) 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`), - KEY `idx_task_batch_id_task_status` (`task_batch_id`, `task_status`), - KEY `idx_create_dt` (`create_dt`) -) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COMMENT='任务实例'; + id BIGSERIAL PRIMARY KEY, + group_name VARCHAR(64) NOT NULL, + job_id BIGINT NOT NULL, + task_batch_id BIGINT NOT NULL, + parent_id BIGINT NOT NULL DEFAULT 0, + task_status SMALLINT NOT NULL DEFAULT 0, + retry_count INT NOT NULL DEFAULT 0, + client_info VARCHAR(128) DEFAULT NULL, + result_message TEXT NOT NULL, + args_str TEXT NOT NULL, + args_type SMALLINT NOT NULL DEFAULT 1, + ext_attrs VARCHAR(256) DEFAULT '', + create_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + update_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); -CREATE TABLE `job_task_batch` + +CREATE INDEX "idx_group_name_to_job_task" ON "job_task" ("group_name"); +CREATE INDEX "idx_task_batch_id_task_status_to_job_task" ON "job_task" ("task_batch_id", "task_status"); +CREATE INDEX "idx_create_dt_to_job_task" ON "job_task" ("create_dt"); +COMMENT ON COLUMN "job_task"."id" IS '主键'; +COMMENT ON COLUMN "job_task"."group_name" IS '组名称'; +COMMENT ON COLUMN "job_task"."job_id" IS '任务信息id'; +COMMENT ON COLUMN "job_task"."task_batch_id" IS '任务批次id'; +COMMENT ON COLUMN "job_task"."parent_id" IS '父执行器id'; +COMMENT ON COLUMN "job_task"."task_status" IS '执行的状态 0、失败 1、成功'; +COMMENT ON COLUMN "job_task"."retry_count" IS '重试次数'; +COMMENT ON COLUMN "job_task"."client_info" IS '客户端地址 clientId#ip:port'; +COMMENT ON COLUMN "job_task"."result_message" IS '调度信息'; +COMMENT ON COLUMN "job_task"."args_str" IS '执行方法参数'; +COMMENT ON COLUMN "job_task"."args_type" IS '参数类型'; +COMMENT ON COLUMN "job_task"."create_dt" IS '创建时间'; +COMMENT ON COLUMN "job_task"."update_dt" IS '创建时间'; +COMMENT ON COLUMN "job_task"."ext_attrs" IS '扩展字段'; +COMMENT ON TABLE "job_task" IS '任务实例'; + +CREATE TABLE job_task_batch ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', - `group_name` varchar(64) NOT NULL COMMENT '组名称', - `job_id` bigint(20) NOT NULL COMMENT '任务id', - `task_batch_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '任务批次状态 0、失败 1、成功', - `operation_reason` tinyint(4) NOT NULL DEFAULT '0' COMMENT '操作原因', - `execution_at` bigint(13) 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 '修改时间', - `deleted` tinyint(4) NOT NULL DEFAULT '0' COMMENT '逻辑删除 1、删除', - `ext_attrs` varchar(256) NULL default '' COMMENT '扩展字段', - PRIMARY KEY (`id`), - KEY `idx_job_id_task_batch_status` (`job_id`, `task_batch_status`), - KEY `idx_create_dt` (`create_dt`) -) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COMMENT='任务批次'; + id BIGSERIAL PRIMARY KEY, + group_name VARCHAR(64) NOT NULL, + job_id BIGINT NOT NULL, + parent_id VARCHAR(64) NOT NULL DEFAULT '', + task_batch_status SMALLINT NOT NULL DEFAULT 0, + operation_reason SMALLINT NOT NULL DEFAULT 0, + execution_at BIGINT NOT NULL DEFAULT 0, + ext_attrs VARCHAR(256) DEFAULT '', + deleted SMALLINT NOT NULL DEFAULT 0, + create_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + update_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +CREATE INDEX "idx_group_name_to_job_task_batch" ON "job_task_batch" ("group_name"); +CREATE INDEX "idx_job_id_task_batch_status_to_job_task_batch" ON "job_task_batch" ("job_id", "task_batch_status"); +CREATE INDEX "idx_create_dt_to_job_task_batch" ON "job_task_batch" ("create_dt"); +COMMENT ON COLUMN "job_task_batch"."id" IS '主键'; +COMMENT ON COLUMN "job_task_batch"."group_name" IS '组名称'; +COMMENT ON COLUMN "job_task_batch"."job_id" IS '任务信息id'; +COMMENT ON COLUMN "job_task_batch"."task_batch_status" IS '任务批次状态 0、失败 1、成功'; +COMMENT ON COLUMN "job_task_batch"."operation_reason" IS '操作原因'; +COMMENT ON COLUMN "job_task_batch"."execution_at" IS '任务执行时间'; +COMMENT ON COLUMN "job_task_batch"."parent_id" IS '父节点'; +COMMENT ON COLUMN "job_task_batch"."deleted" IS '逻辑删除 1、删除'; +COMMENT ON COLUMN "job_task_batch"."create_dt" IS '创建时间'; +COMMENT ON COLUMN "job_task_batch"."update_dt" IS '创建时间'; +COMMENT ON COLUMN "job_task_batch"."ext_attrs" IS '扩展字段'; +COMMENT ON TABLE "job_task" IS '任务批次'; diff --git a/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/RetryTaskMapper.xml b/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/RetryTaskMapper.xml index 8718aa7d..a2b707f2 100644 --- a/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/RetryTaskMapper.xml +++ b/easy-retry-datasource/easy-retry-mariadb-datasource/src/main/resources/mariadb/mapper/RetryTaskMapper.xml @@ -30,4 +30,18 @@ (#{item.uniqueId}, #{item.groupName}, #{item.sceneName}, #{item.idempotentId}, #{item.bizNo}, #{item.executorName}, #{item.argsStr}, #{item.extAttrs}, #{item.nextTriggerAt}, #{item.taskType}, #{item.retryStatus}, #{item.createDt}) + + + update retry_task_${partition} rt, + ( + + select + #{item.nextTriggerAt} as next_trigger_at, + #{item.id} as id + + ) tt + set + rt.next_trigger_at = tt.next_trigger_at + where rt.id = tt.id + diff --git a/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/JobMapper.xml b/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/JobMapper.xml index de263ea0..946ece34 100644 --- a/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/JobMapper.xml +++ b/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/JobMapper.xml @@ -27,17 +27,16 @@ - update job rt, - ( + UPDATE job AS rt + SET next_trigger_at = tt.next_trigger_at + FROM ( select #{item.nextTriggerAt} as next_trigger_at, #{item.id} as id - ) tt - set - rt.next_trigger_at = tt.next_trigger_at - where rt.id = tt.id + ) AS tt + WHERE rt.id = tt.id diff --git a/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/RetryTaskMapper.xml b/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/RetryTaskMapper.xml index 8718aa7d..f81bd6e2 100644 --- a/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/RetryTaskMapper.xml +++ b/easy-retry-datasource/easy-retry-postgres-datasource/src/main/resources/postgres/mapper/RetryTaskMapper.xml @@ -30,4 +30,16 @@ (#{item.uniqueId}, #{item.groupName}, #{item.sceneName}, #{item.idempotentId}, #{item.bizNo}, #{item.executorName}, #{item.argsStr}, #{item.extAttrs}, #{item.nextTriggerAt}, #{item.taskType}, #{item.retryStatus}, #{item.createDt}) + + UPDATE retry_task_${partition} AS rt + SET next_trigger_at = tt.next_trigger_at + FROM ( + + select + #{item.nextTriggerAt} as next_trigger_at, + #{item.id} as id + + ) AS tt + WHERE rt.id = tt.id +