From df5cbaaea89e38a46f50d6681fc1e703e6ee3ba8 Mon Sep 17 00:00:00 2001 From: dhb52 <dhb52@126.com> Date: 星期四, 14 三月 2024 00:01:17 +0800 Subject: [PATCH] ✨EasyRetry Server 扩展模块 --- ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutorSleep10s.java | 27 script/sql/easy_retry.sql | 548 +++++++++++++++++ ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestClassJobExecutor.java | 20 ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutorSleep30s.java | 27 ruoyi-admin/pom.xml | 13 ruoyi-extend/ruoyi-easyretry-server/src/main/resources/application.yml | 66 ++ script/docker/docker-compose.yml | 13 script/sql/postgres/easy_retry.sql | 804 +++++++++++++++++++++++++ script/sql/ry_vue_5.X.sql | 4 ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/EasyRetryConfig.java | 19 ruoyi-extend/ruoyi-easyretry-server/src/main/resources/logback-boot.xml | 88 ++ pom.xml | 18 ruoyi-admin/src/main/resources/application.yml | 3 script/docker/nginx/conf/nginx.conf | 12 ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutor.java | 20 ruoyi-common/ruoyi-common-job/pom.xml | 14 ruoyi-extend/ruoyi-easyretry-server/pom.xml | 46 + ruoyi-extend/ruoyi-easyretry-server/Dockerfile | 18 ruoyi-extend/pom.xml | 1 ruoyi-extend/ruoyi-easyretry-server/src/main/java/org/dromara/easyretry/EasyRetryServerApplication.java | 18 ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutorSleep1s.java | 27 ruoyi-admin/src/main/resources/application-prod.yml | 11 ruoyi-admin/src/main/resources/application-dev.yml | 12 ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutorSleep5s.java | 30 24 files changed, 1,858 insertions(+), 1 deletions(-) diff --git a/pom.xml b/pom.xml index ba9ced2..80de1c6 100644 --- a/pom.xml +++ b/pom.xml @@ -35,6 +35,7 @@ <dynamic-ds.version>4.3.0</dynamic-ds.version> <alibaba-ttl.version>2.14.4</alibaba-ttl.version> <powerjob.version>4.3.6</powerjob.version> + <easyretry.version>3.1.0</easyretry.version> <mapstruct-plus.version>1.3.6</mapstruct-plus.version> <mapstruct-plus.lombok.version>0.2.0</mapstruct-plus.lombok.version> <lombok.version>1.18.30</lombok.version> @@ -308,6 +309,23 @@ <version>${powerjob.version}</version> </dependency> + <!-- EasyRetry Client --> + <dependency> + <groupId>com.aizuda</groupId> + <artifactId>easy-retry-client-starter</artifactId> + <version>${easyretry.version}</version> + </dependency> + <dependency> + <groupId>com.aizuda</groupId> + <artifactId>easy-retry-client-core</artifactId> + <version>${easyretry.version}</version> + </dependency> + <dependency> + <groupId>com.aizuda</groupId> + <artifactId>easy-retry-client-job-core</artifactId> + <version>${easyretry.version}</version> + </dependency> + <dependency> <groupId>com.alibaba</groupId> <artifactId>transmittable-thread-local</artifactId> diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml index cbf03ce..155f594 100644 --- a/ruoyi-admin/pom.xml +++ b/ruoyi-admin/pom.xml @@ -97,6 +97,19 @@ <artifactId>JustAuth</artifactId> </dependency> + <dependency> + <groupId>com.aizuda</groupId> + <artifactId>easy-retry-client-starter</artifactId> + </dependency> + <dependency> + <groupId>com.aizuda</groupId> + <artifactId>easy-retry-client-core</artifactId> + </dependency> + <dependency> + <groupId>com.aizuda</groupId> + <artifactId>easy-retry-client-job-core</artifactId> + </dependency> + <!-- skywalking 鏁村悎 logback --> <!-- <dependency>--> <!-- <groupId>org.apache.skywalking</groupId>--> diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index 5589e58..b6d3db8 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -24,6 +24,18 @@ server-address: 127.0.0.1:7700 store-strategy: disk +--- # easy-retry 閰嶇疆 +easy-retry: + enabled: true + # 闇�瑕佸湪EasyRetry鍚庡彴缁勭鐞嗗垱寤哄搴斿悕绉扮殑缁�,鐒跺悗鍒涘缓浠诲姟鐨勬椂鍊欓�夋嫨瀵瑰簲鐨勭粍,鎵嶈兘姝g‘鍒嗘淳浠诲姟 + group-name: "ruoyi_group" + server: + host: 127.0.0.1 + port: 1788 + # 璇﹁ script/sql/easy_retry.sql `namespace` 琛� + namespace: ${spring.profiles.active} + + --- # 鏁版嵁婧愰厤缃� spring: datasource: diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml index b4f4040..69701ff 100644 --- a/ruoyi-admin/src/main/resources/application-prod.yml +++ b/ruoyi-admin/src/main/resources/application-prod.yml @@ -27,6 +27,17 @@ server-address: 127.0.0.1:7700 store-strategy: disk +--- # easy-retry 閰嶇疆 +easy-retry: + enabled: false + # 闇�瑕佸湪EasyRetry鍚庡彴缁勭鐞嗗垱寤哄搴斿悕绉扮殑缁�,鐒跺悗鍒涘缓浠诲姟鐨勬椂鍊欓�夋嫨瀵瑰簲鐨勭粍,鎵嶈兘姝g‘鍒嗘淳浠诲姟 + group-name: "ruoyi_group" + server: + host: 127.0.0.1 + port: 1788 + # 璇﹁ script/sql/easy_retry.sql `namespace` 琛� + namespace: ${spring.profiles.active} + --- # 鏁版嵁婧愰厤缃� spring: datasource: diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 5cc67fa..ad50248 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -123,6 +123,9 @@ # actuator 鐩戞帶閰嶇疆 - /actuator - /actuator/** + # EasyRetry Job 鍒嗘淳 @see com.aizuda.easy.retry.client.job.core.client.JobEndPoint + - /job/dispatch/v1 + - /job/stop/v1 # 澶氱鎴烽厤缃� tenant: diff --git a/ruoyi-common/ruoyi-common-job/pom.xml b/ruoyi-common/ruoyi-common-job/pom.xml index 1a6e729..47bfc43 100644 --- a/ruoyi-common/ruoyi-common-job/pom.xml +++ b/ruoyi-common/ruoyi-common-job/pom.xml @@ -38,6 +38,20 @@ <artifactId>powerjob-official-processors</artifactId> </dependency> + <!-- EasyRetry client --> + <dependency> + <groupId>com.aizuda</groupId> + <artifactId>easy-retry-client-starter</artifactId> + </dependency> + <dependency> + <groupId>com.aizuda</groupId> + <artifactId>easy-retry-client-core</artifactId> + </dependency> + <dependency> + <groupId>com.aizuda</groupId> + <artifactId>easy-retry-client-job-core</artifactId> + </dependency> + <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> diff --git a/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/EasyRetryConfig.java b/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/EasyRetryConfig.java new file mode 100644 index 0000000..65d1472 --- /dev/null +++ b/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/EasyRetryConfig.java @@ -0,0 +1,19 @@ +package org.dromara.common.job.config; + +import com.aizuda.easy.retry.client.starter.EnableEasyRetry; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; + +/** + * 鍚姩瀹氭椂浠诲姟 + * + * @author dhb52 + * @since 2024/3/12 + */ +@Configuration +@ConditionalOnProperty(prefix = "easy-retry", name = "enabled", havingValue = "true") +@EnableScheduling +@EnableEasyRetry(group = "${easy-retry.group-name}") +public class EasyRetryConfig { +} diff --git a/ruoyi-extend/pom.xml b/ruoyi-extend/pom.xml index f5348cc..0e9533f 100644 --- a/ruoyi-extend/pom.xml +++ b/ruoyi-extend/pom.xml @@ -14,6 +14,7 @@ <modules> <module>ruoyi-monitor-admin</module> <module>ruoyi-powerjob-server</module> + <module>ruoyi-easyretry-server</module> </modules> </project> diff --git a/ruoyi-extend/ruoyi-easyretry-server/Dockerfile b/ruoyi-extend/ruoyi-easyretry-server/Dockerfile new file mode 100644 index 0000000..7ad0a07 --- /dev/null +++ b/ruoyi-extend/ruoyi-easyretry-server/Dockerfile @@ -0,0 +1,18 @@ +#FROM findepi/graalvm:java17-native +FROM openjdk:17.0.2-oraclelinux8 + +MAINTAINER Lion Li + +RUN mkdir -p /ruoyi/easyretry/logs + +WORKDIR /ruoyi/easyretry + +ENV LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS="-Xms512m -Xmx1024m" + +EXPOSE 8800 +EXPOSE 1788 + +ADD ./target/ruoyi-easyretry-server.jar ./app.jar + +ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar app.jar \ + -XX:+HeapDumpOnOutOfMemoryError -Xlog:gc*,:time,tags,level -XX:+UseZGC ${JAVA_OPTS} diff --git a/ruoyi-extend/ruoyi-easyretry-server/pom.xml b/ruoyi-extend/ruoyi-easyretry-server/pom.xml new file mode 100644 index 0000000..0b1463b --- /dev/null +++ b/ruoyi-extend/ruoyi-easyretry-server/pom.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <parent> + <groupId>org.dromara</groupId> + <artifactId>ruoyi-extend</artifactId> + <version>${revision}</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <packaging>jar</packaging> + <artifactId>ruoyi-easyretry-server</artifactId> + + <dependencies> + <dependency> + <groupId>com.aizuda</groupId> + <artifactId>easy-retry-server-starter</artifactId> + <version>${easyretry.version}</version> + </dependency> + + <dependency> + <groupId>de.codecentric</groupId> + <artifactId>spring-boot-admin-starter-client</artifactId> + <version>${spring-boot-admin.version}</version> + </dependency> + </dependencies> + + <build> + <finalName>ruoyi-easyretry-server</finalName> + <plugins> + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + <configuration> + <excludes> + <exclude> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + </exclude> + </excludes> + </configuration> + </plugin> + </plugins> + </build> + +</project> diff --git a/ruoyi-extend/ruoyi-easyretry-server/src/main/java/org/dromara/easyretry/EasyRetryServerApplication.java b/ruoyi-extend/ruoyi-easyretry-server/src/main/java/org/dromara/easyretry/EasyRetryServerApplication.java new file mode 100644 index 0000000..9d01bc0 --- /dev/null +++ b/ruoyi-extend/ruoyi-easyretry-server/src/main/java/org/dromara/easyretry/EasyRetryServerApplication.java @@ -0,0 +1,18 @@ +package org.dromara.easyretry; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * EasyRetry Server 鍚姩绋嬪簭 + * + * @author dhb52 + */ +@SpringBootApplication +public class EasyRetryServerApplication { + + public static void main(String[] args) { + SpringApplication.run(com.aizuda.easy.retry.server.EasyRetryServerApplication.class, args); + } + +} diff --git a/ruoyi-extend/ruoyi-easyretry-server/src/main/resources/application.yml b/ruoyi-extend/ruoyi-easyretry-server/src/main/resources/application.yml new file mode 100644 index 0000000..e813863 --- /dev/null +++ b/ruoyi-extend/ruoyi-easyretry-server/src/main/resources/application.yml @@ -0,0 +1,66 @@ +server: + port: 8800 + servlet: + context-path: /easy-retry +spring: + application: + name: ruoyi-easyretry-server + profiles: + active: @profiles.active@ + datasource: + name: ry-vue + url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true + username: root + password: root + type: com.zaxxer.hikari.HikariDataSource + driver-class-name: com.mysql.cj.jdbc.Driver + hikari: + connection-timeout: 30000 + minimum-idle: 5 + maximum-pool-size: 20 + auto-commit: true + idle-timeout: 30000 + pool-name: easy_retry + max-lifetime: 1800000 + web: + resources: + static-locations: classpath:admin/ + +mybatis-plus: + typeAliasesPackage: com.aizuda.easy.retry.template.datasource.persistence.po + global-config: + db-config: + where-strategy: NOT_EMPTY + capital-mode: false + logic-delete-value: 1 + logic-not-delete-value: 0 + configuration: + map-underscore-to-camel-case: true + cache-enabled: true +logging: + config: classpath:logback-boot.xml + +easy-retry: + retry-pull-page-size: 1000 # 鎷夊彇閲嶈瘯鏁版嵁鐨勬瘡鎵规鐨勫ぇ灏� + job-pull-page-size: 1000 # 鎷夊彇閲嶈瘯鏁版嵁鐨勬瘡鎵规鐨勫ぇ灏� + netty-port: 1788 # 鏈嶅姟绔痭etty绔彛 + total-partition: 2 # 閲嶈瘯鍜屾淇¤〃鐨勫垎鍖烘�绘暟 + limiter: 1000 # 涓�涓鎴风姣忕鏈�澶氭帴鏀剁殑閲嶈瘯鏁伴噺鎸囦护 + step: 100 # 鍙锋妯″紡涓嬫闀块厤缃� + log-storage: 90 # 鏃ュ織淇濆瓨鏃堕棿(鍗曚綅: day) + callback: # 鍥炶皟閰嶇疆 + max-count: 288 #鍥炶皟鏈�澶ф墽琛屾鏁� + trigger-interval: 900 #闂撮殧鏃堕棿 + db-type: mysql #褰撳墠浣跨敤鐨勬暟鎹簱 + mode: all + retry-max-pull-count: 10 + +--- # 鐩戞帶涓績閰嶇疆 +spring.boot.admin.client: + # 澧炲姞瀹㈡埛绔紑鍏� + enabled: true + url: http://localhost:9090/admin + instance: + service-host-type: IP + username: ruoyi + password: 123456 diff --git a/ruoyi-extend/ruoyi-easyretry-server/src/main/resources/logback-boot.xml b/ruoyi-extend/ruoyi-easyretry-server/src/main/resources/logback-boot.xml new file mode 100644 index 0000000..97ba0b0 --- /dev/null +++ b/ruoyi-extend/ruoyi-easyretry-server/src/main/resources/logback-boot.xml @@ -0,0 +1,88 @@ +<configuration> + + <property name="log.base" value="./logs/ruoyi-easyretry-server" /> + + <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> + <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> + <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{256} - %msg%n + </Pattern> + </encoder> + </appender> + + <appender name="fileInfo" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${log.base}/info.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <FileNamePattern>${log.base}/info.%d{yyyy-MM-dd}.log</FileNamePattern> + <MaxHistory>30</MaxHistory> + </rollingPolicy> + <layout class="ch.qos.logback.classic.PatternLayout"> + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{256} - %msg%n</pattern> + </layout> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>INFO</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + </appender> + + <appender name="fileWarn" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${log.base}/warn.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <FileNamePattern>${log.base}/warn.%d{yyyy-MM-dd}.log + </FileNamePattern> + <MaxHistory>30</MaxHistory> + </rollingPolicy> + <layout class="ch.qos.logback.classic.PatternLayout"> + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{256} - %msg%n</pattern> + </layout> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>WARN</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + </appender> + + <appender name="fileError" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${log.base}/error.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <FileNamePattern>${log.base}/error.%d{yyyy-MM-dd}.log + </FileNamePattern> + <MaxHistory>30</MaxHistory> + </rollingPolicy> + <layout class="ch.qos.logback.classic.PatternLayout"> + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{256} - %msg%n</pattern> + </layout> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>ERROR</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + </appender> + + <appender name ="asyncInfo" class= "ch.qos.logback.classic.AsyncAppender"> + <discardingThreshold >100</discardingThreshold> + <queueSize>1024</queueSize> + <appender-ref ref ="fileInfo"/> + </appender> + + <appender name ="asyncWarn" class= "ch.qos.logback.classic.AsyncAppender"> + <discardingThreshold >100</discardingThreshold> + <queueSize>1024</queueSize> + <appender-ref ref ="fileWarn"/> + </appender> + + <appender name ="asyncError" class= "ch.qos.logback.classic.AsyncAppender"> + <discardingThreshold >100</discardingThreshold> + <queueSize>1024</queueSize> + <appender-ref ref ="fileError"/> + </appender> + + <!-- 鎺у埗鍙拌緭鍑烘棩蹇楃骇鍒� --> + <root level="info"> + <appender-ref ref="stdout" /> + <appender-ref ref="asyncInfo" /> + <appender-ref ref="asyncWarn" /> + <appender-ref ref="asyncError" /> + </root> +</configuration> diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutor.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutor.java new file mode 100644 index 0000000..8126b3e --- /dev/null +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutor.java @@ -0,0 +1,20 @@ +package org.dromara.job.easyretry; + +import com.aizuda.easy.retry.client.job.core.annotation.JobExecutor; +import com.aizuda.easy.retry.client.job.core.dto.JobArgs; +import com.aizuda.easy.retry.client.model.ExecuteResult; +import org.springframework.stereotype.Component; + +/** + * @author www.byteblogs.com + * @date 2023-09-28 22:54:07 + * @since 2.4.0 + */ +@Component +@JobExecutor(name = "testJobExecutor") +public class TestAnnoJobExecutor { + + public ExecuteResult jobExecute(JobArgs jobArgs) { + return ExecuteResult.success("娴嬭瘯鎴愬姛"); + } +} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutorSleep10s.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutorSleep10s.java new file mode 100644 index 0000000..3d92bb3 --- /dev/null +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutorSleep10s.java @@ -0,0 +1,27 @@ +package org.dromara.job.easyretry; + +import com.aizuda.easy.retry.client.job.core.annotation.JobExecutor; +import com.aizuda.easy.retry.client.job.core.dto.JobArgs; +import com.aizuda.easy.retry.client.model.ExecuteResult; +import com.aizuda.easy.retry.common.core.util.JsonUtil; +import org.springframework.stereotype.Component; + +/** + * @author www.byteblogs.com + * @date 2023-09-28 22:54:07 + * @since 2.4.0 + */ +@Component +@JobExecutor(name = "testAnnoJobExecutorSleep10s") +public class TestAnnoJobExecutorSleep10s { + + public ExecuteResult jobExecute(JobArgs jobArgs) { + System.out.println(JsonUtil.toJsonString(jobArgs)); + try { + Thread.sleep(10 * 1000); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + return ExecuteResult.success("娴嬭瘯鎴愬姛"); + } +} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutorSleep1s.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutorSleep1s.java new file mode 100644 index 0000000..89726ad --- /dev/null +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutorSleep1s.java @@ -0,0 +1,27 @@ +package org.dromara.job.easyretry; + +import com.aizuda.easy.retry.client.job.core.annotation.JobExecutor; +import com.aizuda.easy.retry.client.job.core.dto.JobArgs; +import com.aizuda.easy.retry.client.model.ExecuteResult; +import com.aizuda.easy.retry.common.core.util.JsonUtil; +import org.springframework.stereotype.Component; + +/** + * @author www.byteblogs.com + * @date 2023-09-28 22:54:07 + * @since 2.4.0 + */ +@Component +@JobExecutor(name = "testAnnoJobExecutorSleep1s") +public class TestAnnoJobExecutorSleep1s { + + public ExecuteResult jobExecute(JobArgs jobArgs) { + System.out.println(JsonUtil.toJsonString(jobArgs)); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + return ExecuteResult.success("娴嬭瘯鎴愬姛"); + } +} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutorSleep30s.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutorSleep30s.java new file mode 100644 index 0000000..b7b35e4 --- /dev/null +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutorSleep30s.java @@ -0,0 +1,27 @@ +package org.dromara.job.easyretry; + +import com.aizuda.easy.retry.client.job.core.annotation.JobExecutor; +import com.aizuda.easy.retry.client.job.core.dto.JobArgs; +import com.aizuda.easy.retry.client.model.ExecuteResult; +import com.aizuda.easy.retry.common.core.util.JsonUtil; +import org.springframework.stereotype.Component; + +/** + * @author www.byteblogs.com + * @date 2023-09-28 22:54:07 + * @since 2.4.0 + */ +@Component +@JobExecutor(name = "testAnnoJobExecutorSleep30s") +public class TestAnnoJobExecutorSleep30s { + + public ExecuteResult jobExecute(JobArgs jobArgs) { + System.out.println(JsonUtil.toJsonString(jobArgs)); + try { + Thread.sleep(30 * 1000); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + return ExecuteResult.success("娴嬭瘯鎴愬姛"); + } +} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutorSleep5s.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutorSleep5s.java new file mode 100644 index 0000000..7e44db5 --- /dev/null +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestAnnoJobExecutorSleep5s.java @@ -0,0 +1,30 @@ +package org.dromara.job.easyretry; + +import com.aizuda.easy.retry.client.job.core.annotation.JobExecutor; +import com.aizuda.easy.retry.client.job.core.dto.JobArgs; +import com.aizuda.easy.retry.client.model.ExecuteResult; +import com.aizuda.easy.retry.common.core.util.JsonUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author www.byteblogs.com + * @date 2023-09-28 22:54:07 + * @since 2.4.0 + */ +@Component +@Slf4j +@JobExecutor(name = "testAnnoJobExecutorSleep5s") +public class TestAnnoJobExecutorSleep5s { + + public ExecuteResult jobExecute(JobArgs jobArgs) { + log.info("testAnnoJobExecutorSleep5s. jobArgs:{}", JsonUtil.toJsonString(jobArgs)); + + try { + Thread.sleep(5 * 1000); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + return ExecuteResult.success("娴嬭瘯鎴愬姛"); + } +} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestClassJobExecutor.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestClassJobExecutor.java new file mode 100644 index 0000000..3a988c5 --- /dev/null +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/easyretry/TestClassJobExecutor.java @@ -0,0 +1,20 @@ +package org.dromara.job.easyretry; + +import com.aizuda.easy.retry.client.job.core.dto.JobArgs; +import com.aizuda.easy.retry.client.job.core.executor.AbstractJobExecutor; +import com.aizuda.easy.retry.client.model.ExecuteResult; +import org.springframework.stereotype.Component; + +/** + * @author www.byteblogs.com + * @date 2023-09-28 22:54:07 + * @since 2.4.0 + */ +@Component +public class TestClassJobExecutor extends AbstractJobExecutor { + + @Override + protected ExecuteResult doJobExecute(JobArgs jobArgs) { + return ExecuteResult.success("TestJobExecutor娴嬭瘯鎴愬姛"); + } +} diff --git a/script/docker/docker-compose.yml b/script/docker/docker-compose.yml index 503d2e1..bbac441 100644 --- a/script/docker/docker-compose.yml +++ b/script/docker/docker-compose.yml @@ -156,3 +156,16 @@ privileged: true network_mode: "host" + ruoyi-easyretry-server: + image: ruoyi/ruoyi-easyretry-server:5.2.0 + container_name: ruoyi-easyretry-server + environment: + # 鏃跺尯涓婃捣 + TZ: Asia/Shanghai + ports: + - "8800:8800" + - "1788:1788" + volumes: + - /docker/easyretry/logs/:/ruoyi/easyretry/logs + privileged: true + network_mode: "host" diff --git a/script/docker/nginx/conf/nginx.conf b/script/docker/nginx/conf/nginx.conf index 0e9856a..20b5594 100644 --- a/script/docker/nginx/conf/nginx.conf +++ b/script/docker/nginx/conf/nginx.conf @@ -35,6 +35,10 @@ server 127.0.0.1:7700; } + upstream easyretry-server { + server 127.0.0.1:8800; + } + server { listen 80; server_name localhost; @@ -112,6 +116,14 @@ proxy_pass http://powerjob-server; } + location /easy-retry/ { + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header REMOTE-HOST $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass http://easyretry-server/; + } + error_page 500 502 503 504 /50x.html; location = /50x.html { root html; diff --git a/script/sql/easy_retry.sql b/script/sql/easy_retry.sql new file mode 100644 index 0000000..4f93355 --- /dev/null +++ b/script/sql/easy_retry.sql @@ -0,0 +1,548 @@ +SET NAMES utf8mb4; + +DROP TABLE IF EXISTS `namespace`; +CREATE TABLE `namespace` +( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '涓婚敭', + `name` varchar(64) NOT NULL COMMENT '鍚嶇О', + `unique_id` varchar(64) NOT NULL COMMENT '鍞竴id', + `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 '淇敼鏃堕棿', + `deleted` tinyint(4) NOT NULL DEFAULT '0' COMMENT '閫昏緫鍒犻櫎 1銆佸垹闄�', + PRIMARY KEY (`id`), + KEY `idx_name` (`name`), + UNIQUE KEY `uk_unique_id` (`unique_id`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8mb4 COMMENT ='鍛藉悕绌洪棿'; + +INSERT INTO `namespace` (`id`, `name`, `unique_id`, `create_dt`, `update_dt`, `deleted`) +VALUES (1, 'Development', 'dev', now(), now(), 0); +INSERT INTO `namespace` (`id`, `name`, `unique_id`, `create_dt`, `update_dt`, `deleted`) +VALUES (2, 'Production', 'prod', now(), now(), 0); + +DROP TABLE IF EXISTS `group_config`; +CREATE TABLE `group_config` +( + `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 DEFAULT '' COMMENT '缁勫悕绉�', + `description` varchar(256) NOT NULL DEFAULT '' COMMENT '缁勬弿杩�', + `group_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '缁勭姸鎬� 0銆佹湭鍚敤 1銆佸惎鐢�', + `version` int(11) NOT NULL COMMENT '鐗堟湰鍙�', + `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`), + UNIQUE KEY `uk_namespace_id_group_name` (`namespace_id`, `group_name`) +) ENGINE = InnoDB + AUTO_INCREMENT = 0 + DEFAULT CHARSET = utf8mb4 COMMENT ='缁勯厤缃�' +; + +INSERT INTO `ry-vue`.group_config (id, namespace_id, group_name, description, group_status, version, group_partition, id_generator_mode, init_scene, bucket_index, create_dt, update_dt) +VALUES (1, 'dev', 'ruoyi_group', '', 1, 1, 0, 1, 1, 4, '2024-03-13 23:21:41', '2024-03-13 23:21:40'); + +DROP TABLE IF EXISTS `notify_config`; +CREATE TABLE `notify_config` +( + `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 '鍦烘櫙鍚嶇О', + `notify_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '閫氱煡鐘舵�� 0銆佹湭鍚敤 1銆佸惎鐢�', + `notify_type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '閫氱煡绫诲瀷 1銆侀拤閽� 2銆侀偖浠� 3銆佷紒涓氬井淇�', + `notify_attribute` varchar(512) NOT NULL COMMENT '閰嶇疆灞炴��', + `notify_threshold` int(11) NOT NULL DEFAULT '0' COMMENT '閫氱煡闃堝��', + `notify_scene` tinyint(4) NOT NULL DEFAULT '0' COMMENT '閫氱煡鍦烘櫙', + `rate_limiter_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '闄愭祦鐘舵�� 0銆佹湭鍚敤 1銆佸惎鐢�', + `rate_limiter_threshold` int(11) NOT NULL DEFAULT '0' 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`), + KEY `idx_namespace_id_group_name_scene_name` (`namespace_id`, `group_name`, `scene_name`) +) ENGINE = InnoDB + AUTO_INCREMENT = 0 + DEFAULT CHARSET = utf8mb4 COMMENT ='閫氱煡閰嶇疆' +; + +DROP TABLE IF EXISTS `retry_dead_letter_0`; +CREATE TABLE `retry_dead_letter_0` +( + `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 '鍚岀粍涓媔d鍞竴', + `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 '鎵╁睍瀛楁', + `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`) +) ENGINE = InnoDB + AUTO_INCREMENT = 0 + DEFAULT CHARSET = utf8mb4 COMMENT ='姝讳俊闃熷垪琛�' +; + +DROP TABLE IF EXISTS `retry_task_0`; +CREATE TABLE `retry_task_0` +( + `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 '鍚岀粍涓媔d鍞竴', + `group_name` varchar(64) NOT NULL COMMENT '缁勫悕绉�', + `scene_name` varchar(64) NOT NULL COMMENT '鍦烘櫙鍚嶇О', + `idempotent_id` varchar(64) NOT NULL COMMENT '骞傜瓑id', + `biz_no` varchar(64) NOT NULL DEFAULT '' COMMENT '涓氬姟缂栧彿', + `executor_name` varchar(512) NOT NULL DEFAULT '' COMMENT '鎵ц鍣ㄥ悕绉�', + `args_str` text NOT NULL COMMENT '鎵ц鏂规硶鍙傛暟', + `ext_attrs` text NOT NULL COMMENT '鎵╁睍瀛楁', + `next_trigger_at` datetime 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銆佸洖璋冩暟鎹�', + `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_create_dt` (`create_dt`), + UNIQUE KEY `uk_name_unique_id` (`namespace_id`, `group_name`, `unique_id`) +) ENGINE = InnoDB + AUTO_INCREMENT = 0 + DEFAULT CHARSET = utf8mb4 COMMENT ='浠诲姟琛�' +; + +DROP TABLE IF EXISTS `retry_task_log`; +CREATE TABLE `retry_task_log` +( + `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 '鍚岀粍涓媔d鍞竴', + `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 '鍒涘缓鏃堕棿', + 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`) +) ENGINE = InnoDB + AUTO_INCREMENT = 0 + DEFAULT CHARSET = utf8mb4 COMMENT ='浠诲姟鏃ュ織鍩虹淇℃伅琛�' +; + +DROP TABLE IF EXISTS `retry_task_log_message`; +CREATE TABLE `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 '鍚岀粍涓媔d鍞竴', + `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿', + `message` text NOT NULL COMMENT '寮傚父淇℃伅', + `client_info` varchar(128) DEFAULT NULL COMMENT '瀹㈡埛绔湴鍧� clientId#ip:port', + PRIMARY KEY (`id`), + KEY `idx_namespace_id_group_name_scene_name` (`namespace_id`, `group_name`, `unique_id`), + KEY `idx_create_dt` (`create_dt`) +) ENGINE = InnoDB + AUTO_INCREMENT = 0 + DEFAULT CHARSET = utf8mb4 COMMENT ='浠诲姟璋冨害鏃ュ織淇℃伅璁板綍琛�' +; + +DROP TABLE IF EXISTS `scene_config`; +CREATE TABLE `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銆丆RON 琛ㄨ揪寮�', + `trigger_interval` varchar(16) NOT NULL DEFAULT '' COMMENT '闂撮殧鏃堕暱', + `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 '淇敼鏃堕棿', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_namespace_id_group_name_scene_name` (`namespace_id`, `group_name`, `scene_name`) +) ENGINE = InnoDB + AUTO_INCREMENT = 0 + DEFAULT CHARSET = utf8mb4 COMMENT ='鍦烘櫙閰嶇疆' +; + +DROP TABLE IF EXISTS `server_node`; +CREATE TABLE `server_node` +( + `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 '缁勫悕绉�', + `host_id` varchar(64) NOT NULL COMMENT '涓绘満id', + `host_ip` varchar(64) NOT NULL COMMENT '鏈哄櫒ip', + `context_path` varchar(256) NOT NULL DEFAULT '/' COMMENT '瀹㈡埛绔笂涓嬫枃璺緞 server.servlet.context-path', + `host_port` int(16) NOT NULL COMMENT '鏈哄櫒绔彛', + `expire_at` datetime NOT NULL COMMENT '杩囨湡鏃堕棿', + `node_type` tinyint(4) NOT NULL COMMENT '鑺傜偣绫诲瀷 1銆佸鎴风 2銆佹槸鏈嶅姟绔�', + `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_namespace_id_group_name` (`namespace_id`, `group_name`), + KEY `idx_expire_at_node_type` (`expire_at`, `node_type`), + UNIQUE KEY `uk_host_id_host_ip` (`host_id`, `host_ip`) +) ENGINE = InnoDB + AUTO_INCREMENT = 0 + DEFAULT CHARSET = utf8mb4 COMMENT ='鏈嶅姟鍣ㄨ妭鐐�' +; + +DROP TABLE IF EXISTS `distributed_lock`; +CREATE TABLE `distributed_lock` +( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '涓婚敭', + `name` varchar(64) NOT NULL COMMENT '閿佸悕绉�', + `lock_until` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '閿佸畾鏃堕暱', + `locked_at` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '閿佸畾鏃堕棿', + `locked_by` varchar(255) NOT NULL COMMENT '閿佸畾鑰�', + `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿', + `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '淇敼鏃堕棿', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_name` (`name`) +) ENGINE = InnoDB + AUTO_INCREMENT = 0 + DEFAULT CHARSET = utf8mb4 COMMENT ='閿佸畾琛�' +; + +DROP TABLE IF EXISTS `system_user`; +CREATE TABLE `system_user` +( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '涓婚敭', + `username` varchar(64) NOT NULL COMMENT '璐﹀彿', + `password` varchar(128) NOT NULL COMMENT '瀵嗙爜', + `role` tinyint(4) NOT NULL DEFAULT '0' 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 '淇敼鏃堕棿', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_username` (`username`) USING BTREE +) ENGINE = InnoDB + DEFAULT CHARSET = utf8mb4 COMMENT ='绯荤粺鐢ㄦ埛琛�'; + +-- pwd: admin +INSERT INTO system_user (username, password, role) +VALUES ('admin', '465c194afb65670f38322df087f0a9bb225cc257e43eb4ac5a0c98ef5b3173ac', 2); + +DROP TABLE IF EXISTS `system_user_permission`; +CREATE TABLE `system_user_permission` +( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '涓婚敭', + `group_name` varchar(64) NOT NULL COMMENT '缁勫悕绉�', + `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '鍛藉悕绌洪棿id', + `system_user_id` bigint(20) NOT NULL COMMENT '绯荤粺鐢ㄦ埛id', + `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_system_user_id` (`namespace_id`, `group_name`, `system_user_id`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8mb4 COMMENT ='绯荤粺鐢ㄦ埛鏉冮檺琛�'; + +DROP TABLE IF EXISTS `sequence_alloc`; +CREATE TABLE `sequence_alloc` +( + `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 DEFAULT '' COMMENT '缁勫悕绉�', + `max_id` bigint(20) NOT NULL DEFAULT '1' COMMENT '鏈�澶d', + `step` int(11) NOT NULL DEFAULT '100' COMMENT '姝ラ暱', + `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_namespace_id_group_name` (`namespace_id`, `group_name`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8mb4 COMMENT ='鍙锋妯″紡搴忓彿ID鍒嗛厤琛�'; + +-- 鍒嗗竷寮忚皟搴DL +DROP TABLE IF EXISTS `job`; +CREATE TABLE `job` +( + `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 '缁勫悕绉�', + `job_name` varchar(64) NOT NULL COMMENT '鍚嶇О', + `args_str` text DEFAULT NULL COMMENT '鎵ц鏂规硶鍙傛暟', + `args_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '鍙傛暟绫诲瀷 ', + `next_trigger_at` bigint(13) NOT NULL COMMENT '涓嬫瑙﹀彂鏃堕棿', + `job_status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '浠诲姟鐘舵�� 0銆佸叧闂��1銆佸紑鍚�', + `task_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '浠诲姟绫诲瀷 1銆侀泦缇� 2銆佸箍鎾� 3銆佸垏鐗�', + `route_key` tinyint(4) NOT NULL DEFAULT '4' COMMENT '璺敱绛栫暐', + `executor_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '鎵ц鍣ㄧ被鍨�', + `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銆佸苟琛�', + `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 '骞惰鏁�', + `retry_interval` int(11) NOT NULL DEFAULT '0' COMMENT '閲嶈瘯闂撮殧(s)', + `bucket_index` int(11) NOT NULL DEFAULT '0' COMMENT 'bucket', + `resident` tinyint(4) NOT NULL DEFAULT '0' COMMENT '鏄惁鏄父椹讳换鍔�', + `description` varchar(256) NOT NULL DEFAULT '' 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 '淇敼鏃堕棿', + `deleted` tinyint(4) NOT NULL DEFAULT '0' COMMENT '閫昏緫鍒犻櫎 1銆佸垹闄�', + PRIMARY KEY (`id`), + KEY `idx_namespace_id_group_name` (`namespace_id`, `group_name`), + KEY `idx_job_status_bucket_index` (`job_status`, `bucket_index`), + KEY `idx_create_dt` (`create_dt`) +) ENGINE = InnoDB + AUTO_INCREMENT = 0 + DEFAULT CHARSET = utf8mb4 COMMENT ='浠诲姟淇℃伅'; + +INSERT INTO job (id, namespace_id, group_name, job_name, args_str, args_type, next_trigger_at, job_status, task_type, route_key, executor_type, executor_info, trigger_type, trigger_interval, block_strategy, executor_timeout, max_retry_times, parallel_num, retry_interval, bucket_index, resident, description, ext_attrs, create_dt, update_dt, deleted) +VALUES (1, 'dev', 'ruoyi_group', 'demo-job', null, 1, 1710344035622, 1, 1, 4, 1, 'testJobExecutor', 2, '60', 1, 60, 3, 1, 1, 116, 0, '', '', '2024-03-13 22:59:39', '2024-03-13 23:32:52', 0); + +DROP TABLE IF EXISTS `job_log_message`; +CREATE TABLE `job_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 '缁勫悕绉�', + `job_id` bigint(20) NOT NULL COMMENT '浠诲姟淇℃伅id', + `task_batch_id` bigint(20) NOT NULL COMMENT '浠诲姟鎵规id', + `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 '鍒涘缓鏃堕棿', + `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_namespace_id_group_name` (`namespace_id`, `group_name`) +) ENGINE = InnoDB + AUTO_INCREMENT = 0 + DEFAULT CHARSET = utf8mb4 COMMENT ='璋冨害鏃ュ織'; + +DROP TABLE IF EXISTS `job_task`; +CREATE TABLE `job_task` +( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '涓婚敭', + `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '鍛藉悕绌洪棿id', + `group_name` varchar(64) NOT NULL COMMENT '缁勫悕绉�', + `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`), + KEY `idx_namespace_id_group_name` (`namespace_id`, `group_name`) +) ENGINE = InnoDB + AUTO_INCREMENT = 0 + DEFAULT CHARSET = utf8mb4 COMMENT ='浠诲姟瀹炰緥'; + +DROP TABLE IF EXISTS `job_task_batch`; +CREATE TABLE `job_task_batch` +( + `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 '缁勫悕绉�', + `job_id` bigint(20) NOT NULL COMMENT '浠诲姟id', + `workflow_node_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '宸ヤ綔娴佽妭鐐筰d', + `parent_workflow_node_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '宸ヤ綔娴佷换鍔$埗鎵规id', + `workflow_task_batch_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '宸ヤ綔娴佷换鍔℃壒娆d', + `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 '浠诲姟鎵ц鏃堕棿', + `system_task_type` tinyint(4) NOT NULL DEFAULT '3' COMMENT '浠诲姟绫诲瀷 3銆丣OB浠诲姟 4銆乄ORKFLOW浠诲姟', + `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_namespace_id_group_name` (`namespace_id`, `group_name`), + KEY `idx_workflow_task_batch_id_workflow_node_id` (`workflow_task_batch_id`,`workflow_node_id`) +) ENGINE = InnoDB + AUTO_INCREMENT = 0 + DEFAULT CHARSET = utf8mb4 COMMENT ='浠诲姟鎵规'; + +DROP TABLE IF EXISTS `job_notify_config`; +CREATE TABLE `job_notify_config` +( + `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 '缁勫悕绉�', + `job_id` bigint(20) NOT NULL COMMENT '浠诲姟id', + `notify_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '閫氱煡鐘舵�� 0銆佹湭鍚敤 1銆佸惎鐢�', + `notify_type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '閫氱煡绫诲瀷 1銆侀拤閽� 2銆侀偖浠� 3銆佷紒涓氬井淇�', + `notify_attribute` varchar(512) NOT NULL COMMENT '閰嶇疆灞炴��', + `notify_threshold` int(11) NOT NULL DEFAULT '0' COMMENT '閫氱煡闃堝��', + `notify_scene` tinyint(4) NOT NULL DEFAULT '0' COMMENT '閫氱煡鍦烘櫙', + `rate_limiter_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '闄愭祦鐘舵�� 0銆佹湭鍚敤 1銆佸惎鐢�', + `rate_limiter_threshold` int(11) NOT NULL DEFAULT '0' 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`), + KEY `idx_namespace_id_group_name_job_id` (`namespace_id`, `group_name`, job_id) +) ENGINE = InnoDB + AUTO_INCREMENT = 4 + DEFAULT CHARSET = utf8mb4 COMMENT ='job閫氱煡閰嶇疆'; + +DROP TABLE IF EXISTS `job_summary`; +CREATE TABLE `job_summary` +( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '涓婚敭', + `namespace_id` VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '鍛藉悕绌洪棿id', + `group_name` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '缁勫悕绉�', + `job_id` bigint NOT NULL COMMENT '浠诲姟淇℃伅id', + `trigger_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '缁熻鏃堕棿', + `success_num` int NOT NULL DEFAULT '0' COMMENT '鎵ц鎴愬姛-鏃ュ織鏁伴噺', + `fail_num` int NOT NULL DEFAULT '0' COMMENT '鎵ц澶辫触-鏃ュ織鏁伴噺', + `fail_reason` varchar(512) NOT NULL DEFAULT '' COMMENT '澶辫触鍘熷洜', + `stop_num` int NOT NULL DEFAULT '0' COMMENT '鎵ц澶辫触-鏃ュ織鏁伴噺', + `stop_reason` varchar(512) NOT NULL DEFAULT '' COMMENT '澶辫触鍘熷洜', + `cancel_num` int NOT NULL DEFAULT '0' COMMENT '鎵ц澶辫触-鏃ュ織鏁伴噺', + `cancel_reason` varchar(512) 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`), + KEY `idx_namespace_id_group_name_job_id` (`namespace_id`, `group_name`, job_id), + UNIQUE KEY `uk_job_id_trigger_at` (`job_id`, `trigger_at`) USING BTREE +) ENGINE = InnoDB + AUTO_INCREMENT = 1 + DEFAULT CHARSET = utf8mb4 COMMENT ='DashBoard_Job'; + +DROP TABLE IF EXISTS `retry_summary`; +CREATE TABLE `retry_summary` +( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '涓婚敭', + `namespace_id` VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '鍛藉悕绌洪棿id', + `group_name` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '缁勫悕绉�', + `scene_name` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '鍦烘櫙鍚嶇О', + `trigger_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '缁熻鏃堕棿', + `running_num` int NOT NULL DEFAULT '0' COMMENT '閲嶈瘯涓�-鏃ュ織鏁伴噺', + `finish_num` int NOT NULL DEFAULT '0' COMMENT '閲嶈瘯瀹屾垚-鏃ュ織鏁伴噺', + `max_count_num` int NOT NULL DEFAULT '0' COMMENT '閲嶈瘯鍒拌揪鏈�澶ф鏁�-鏃ュ織鏁伴噺', + `suspend_num` int 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`), + UNIQUE KEY `uk_scene_name_trigger_at` (`namespace_id`, `group_name`, `scene_name`, `trigger_at`) USING BTREE +) ENGINE = InnoDB + AUTO_INCREMENT = 1 + DEFAULT CHARSET = utf8mb4 COMMENT ='DashBoard_Retry'; + +DROP TABLE IF EXISTS `workflow`; +CREATE TABLE `workflow` +( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '涓婚敭', + `workflow_name` varchar(64) NOT NULL COMMENT '宸ヤ綔娴佸悕绉�', + `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '鍛藉悕绌洪棿id', + `group_name` varchar(64) NOT NULL COMMENT '缁勫悕绉�', + `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 '涓嬫瑙﹀彂鏃堕棿', + `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 '鎻忚堪', + `flow_info` text DEFAULT NULL COMMENT '娴佺▼淇℃伅', + `bucket_index` int(11) NOT NULL DEFAULT '0' COMMENT 'bucket', + `version` int(11) NOT NULL 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_create_dt` (`create_dt`), + KEY `idx_namespace_id_group_name` (`namespace_id`, `group_name`) +) ENGINE = InnoDB + AUTO_INCREMENT = 0 + DEFAULT CHARSET = utf8mb4 COMMENT ='宸ヤ綔娴�'; + +DROP TABLE IF EXISTS `workflow_node`; +CREATE TABLE `workflow_node` +( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '涓婚敭', + `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '鍛藉悕绌洪棿id', + `node_name` varchar(64) NOT NULL COMMENT '鑺傜偣鍚嶇О', + `group_name` varchar(64) NOT NULL COMMENT '缁勫悕绉�', + `job_id` bigint(20) NOT NULL COMMENT '浠诲姟淇℃伅id', + `workflow_id` bigint(20) NOT NULL COMMENT '宸ヤ綔娴両D', + `node_type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '1銆佷换鍔¤妭鐐� 2銆佹潯浠惰妭鐐�', + `expression_type` tinyint(4) NOT NULL DEFAULT 0 COMMENT '1銆丼pEl銆�2銆丄viator 3銆丵L', + `fail_strategy` tinyint(4) NOT NULL DEFAULT 1 COMMENT '澶辫触绛栫暐 1銆佽烦杩� 2銆侀樆濉�', + `workflow_node_status` tinyint(4) NOT NULL DEFAULT 1 COMMENT '宸ヤ綔娴佽妭鐐圭姸鎬� 0銆佸叧闂��1銆佸紑鍚�', + `priority_level` int(11) NOT NULL DEFAULT 1 COMMENT '浼樺厛绾�', + `node_info` text DEFAULT NULL COMMENT '鑺傜偣淇℃伅 ', + `version` int(11) NOT NULL 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_create_dt` (`create_dt`), + KEY `idx_namespace_id_group_name` (`namespace_id`, `group_name`) +) ENGINE = InnoDB + AUTO_INCREMENT = 0 + DEFAULT CHARSET = utf8mb4 COMMENT ='宸ヤ綔娴佽妭鐐�'; + +DROP TABLE IF EXISTS `workflow_task_batch`; +CREATE TABLE `workflow_task_batch` +( + `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 '缁勫悕绉�', + `workflow_id` bigint(20) NOT NULL COMMENT '宸ヤ綔娴佷换鍔d', + `task_batch_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '浠诲姟鎵规鐘舵�� 0銆佸け璐� 1銆佹垚鍔�', + `operation_reason` tinyint(4) NOT NULL DEFAULT '0' COMMENT '鎿嶄綔鍘熷洜', + `flow_info` text DEFAULT NULL 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` (`workflow_id`, `task_batch_status`), + KEY `idx_create_dt` (`create_dt`), + KEY `idx_namespace_id_group_name` (`namespace_id`, `group_name`) +) ENGINE = InnoDB + AUTO_INCREMENT = 0 + DEFAULT CHARSET = utf8mb4 COMMENT ='宸ヤ綔娴佹壒娆�'; diff --git a/script/sql/postgres/easy_retry.sql b/script/sql/postgres/easy_retry.sql new file mode 100644 index 0000000..9e5d072 --- /dev/null +++ b/script/sql/postgres/easy_retry.sql @@ -0,0 +1,804 @@ +-- PostgreSQL DDL + +CREATE TABLE namespace +( + id BIGSERIAL PRIMARY KEY, + name VARCHAR(64) NOT NULL, + unique_id VARCHAR(64) NOT NULL, + description VARCHAR(256) NOT NULL DEFAULT '', + create_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + update_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted SMALLINT NOT NULL DEFAULT 0 +); + +CREATE UNIQUE INDEX uk_namespace_unique_id ON "namespace" (unique_id); + +COMMENT ON COLUMN namespace.id IS '涓婚敭'; +COMMENT ON COLUMN namespace.name IS '鍚嶇О'; +COMMENT ON COLUMN namespace.unique_id IS '鍞竴id'; +COMMENT ON COLUMN namespace.description IS '鎻忚堪'; +COMMENT ON COLUMN namespace.create_dt IS '鍒涘缓鏃堕棿'; +COMMENT ON COLUMN namespace.update_dt IS '淇敼鏃堕棿'; +COMMENT ON COLUMN namespace.deleted IS '閫昏緫鍒犻櫎 1銆佸垹闄�'; +COMMENT ON TABLE namespace IS '鍛藉悕绌洪棿'; + +INSERT INTO namespace (name, unique_id, create_dt, update_dt, deleted) +VALUES ('Default', '764d604ec6fc45f68cd92514c40e9e1a', now(), now(), 0); + +CREATE TABLE group_config +( + id BIGSERIAL PRIMARY KEY, + namespace_id VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', + group_name VARCHAR(64) NOT NULL, + description VARCHAR(256) NOT NULL, + group_status SMALLINT NOT NULL DEFAULT 0, + version INT NOT NULL, + 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 +); + +CREATE UNIQUE INDEX "uk_namespace_id_group_name_group_config" ON "group_config" ("namespace_id", "group_name"); + +COMMENT ON COLUMN "group_config"."id" IS '涓婚敭'; +COMMENT ON COLUMN "group_config"."namespace_id" IS '鍛藉悕绌洪棿'; +COMMENT ON COLUMN "group_config"."group_name" IS '缁勫悕绉�'; +COMMENT ON COLUMN "group_config"."description" IS '缁勬弿杩�'; +COMMENT ON COLUMN "group_config"."group_status" IS '缁勭姸鎬� 0銆佹湭鍚敤 1銆佸惎鐢�'; +COMMENT ON COLUMN "group_config"."version" IS '鐗堟湰鍙�'; +COMMENT ON COLUMN "group_config"."group_partition" IS '鍒嗗尯'; +COMMENT ON COLUMN "group_config"."id_generator_mode" IS '鍞竴id鐢熸垚妯″紡 榛樿鍙锋妯″紡'; +COMMENT ON COLUMN "group_config"."init_scene" IS '鏄惁鍒濆鍖栧満鏅� 0:鍚� 1:鏄�'; +COMMENT ON COLUMN "group_config"."bucket_index" IS 'bucket'; +COMMENT ON COLUMN "group_config"."create_dt" IS '鍒涘缓鏃堕棿'; +COMMENT ON COLUMN "group_config"."update_dt" IS '淇敼鏃堕棿'; +COMMENT ON TABLE "group_config" IS '缁勯厤缃�'; + +INSERT INTO `namespace` (`id`, `name`, `unique_id`, `create_dt`, `update_dt`, `deleted`) +VALUES (1, 'Development', 'dev', now(), now(), 0); +INSERT INTO `namespace` (`id`, `name`, `unique_id`, `create_dt`, `update_dt`, `deleted`) +VALUES (2, 'Production', 'prod', now(), now(), 0); + +CREATE TABLE notify_config +( + id BIGSERIAL PRIMARY KEY, + namespace_id VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', + group_name VARCHAR(64) NOT NULL, + scene_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, + notify_scene SMALLINT NOT NULL DEFAULT 0, + rate_limiter_status SMALLINT NOT NULL DEFAULT 0, + rate_limiter_threshold INT NOT NULL DEFAULT 0, + description VARCHAR(256) NOT NULL DEFAULT '', + create_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + update_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +CREATE INDEX idx_namespace_id_group_name ON notify_config (namespace_id, group_name); + +COMMENT ON COLUMN "notify_config"."id" IS '涓婚敭'; +COMMENT ON COLUMN "notify_config"."group_name" IS '缁勫悕绉�'; +COMMENT ON COLUMN "notify_config"."namespace_id" IS '鍛藉悕绌洪棿id'; +COMMENT ON COLUMN "notify_config"."scene_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"."rate_limiter_status" IS '闄愭祦鐘舵�� 0銆佹湭鍚敤 1銆佸惎鐢�'; +COMMENT ON COLUMN "notify_config"."rate_limiter_threshold" 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 +( + id BIGSERIAL PRIMARY KEY, + unique_id VARCHAR(64) NOT NULL, + namespace_id VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', + 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, + task_type SMALLINT NOT NULL DEFAULT 1, + create_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +CREATE UNIQUE INDEX "uk_namespace_id_group_name_unique_id_retry_dead_letter" ON "retry_dead_letter_0" ("namespace_id", "group_name", "unique_id"); +CREATE INDEX "idx_namespace_id_group_name_scene_name_retry_dead_letter" ON "retry_dead_letter_0" ("namespace_id", "group_name", "scene_name"); +CREATE INDEX "idx_idempotent_id_retry_dead_letter" ON "retry_dead_letter_0" ("idempotent_id"); +CREATE INDEX "idx_biz_no_retry_dead_letter" ON "retry_dead_letter_0" ("biz_no"); +CREATE INDEX "idx_create_dt_retry_dead_letter" ON "retry_dead_letter_0" ("create_dt"); + +COMMENT ON COLUMN "retry_dead_letter_0"."id" IS '涓婚敭'; +COMMENT ON COLUMN "retry_dead_letter_0"."unique_id" IS '鍚岀粍涓媔d鍞竴'; +COMMENT ON COLUMN "retry_dead_letter_0"."namespace_id" IS '鍛藉悕绌洪棿id'; +COMMENT ON COLUMN "retry_dead_letter_0"."group_name" IS '缁勫悕绉�'; +COMMENT ON COLUMN "retry_dead_letter_0"."scene_name" IS '鍦烘櫙鍚嶇О'; +COMMENT ON COLUMN "retry_dead_letter_0"."idempotent_id" IS '骞傜瓑id'; +COMMENT ON COLUMN "retry_dead_letter_0"."biz_no" IS '涓氬姟缂栧彿'; +COMMENT ON COLUMN "retry_dead_letter_0"."executor_name" IS '鎵ц鍣ㄥ悕绉�'; +COMMENT ON COLUMN "retry_dead_letter_0"."args_str" IS '鎵ц鏂规硶鍙傛暟'; +COMMENT ON COLUMN "retry_dead_letter_0"."ext_attrs" IS '鎵╁睍瀛楁'; +COMMENT ON COLUMN "retry_dead_letter_0"."task_type" IS '浠诲姟绫诲瀷 1銆侀噸璇曟暟鎹� 2銆佸洖璋冩暟鎹�'; +COMMENT ON COLUMN "retry_dead_letter_0"."create_dt" IS '鍒涘缓鏃堕棿'; +COMMENT ON TABLE "retry_dead_letter_0" IS '姝讳俊闃熷垪琛�'; + +CREATE TABLE retry_task_0 +( + id BIGSERIAL PRIMARY KEY, + unique_id VARCHAR(64) NOT NULL, + namespace_id VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', + 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, + next_trigger_at TIMESTAMP NOT NULL, + retry_count INT NOT NULL DEFAULT 0, + 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 +); + +CREATE UNIQUE INDEX "uk_name_unique_id_retry_task" ON "retry_task_0" ("namespace_id", "group_name", "unique_id"); +CREATE INDEX "idx_namespace_id_group_name_scene_name_retry_task" ON "retry_task_0" ("namespace_id", "group_name", "scene_name"); +CREATE INDEX "idx_namespace_id_group_name_retry_status_retry_task" ON "retry_task_0" (namespace_id, group_name, "retry_status"); +CREATE INDEX "idx_idempotent_id_retry_task" ON "retry_task_0" ("idempotent_id"); +CREATE INDEX "idx_biz_no_retry_task" ON "retry_task_0" ("biz_no"); +CREATE INDEX "idx_create_dt_retry_task" ON "retry_task_0" ("create_dt"); + +COMMENT ON COLUMN "retry_task_0"."id" IS '涓婚敭'; +COMMENT ON COLUMN "retry_task_0"."unique_id" IS '鍚岀粍涓媔d鍞竴'; +COMMENT ON COLUMN "retry_task_0"."namespace_id" IS '鍛藉悕绌洪棿id'; +COMMENT ON COLUMN "retry_task_0"."group_name" IS '缁勫悕绉�'; +COMMENT ON COLUMN "retry_task_0"."scene_name" IS '鍦烘櫙鍚嶇О'; +COMMENT ON COLUMN "retry_task_0"."idempotent_id" IS '骞傜瓑id'; +COMMENT ON COLUMN "retry_task_0"."biz_no" IS '涓氬姟缂栧彿'; +COMMENT ON COLUMN "retry_task_0"."executor_name" IS '鎵ц鍣ㄥ悕绉�'; +COMMENT ON COLUMN "retry_task_0"."args_str" IS '鎵ц鏂规硶鍙傛暟'; +COMMENT ON COLUMN "retry_task_0"."ext_attrs" IS '鎵╁睍瀛楁'; +COMMENT ON COLUMN "retry_task_0"."next_trigger_at" IS '涓嬫瑙﹀彂鏃堕棿'; +COMMENT ON COLUMN "retry_task_0"."retry_count" IS '閲嶈瘯娆℃暟'; +COMMENT ON COLUMN "retry_task_0"."retry_status" IS '閲嶈瘯鐘舵�� 0銆侀噸璇曚腑 1銆佹垚鍔� 2銆佹渶澶ч噸璇曟鏁�'; +COMMENT ON COLUMN "retry_task_0"."task_type" IS '浠诲姟绫诲瀷 1銆侀噸璇曟暟鎹� 2銆佸洖璋冩暟鎹�'; +COMMENT ON COLUMN "retry_task_0"."create_dt" IS '鍒涘缓鏃堕棿'; +COMMENT ON COLUMN "retry_task_0"."update_dt" IS '淇敼鏃堕棿'; +COMMENT ON TABLE "retry_task_0" IS '浠诲姟琛�'; + +CREATE TABLE retry_task_log +( + id BIGSERIAL PRIMARY KEY, + unique_id VARCHAR(64) NOT NULL, + namespace_id VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', + 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 +); + +CREATE INDEX "idx_group_name_scene_name_retry_task_log" ON "retry_task_log" ("namespace_id", "group_name", "scene_name"); +CREATE INDEX "idx_retry_status_retry_task_log" ON "retry_task_log" ("retry_status"); +CREATE INDEX "idx_idempotent_id_retry_task_log" ON "retry_task_log" ("idempotent_id"); +CREATE INDEX "idx_unique_id" ON "retry_task_log" ("namespace_id", "group_name", "unique_id"); +CREATE INDEX "idx_biz_no_retry_task_log" ON "retry_task_log" ("biz_no"); +CREATE INDEX "idx_create_dt_retry_task_log" ON "retry_task_log" ("create_dt"); + +COMMENT ON COLUMN "retry_task_log"."id" IS '涓婚敭'; +COMMENT ON COLUMN "retry_task_log"."namespace_id" IS '鍛藉悕绌洪棿id'; +COMMENT ON COLUMN "retry_task_log"."unique_id" IS '鍚岀粍涓媔d鍞竴'; +COMMENT ON COLUMN "retry_task_log"."group_name" IS '缁勫悕绉�'; +COMMENT ON COLUMN "retry_task_log"."scene_name" IS '鍦烘櫙鍚嶇О'; +COMMENT ON COLUMN "retry_task_log"."idempotent_id" IS '骞傜瓑id'; +COMMENT ON COLUMN "retry_task_log"."biz_no" IS '涓氬姟缂栧彿'; +COMMENT ON COLUMN "retry_task_log"."executor_name" IS '鎵ц鍣ㄥ悕绉�'; +COMMENT ON COLUMN "retry_task_log"."args_str" IS '鎵ц鏂规硶鍙傛暟'; +COMMENT ON COLUMN "retry_task_log"."ext_attrs" IS '鎵╁睍瀛楁'; +COMMENT ON COLUMN "retry_task_log"."retry_status" IS '閲嶈瘯鐘舵�� 0銆侀噸璇曚腑 1銆佹垚鍔� 2銆佹渶澶ф鏁�'; +COMMENT ON COLUMN "retry_task_log"."task_type" IS '浠诲姟绫诲瀷 1銆侀噸璇曟暟鎹� 2銆佸洖璋冩暟鎹�'; +COMMENT ON COLUMN "retry_task_log"."create_dt" IS '鍒涘缓鏃堕棿'; +COMMENT ON TABLE "retry_task_log" IS '浠诲姟鏃ュ織鍩虹淇℃伅琛�'; + +CREATE TABLE 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, + create_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + message TEXT NOT NULL, + client_info VARCHAR(128) DEFAULT NULL +); + +CREATE INDEX "idx_namespace_id_group_name_unique_id" ON "retry_task_log_message" ("namespace_id", "group_name", "unique_id"); +CREATE INDEX "idx_create_dt" ON "retry_task_log_message" ("create_dt"); +COMMENT ON COLUMN "retry_task_log_message"."id" IS '涓婚敭'; +COMMENT ON COLUMN "retry_task_log_message"."namespace_id" IS '鍛藉悕绌洪棿'; +COMMENT ON COLUMN "retry_task_log_message"."group_name" IS '缁勫悕绉�'; +COMMENT ON COLUMN "retry_task_log_message"."unique_id" IS '鍚岀粍涓媔d鍞竴'; +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 +( + 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 '', + deadline_request BIGINT NOT NULL DEFAULT 60000, + 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, + update_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +CREATE UNIQUE INDEX "uk_namespace_id_group_name_scene_name" ON "scene_config" ("namespace_id", "group_name","scene_name"); +COMMENT ON COLUMN "scene_config"."id" IS '涓婚敭'; +COMMENT ON COLUMN "scene_config"."namespace_id" IS '鍛藉悕绌洪棿id'; +COMMENT ON COLUMN "scene_config"."scene_name" IS '鍦烘櫙鍚嶇О'; +COMMENT ON COLUMN "scene_config"."group_name" IS '缁勫悕绉�'; +COMMENT ON COLUMN "scene_config"."scene_status" IS '缁勭姸鎬� 0銆佹湭鍚敤 1銆佸惎鐢�'; +COMMENT ON COLUMN "scene_config"."max_retry_count" IS '鏈�澶ч噸璇曟鏁�'; +COMMENT ON COLUMN "scene_config"."back_off" IS '1銆侀粯璁ょ瓑绾� 2銆佸浐瀹氶棿闅旀椂闂� 3銆丆RON 琛ㄨ揪寮�'; +COMMENT ON COLUMN "scene_config"."trigger_interval" IS '闂撮殧鏃堕暱'; +COMMENT ON COLUMN "scene_config"."deadline_request" IS 'Deadline Request 璋冪敤閾捐秴鏃� 鍗曚綅姣'; +COMMENT ON COLUMN "scene_config"."description" IS '鎻忚堪'; +COMMENT ON COLUMN "scene_config"."route_key" IS '璺敱绛栫暐'; +COMMENT ON COLUMN "scene_config"."executor_timeout" IS '瓒呮椂鏃堕棿'; +COMMENT ON COLUMN "scene_config"."create_dt" IS '鍒涘缓鏃堕棿'; +COMMENT ON COLUMN "scene_config"."update_dt" IS '淇敼鏃堕棿'; +COMMENT ON TABLE "scene_config" IS '鍦烘櫙閰嶇疆'; + +CREATE TABLE server_node +( + id BIGSERIAL PRIMARY KEY, + namespace_id VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', + group_name VARCHAR(64) NOT NULL, + host_id VARCHAR(64) NOT NULL, + host_ip VARCHAR(64) NOT NULL, + context_path VARCHAR(256) NOT NULL DEFAULT '/', + host_port INT NOT NULL, + expire_at TIMESTAMP NOT NULL, + node_type SMALLINT NOT NULL, + ext_attrs VARCHAR(256) DEFAULT '', + create_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + update_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +CREATE UNIQUE INDEX "uk_host_id_host_ip" ON "server_node" ("host_id","host_ip"); +CREATE INDEX "idx_expire_at_node_type" ON "server_node" ("expire_at","node_type"); +CREATE INDEX "idx_namespace_id_group_name_server_node" ON "server_node" ("namespace_id", "group_name"); + +COMMENT ON COLUMN "server_node"."id" IS '涓婚敭'; +COMMENT ON COLUMN "server_node"."group_name" IS '缁勫悕绉�'; +COMMENT ON COLUMN "server_node"."namespace_id" IS '鍛藉悕绌洪棿id'; +COMMENT ON COLUMN "server_node"."host_id" IS '涓绘満id'; +COMMENT ON COLUMN "server_node"."host_ip" IS '鏈哄櫒ip'; +COMMENT ON COLUMN "server_node"."context_path" IS '瀹㈡埛绔笂涓嬫枃璺緞 server.servlet.context-path'; +COMMENT ON COLUMN "server_node"."host_port" IS '鏈哄櫒绔彛'; +COMMENT ON COLUMN "server_node"."expire_at" IS '杩囨湡鏃堕棿'; +COMMENT ON COLUMN "server_node"."node_type" IS '鑺傜偣绫诲瀷 1銆佸鎴风 2銆佹槸鏈嶅姟绔�'; +COMMENT ON COLUMN "server_node"."ext_attrs" IS '鎵╁睍瀛楁'; +COMMENT ON COLUMN "server_node"."create_dt" IS '鍒涘缓鏃堕棿'; +COMMENT ON COLUMN "server_node"."update_dt" IS '淇敼鏃堕棿'; +COMMENT ON TABLE "server_node" IS '鏈嶅姟鍣ㄨ妭鐐�'; + +CREATE TABLE distributed_lock +( + id BIGSERIAL PRIMARY KEY, + name VARCHAR(64) NOT NULL, + lock_until TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + locked_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + locked_by VARCHAR(255) NOT NULL, + create_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + update_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +ALTER TABLE distributed_lock ADD CONSTRAINT uk_name UNIQUE (name); + +COMMENT ON COLUMN "distributed_lock"."id" IS '涓婚敭'; +COMMENT ON COLUMN "distributed_lock"."name" IS '閿佸悕绉�'; +COMMENT ON COLUMN "distributed_lock"."lock_until" IS '閿佸畾鏃堕暱'; +COMMENT ON COLUMN "distributed_lock"."locked_at" IS '閿佸畾鏃堕棿'; +COMMENT ON COLUMN "distributed_lock"."locked_by" IS '閿佸畾鑰�'; +COMMENT ON COLUMN "distributed_lock"."create_dt" IS '鍒涘缓鏃堕棿'; +COMMENT ON COLUMN "distributed_lock"."update_dt" IS '淇敼鏃堕棿'; +COMMENT ON TABLE "distributed_lock" IS '閿佸畾琛�'; + + +CREATE TABLE system_user +( + id BIGSERIAL PRIMARY KEY, + username VARCHAR(64) NOT NULL, + password VARCHAR(128) NOT NULL, + role SMALLINT NOT NULL DEFAULT 0, + create_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + update_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +CREATE UNIQUE INDEX "uk_username" ON "system_user" ("username"); +COMMENT ON COLUMN "system_user"."id" IS '涓婚敭'; +COMMENT ON COLUMN "system_user"."username" IS '璐﹀彿'; +COMMENT ON COLUMN "system_user"."password" IS '瀵嗙爜'; +COMMENT ON COLUMN "system_user"."role" IS '瑙掕壊锛�1-鏅�氱敤鎴枫��2-绠$悊鍛�'; +COMMENT ON COLUMN "system_user"."create_dt" IS '鍒涘缓鏃堕棿'; +COMMENT ON COLUMN "system_user"."update_dt" IS '淇敼鏃堕棿'; +COMMENT ON TABLE "system_user" IS '绯荤粺鐢ㄦ埛琛�'; + +-- pwd: admin +INSERT INTO system_user (username, password, role) +VALUES ('admin', '465c194afb65670f38322df087f0a9bb225cc257e43eb4ac5a0c98ef5b3173ac', 2); + +CREATE TABLE system_user_permission +( + id BIGSERIAL PRIMARY KEY, + namespace_id VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', + group_name VARCHAR(64) NOT NULL, + system_user_id BIGINT NOT NULL, + create_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + update_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +CREATE UNIQUE INDEX "uk_namespace_id_group_name_system_user_id" ON "system_user_permission" ("namespace_id","group_name","system_user_id"); +COMMENT ON COLUMN "system_user_permission"."id" IS '涓婚敭'; +COMMENT ON COLUMN "system_user_permission"."namespace_id" IS '鍛藉悕绌洪棿id'; +COMMENT ON COLUMN "system_user_permission"."group_name" IS '缁勫悕绉�'; +COMMENT ON COLUMN "system_user_permission"."system_user_id" IS '绯荤粺鐢ㄦ埛id'; +COMMENT ON COLUMN "system_user_permission"."create_dt" IS '鍒涘缓鏃堕棿'; +COMMENT ON COLUMN "system_user_permission"."update_dt" IS '淇敼鏃堕棿'; +COMMENT ON TABLE "system_user_permission" IS '绯荤粺鐢ㄦ埛鏉冮檺琛�'; + + +CREATE TABLE sequence_alloc +( + id BIGSERIAL PRIMARY KEY, + namespace_id VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', + group_name VARCHAR(64) NOT NULL DEFAULT '', + max_id BIGINT NOT NULL DEFAULT 1, + step INT NOT NULL DEFAULT 100, + update_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +CREATE UNIQUE INDEX "uk_namespace_id_group_name" ON "sequence_alloc" ("namespace_id", "group_name"); + +COMMENT ON COLUMN "sequence_alloc"."id" IS '涓婚敭'; +COMMENT ON COLUMN "sequence_alloc"."namespace_id" IS '鍛藉悕绌洪棿id'; +COMMENT ON COLUMN "sequence_alloc"."group_name" IS '缁勫悕绉�'; +COMMENT ON COLUMN "sequence_alloc"."max_id" IS '鏈�澶d'; +COMMENT ON COLUMN "sequence_alloc"."step" IS '姝ラ暱'; +COMMENT ON COLUMN "sequence_alloc"."update_dt" IS '鏇存柊鏃堕棿'; +COMMENT ON TABLE "sequence_alloc" IS '鍙锋妯″紡搴忓彿ID鍒嗛厤琛�'; + +-- 鍒嗗竷寮忚皟搴DL +CREATE TABLE job +( + id BIGSERIAL PRIMARY KEY, + namespace_id VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', + group_name VARCHAR(64) NOT NULL, + job_name VARCHAR(64) NOT NULL, + args_str TEXT NOT NULL DEFAULT '', + 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, + route_key SMALLINT NOT NULL DEFAULT 4, + executor_type SMALLINT NOT NULL DEFAULT 1, + executor_info VARCHAR(255) DEFAULT NULL, + trigger_type SMALLINT NOT NULL, + trigger_interval VARCHAR(255) NOT NULL, + block_strategy SMALLINT NOT NULL DEFAULT 1, + executor_timeout INT NOT NULL DEFAULT 0, + max_retry_times INT NOT NULL DEFAULT 0, + parallel_num INT NOT NULL DEFAULT 1, + retry_interval INT NOT NULL DEFAULT 0, + bucket_index INT NOT NULL DEFAULT 0, + resident SMALLINT NOT NULL DEFAULT 0, + description VARCHAR(256) NOT NULL DEFAULT '', + ext_attrs VARCHAR(256) DEFAULT NULL, + create_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + update_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted SMALLINT NOT NULL DEFAULT 0 +); + +CREATE INDEX "idx_namespace_id_group_name_job" ON "job" ("namespace_id", "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"."namespace_id" IS '鍛藉悕绌洪棿id'; +COMMENT ON COLUMN "job"."group_name" IS '缁勫悕绉�'; +COMMENT ON COLUMN "job"."job_name" IS '鍚嶇О'; +COMMENT ON COLUMN "job"."args_str" IS '鎵ц鏂规硶鍙傛暟'; +COMMENT ON COLUMN "job"."args_type" IS '鍙傛暟绫诲瀷'; +COMMENT ON COLUMN "job"."next_trigger_at" IS '涓嬫瑙﹀彂鏃堕棿'; +COMMENT ON COLUMN "job"."job_status" IS '閲嶈瘯鐘舵�� 0銆佸叧闂��1銆佸紑鍚�'; +COMMENT ON COLUMN "job"."task_type" IS '浠诲姟绫诲瀷 1銆侀泦缇� 2銆佸箍鎾� 3銆佸垏鐗�'; +COMMENT ON COLUMN "job"."route_key" IS '璺敱绛栫暐'; +COMMENT ON COLUMN "job"."executor_type" IS '鎵ц鍣ㄧ被鍨�'; +COMMENT ON COLUMN "job"."executor_info" IS '鎵ц鍣ㄥ悕绉�'; +COMMENT ON COLUMN "job"."trigger_type" IS '瑙﹀彂绫诲瀷 1.CRON 琛ㄨ揪寮� 2. 鍥哄畾鏃堕棿'; +COMMENT ON COLUMN "job"."trigger_interval" IS '闂撮殧鏃堕暱'; +COMMENT ON COLUMN "job"."block_strategy" IS '闃诲绛栫暐 1銆佷涪寮� 2銆佽鐩� 3銆佸苟琛�'; +COMMENT ON COLUMN "job"."executor_timeout" IS '浠诲姟鎵ц瓒呮椂鏃堕棿锛屽崟浣嶇'; +COMMENT ON COLUMN "job"."max_retry_times" IS '鏈�澶ч噸璇曟鏁�'; +COMMENT ON COLUMN "job"."parallel_num" IS '骞惰鏁�'; +COMMENT ON COLUMN "job"."retry_interval" IS '鏇存柊閲嶈瘯闂撮殧(s)'; +COMMENT ON COLUMN "job"."bucket_index" IS 'bucket'; +COMMENT ON COLUMN "job"."resident" IS '鏄惁鏄父椹讳换鍔�'; +COMMENT ON COLUMN "job"."description" IS '鎻忚堪'; +COMMENT ON COLUMN "job"."ext_attrs" IS '鎵╁睍瀛楁'; +COMMENT ON COLUMN "job"."create_dt" IS '鍒涘缓鏃堕棿'; +COMMENT ON COLUMN "job"."deleted" IS '閫昏緫鍒犻櫎 1銆佸垹闄�'; +COMMENT ON COLUMN "job"."update_dt" IS '鏇存柊鏃堕棿'; +COMMENT ON TABLE "job" IS '浠诲姟淇℃伅'; + +INSERT INTO job (id, namespace_id, group_name, job_name, args_str, args_type, next_trigger_at, job_status, task_type, route_key, executor_type, executor_info, trigger_type, trigger_interval, block_strategy, executor_timeout, max_retry_times, parallel_num, retry_interval, bucket_index, resident, description, ext_attrs, create_dt, update_dt, deleted) +VALUES (1, 'dev', 'ruoyi_group', 'demo-job', null, 1, 1710344035622, 1, 1, 4, 1, 'testJobExecutor', 2, '60', 1, 60, 3, 1, 1, 116, 0, '', '', '2024-03-13 22:59:39', '2024-03-13 23:32:52', 0); + +CREATE TABLE job_log_message +( + id BIGSERIAL PRIMARY KEY, + namespace_id VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', + group_name VARCHAR(64) NOT NULL, + job_id BIGINT NOT NULL, + task_batch_id BIGINT NOT NULL, + task_id BIGINT NOT NULL, + message TEXT NOT NULL, + log_num INT NOT NULL DEFAULT 1, + real_time BIGINT NOT NULL DEFAULT 0, + ext_attrs VARCHAR(256) DEFAULT '', + create_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +CREATE INDEX "idx_namespace_id_group_name_to_job_log_message" ON "job_log_message" ("namespace_id", "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"."namespace_id" IS '鍛藉悕绌洪棿id'; +COMMENT ON COLUMN "job_log_message"."group_name" IS '缁勫悕绉�'; +COMMENT ON COLUMN "job_log_message"."job_id" IS '浠诲姟淇℃伅id'; +COMMENT ON COLUMN "job_log_message"."task_batch_id" IS '浠诲姟鎵规id'; +COMMENT ON COLUMN "job_log_message"."task_id" IS '璋冨害浠诲姟id'; +COMMENT ON COLUMN "job_log_message"."message" IS '璋冨害淇℃伅'; +COMMENT ON COLUMN "job_log_message"."log_num" IS '鏃ュ織搴忓彿'; +COMMENT ON COLUMN "job_log_message"."real_time" IS '瀹為檯鏃堕棿'; +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 +( + id BIGSERIAL PRIMARY KEY, + namespace_id VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', + 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 INDEX "idx_namespace_id_group_name_to_job_task" ON "job_task" ("namespace_id", "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"."namespace_id" IS '鍛藉悕绌洪棿id'; +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 BIGSERIAL PRIMARY KEY, + namespace_id VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', + group_name VARCHAR(64) NOT NULL, + job_id BIGINT NOT NULL, + workflow_node_id BIGINT NOT NULL DEFAULT 0, + parent_workflow_node_id BIGINT NOT NULL DEFAULT 0, + workflow_task_batch_id BIGINT NOT NULL DEFAULT 0, + 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, + system_task_type SMALLINT NOT NULL DEFAULT 3, + 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_namespace_id_group_name_to_job_task_batch" ON "job_task_batch" ("namespace_id", "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"); +CREATE INDEX "idx_workflow_task_batch_id_workflow_node_id" ON "job_task_batch" ("workflow_task_batch_id", "workflow_node_id"); + +COMMENT ON COLUMN "job_task_batch"."id" IS '涓婚敭'; +COMMENT ON COLUMN "job_task_batch"."namespace_id" IS '鍛藉悕绌洪棿id'; +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"."workflow_node_id" IS '宸ヤ綔娴佽妭鐐筰d'; +COMMENT ON COLUMN "job_task_batch"."parent_workflow_node_id" IS '鐖惰妭鐐�'; +COMMENT ON COLUMN "job_task_batch"."workflow_task_batch_id" IS '浠诲姟鎵规id'; +COMMENT ON COLUMN "job_task_batch"."system_task_type" IS '浠诲姟绫诲瀷 0銆佺郴缁熶换鍔� 1銆佷笟鍔′换鍔�'; +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 '浠诲姟鎵规'; + +CREATE TABLE job_notify_config +( + id BIGSERIAL PRIMARY KEY, + namespace_id VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', + group_name VARCHAR(64) NOT NULL, + job_id BIGINT 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, + notify_scene SMALLINT NOT NULL DEFAULT 0, + rate_limiter_status SMALLINT NOT NULL DEFAULT 0, + rate_limiter_threshold INT NOT NULL DEFAULT 0, + description VARCHAR(256) NOT NULL DEFAULT '', + create_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + update_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +CREATE INDEX idx_namespace_id_group_name_job_id_job_notify_config ON job_notify_config (namespace_id, group_name, job_id); + +COMMENT ON COLUMN "job_notify_config"."id" IS '涓婚敭'; +COMMENT ON COLUMN "job_task"."namespace_id" IS '鍛藉悕绌洪棿id'; +COMMENT ON COLUMN "job_notify_config"."group_name" IS '缁勫悕绉�'; +COMMENT ON COLUMN "job_notify_config"."job_id" IS '浠诲姟淇℃伅id'; +COMMENT ON COLUMN "job_notify_config"."notify_status" IS '閫氱煡鐘舵�� 0銆佹湭鍚敤 1銆佸惎鐢�'; +COMMENT ON COLUMN "job_notify_config"."notify_type" IS '閫氱煡绫诲瀷 1銆侀拤閽� 2銆侀偖浠� 3銆佷紒涓氬井淇�'; +COMMENT ON COLUMN "job_notify_config"."notify_attribute" IS '閰嶇疆灞炴��'; +COMMENT ON COLUMN "job_notify_config"."notify_threshold" IS '閫氱煡闃堝��'; +COMMENT ON COLUMN "job_notify_config"."notify_scene" IS '閫氱煡鍦烘櫙'; +COMMENT ON COLUMN "job_notify_config"."rate_limiter_status" IS '闄愭祦鐘舵�� 0銆佹湭鍚敤 1銆佸惎鐢�'; +COMMENT ON COLUMN "job_notify_config"."rate_limiter_threshold" IS '姣忕闄愭祦闃堝��'; +COMMENT ON COLUMN "job_notify_config"."description" IS '鎻忚堪'; +COMMENT ON COLUMN "job_notify_config"."create_dt" IS '鍒涘缓鏃堕棿'; +COMMENT ON COLUMN "job_notify_config"."update_dt" IS '淇敼鏃堕棿'; +COMMENT ON TABLE "job_notify_config" IS '閫氱煡閰嶇疆'; + +CREATE TABLE retry_summary +( + id BIGSERIAL PRIMARY KEY, + namespace_id VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', + group_name VARCHAR(64) NOT NULL DEFAULT '', + scene_name VARCHAR(50) NOT NULL DEFAULT '', + trigger_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + running_num INT NOT NULL DEFAULT 0, + finish_num INT NOT NULL DEFAULT 0, + max_count_num INT NOT NULL DEFAULT 0, + suspend_num INT NOT NULL DEFAULT 0, + create_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + update_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +CREATE UNIQUE INDEX uk_scene_name_trigger_at ON retry_summary ("namespace_id", "group_name", "scene_name", "trigger_at"); + +COMMENT ON COLUMN "retry_summary"."id" IS '涓婚敭'; +COMMENT ON COLUMN "retry_summary"."namespace_id" IS '鍛藉悕绌洪棿id'; +COMMENT ON COLUMN "retry_summary"."group_name" IS '缁勫悕绉�'; +COMMENT ON COLUMN "retry_summary"."scene_name" IS '鍦烘櫙鍚嶇О'; +COMMENT ON COLUMN "retry_summary"."trigger_at" IS '缁熻鏃堕棿'; +COMMENT ON COLUMN "retry_summary"."running_num" IS '閲嶈瘯涓�-鏃ュ織鏁伴噺'; +COMMENT ON COLUMN "retry_summary"."finish_num" IS '閲嶈瘯瀹屾垚-鏃ュ織鏁伴噺'; +COMMENT ON COLUMN "retry_summary"."max_count_num" IS '閲嶈瘯鍒拌揪鏈�澶ф鏁�-鏃ュ織鏁伴噺'; +COMMENT ON COLUMN "retry_summary"."suspend_num" IS '鏆傚仠閲嶈瘯-鏃ュ織鏁伴噺'; +COMMENT ON COLUMN "retry_summary"."create_dt" IS '鍒涘缓鏃堕棿'; +COMMENT ON COLUMN "retry_summary"."update_dt" IS '淇敼鏃堕棿'; +COMMENT ON TABLE "retry_summary" IS 'DashBoard_Retry'; + +CREATE TABLE job_summary +( + id BIGSERIAL PRIMARY KEY, + namespace_id VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', + group_name VARCHAR(64) NOT NULL DEFAULT '', + job_id BIGINT NOT NULL, + trigger_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + success_num INT NOT NULL DEFAULT 0, + fail_num INT NOT NULL DEFAULT 0, + fail_reason VARCHAR(512) NOT NULL DEFAULT '', + stop_num INT NOT NULL DEFAULT 0, + stop_reason VARCHAR(512) NOT NULL DEFAULT '', + cancel_num INT NOT NULL DEFAULT 0, + cancel_reason VARCHAR(512) NOT NULL DEFAULT '', + create_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + update_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +CREATE UNIQUE INDEX uk_job_id_trigger_at ON job_summary ("job_id", "trigger_at"); +CREATE INDEX idx_namespace_id_group_name_job_id ON job_summary ("namespace_id", "group_name", "job_id"); + +COMMENT ON COLUMN "job_summary"."id" IS '涓婚敭'; +COMMENT ON COLUMN "job_summary"."namespace_id" IS '鍛藉悕绌洪棿id'; +COMMENT ON COLUMN "job_summary"."group_name" IS '缁勫悕绉�'; +COMMENT ON COLUMN "job_summary"."job_id" IS '浠诲姟淇℃伅id'; +COMMENT ON COLUMN "job_summary"."trigger_at" IS '缁熻鏃堕棿'; +COMMENT ON COLUMN "job_summary"."success_num" IS '鎵ц鎴愬姛-鏃ュ織鏁伴噺'; +COMMENT ON COLUMN "job_summary"."fail_num" IS '鎵ц澶辫触-鏃ュ織鏁伴噺'; +COMMENT ON COLUMN "job_summary"."fail_reason" IS '澶辫触鍘熷洜'; +COMMENT ON COLUMN "job_summary"."stop_num" IS '鎵ц澶辫触-鏃ュ織鏁伴噺'; +COMMENT ON COLUMN "job_summary"."stop_reason" IS '澶辫触鍘熷洜'; +COMMENT ON COLUMN "job_summary"."cancel_num" IS '鎵ц澶辫触-鏃ュ織鏁伴噺'; +COMMENT ON COLUMN "job_summary"."cancel_reason" IS '澶辫触鍘熷洜'; +COMMENT ON TABLE "job_summary" IS 'DashBoard_Job'; + +CREATE TABLE workflow +( + id BIGSERIAL PRIMARY KEY, + workflow_name varchar(64) NOT NULL, + namespace_id varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', + group_name varchar(64) NOT NULL, + workflow_status smallint NOT NULL DEFAULT 1, + trigger_type smallint NOT NULL, + trigger_interval varchar(255) NOT NULL, + next_trigger_at BIGINT NOT NULL, + block_strategy smallint NOT NULL DEFAULT 1, + executor_timeout INT NOT NULL DEFAULT 0, + description varchar(256) NOT NULL DEFAULT '', + flow_info text DEFAULT NULL, + bucket_index INT NOT NULL DEFAULT 0, + version INT NOT NULL, + create_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + update_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted smallint NOT NULL DEFAULT 0, + ext_attrs varchar(256) NULL DEFAULT '' +); + + +CREATE INDEX idx_create_dt_workflow ON workflow (create_dt); +CREATE INDEX idx_namespace_id_group_name ON workflow (namespace_id, group_name); + +COMMENT ON TABLE workflow IS '宸ヤ綔娴�'; +COMMENT ON COLUMN workflow.id IS '涓婚敭'; +COMMENT ON COLUMN workflow.workflow_name IS '宸ヤ綔娴佸悕绉�'; +COMMENT ON COLUMN workflow.namespace_id IS '鍛藉悕绌洪棿id'; +COMMENT ON COLUMN workflow.group_name IS '缁勫悕绉�'; +COMMENT ON COLUMN workflow.workflow_status IS '宸ヤ綔娴佺姸鎬� 0銆佸叧闂��1銆佸紑鍚�'; +COMMENT ON COLUMN workflow.trigger_type IS '瑙﹀彂绫诲瀷 1.CRON 琛ㄨ揪寮� 2. 鍥哄畾鏃堕棿'; +COMMENT ON COLUMN workflow.trigger_interval IS '闂撮殧鏃堕暱'; +COMMENT ON COLUMN workflow.next_trigger_at IS '涓嬫瑙﹀彂鏃堕棿'; +COMMENT ON COLUMN workflow.block_strategy IS '闃诲绛栫暐 1銆佷涪寮� 2銆佽鐩� 3銆佸苟琛�'; +COMMENT ON COLUMN workflow.executor_timeout IS '浠诲姟鎵ц瓒呮椂鏃堕棿锛屽崟浣嶇'; +COMMENT ON COLUMN workflow.description IS '鎻忚堪'; +COMMENT ON COLUMN workflow.flow_info IS '娴佺▼淇℃伅'; +COMMENT ON COLUMN workflow.bucket_index IS 'bucket'; +COMMENT ON COLUMN workflow.version IS '鐗堟湰鍙�'; +COMMENT ON COLUMN workflow.create_dt IS '鍒涘缓鏃堕棿'; +COMMENT ON COLUMN workflow.update_dt IS '淇敼鏃堕棿'; +COMMENT ON COLUMN workflow.deleted IS '閫昏緫鍒犻櫎 1銆佸垹闄�'; +COMMENT ON COLUMN workflow.ext_attrs IS '鎵╁睍瀛楁'; + +CREATE TABLE workflow_node +( + id BIGSERIAL PRIMARY KEY, + namespace_id VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', + node_name VARCHAR(64) NOT NULL, + group_name VARCHAR(64) NOT NULL, + job_id BIGINT NOT NULL, + workflow_id BIGINT NOT NULL, + node_type SMALLINT NOT NULL DEFAULT 1, + expression_type SMALLINT NOT NULL DEFAULT 0, + fail_strategy SMALLINT NOT NULL DEFAULT 1, + workflow_node_status SMALLINT NOT NULL DEFAULT 1, + priority_level INT NOT NULL DEFAULT 1, + node_info TEXT DEFAULT NULL, + version INT NOT NULL, + create_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + update_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted SMALLINT NOT NULL DEFAULT 0, + ext_attrs VARCHAR(256) NULL DEFAULT '' +); + +CREATE INDEX idx_create_dt_workflow_node ON workflow_node (create_dt); +CREATE INDEX idx_namespace_id_group_name ON workflow_node (namespace_id, group_name); + +COMMENT ON TABLE workflow_node IS '宸ヤ綔娴佽妭鐐�'; +COMMENT ON COLUMN workflow_node.id IS '涓婚敭'; +COMMENT ON COLUMN workflow_node.namespace_id IS '鍛藉悕绌洪棿id'; +COMMENT ON COLUMN workflow_node.node_name IS '鑺傜偣鍚嶇О'; +COMMENT ON COLUMN workflow_node.group_name IS '缁勫悕绉�'; +COMMENT ON COLUMN workflow_node.job_id IS '浠诲姟淇℃伅id'; +COMMENT ON COLUMN workflow_node.workflow_id IS '宸ヤ綔娴両D'; +COMMENT ON COLUMN workflow_node.node_type IS '1銆佷换鍔¤妭鐐� 2銆佹潯浠惰妭鐐�'; +COMMENT ON COLUMN workflow_node.expression_type IS '1銆丼pEl銆�2銆丄viator 3銆丵L'; +COMMENT ON COLUMN workflow_node.fail_strategy IS '澶辫触绛栫暐 1銆佽烦杩� 2銆侀樆濉�'; +COMMENT ON COLUMN workflow_node.workflow_node_status IS '宸ヤ綔娴佽妭鐐圭姸鎬� 0銆佸叧闂��1銆佸紑鍚�'; +COMMENT ON COLUMN workflow_node.priority_level IS '浼樺厛绾�'; +COMMENT ON COLUMN workflow_node.node_info IS '鑺傜偣淇℃伅'; +COMMENT ON COLUMN workflow_node.version IS '鐗堟湰鍙�'; +COMMENT ON COLUMN workflow_node.create_dt IS '鍒涘缓鏃堕棿'; +COMMENT ON COLUMN workflow_node.update_dt IS '淇敼鏃堕棿'; +COMMENT ON COLUMN workflow_node.deleted IS '閫昏緫鍒犻櫎 1銆佸垹闄�'; +COMMENT ON COLUMN workflow_node.ext_attrs IS '鎵╁睍瀛楁'; + +CREATE TABLE workflow_task_batch +( + id BIGSERIAL PRIMARY KEY, + namespace_id VARCHAR(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', + group_name VARCHAR(64) NOT NULL, + workflow_id BIGINT NOT NULL, + task_batch_status SMALLINT NOT NULL DEFAULT 0, + operation_reason SMALLINT NOT NULL DEFAULT 0, + flow_info TEXT DEFAULT NULL, + execution_at BIGINT NOT NULL DEFAULT 0, + create_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + update_dt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted SMALLINT NOT NULL DEFAULT 0, + ext_attrs VARCHAR(256) NULL DEFAULT '' +); + +CREATE INDEX idx_job_id_task_batch_status_workflow_task_batch ON workflow_task_batch (workflow_id, task_batch_status); +CREATE INDEX idx_create_dt_workflow_task_batch ON workflow_task_batch (create_dt); +CREATE INDEX idx_namespace_id_group_name_workflow_task_batch ON workflow_task_batch (namespace_id, group_name); + +COMMENT ON TABLE workflow_task_batch IS '宸ヤ綔娴佹壒娆�'; +COMMENT ON COLUMN workflow_task_batch.id IS '涓婚敭'; +COMMENT ON COLUMN workflow_task_batch.namespace_id IS '鍛藉悕绌洪棿id'; +COMMENT ON COLUMN workflow_task_batch.group_name IS '缁勫悕绉�'; +COMMENT ON COLUMN workflow_task_batch.workflow_id IS '宸ヤ綔娴佷换鍔d'; +COMMENT ON COLUMN workflow_task_batch.task_batch_status IS '浠诲姟鎵规鐘舵�� 0銆佸け璐� 1銆佹垚鍔�'; +COMMENT ON COLUMN workflow_task_batch.operation_reason IS '鎿嶄綔鍘熷洜'; +COMMENT ON COLUMN workflow_task_batch.flow_info IS '娴佺▼淇℃伅'; +COMMENT ON COLUMN workflow_task_batch.execution_at IS '浠诲姟鎵ц鏃堕棿'; +COMMENT ON COLUMN workflow_task_batch.create_dt IS '鍒涘缓鏃堕棿'; +COMMENT ON COLUMN workflow_task_batch.update_dt IS '淇敼鏃堕棿'; +COMMENT ON COLUMN workflow_task_batch.deleted IS '閫昏緫鍒犻櫎 1銆佸垹闄�'; +COMMENT ON COLUMN workflow_task_batch.ext_attrs IS '鎵╁睍瀛楁'; + + diff --git a/script/sql/ry_vue_5.X.sql b/script/sql/ry_vue_5.X.sql index 2527791..b392d24 100644 --- a/script/sql/ry_vue_5.X.sql +++ b/script/sql/ry_vue_5.X.sql @@ -293,7 +293,9 @@ -- oss鑿滃崟 insert into sys_menu values('118', '鏂囦欢绠$悊', '1', '10', 'oss', 'system/oss/index', '', 1, 0, 'C', '0', '0', 'system:oss:list', 'upload', 103, 1, sysdate(), null, null, '鏂囦欢绠$悊鑿滃崟'); -- powerjob server鎺у埗鍙� -insert into sys_menu values('120', '浠诲姟璋冨害涓績', '2', '5', 'powerjob', 'monitor/powerjob/index', '', 1, 0, 'C', '0', '0', 'monitor:powerjob:list', 'job', 103, 1, sysdate(), null, null, 'PowerJob鎺у埗鍙拌彍鍗�'); +insert into sys_menu values('120', '浠诲姟璋冨害涓績', '2', '5', 'powerjob', 'monitor/powerjob/index', '', 1, 0, 'C', '0', '0', 'monitor:powerjob:list', 'job', 103, 1, sysdate(), null, null, 'PowerJob鎺у埗鍙拌彍鍗�'); +-- retry server鎺у埗鍙� +insert into sys_menu values('130', 'EasyRetry鏈嶅姟鍣�', '2', '6', 'easyretry', 'monitor/easyretry/index', '', 1, 0, 'C', '0', '0', 'monitor:easyretry:list', 'job', 103, 1, sysdate(), null, null, 'EasyRetry鎺у埗鍙拌彍鍗�'); -- 涓夌骇鑿滃崟 insert into sys_menu values('500', '鎿嶄綔鏃ュ織', '108', '1', 'operlog', 'monitor/operlog/index', '', 1, 0, 'C', '0', '0', 'monitor:operlog:list', 'form', 103, 1, sysdate(), null, null, '鎿嶄綔鏃ュ織鑿滃崟'); -- Gitblit v1.9.3