diff --git a/pom.xml b/pom.xml
index 8dcf9d4f0..9d0f1eccd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,16 +21,19 @@
1.8
1.8
1.8
- 1.2.0-jdk8-beta2.1
- 4.1.94.Final
- 5.8.25
- 3.5.7
+ 1.2.0-jdk8-beta3
+ true
+
+ 4.1.114.Final
+ 5.8.32
+ 3.5.9
2.0.0
+ 3.6.1.Final
1.3.6
2.6.2
0.45.0
1.2.17
- 1.2
+ 1.3.4
2.0.2
2.1.3
2.0.3
@@ -148,6 +151,12 @@
mybatis-plus-boot-starter
${mybatis-plus.version}
+
+
+ com.baomidou
+ mybatis-plus-jsqlparser
+ ${mybatis-plus.version}
+
jakarta.validation
jakarta.validation-api
@@ -181,7 +190,7 @@
org.jboss.logging
jboss-logging
- 3.4.3.Final
+ ${jboss-logging.version}
true
diff --git a/snail-job-client/snail-job-client-common/src/main/java/com/aizuda/snailjob/client/common/appender/SnailLog4j2Appender.java b/snail-job-client/snail-job-client-common/src/main/java/com/aizuda/snailjob/client/common/appender/SnailLog4j2Appender.java
index dae8a5045..35be919db 100644
--- a/snail-job-client/snail-job-client-common/src/main/java/com/aizuda/snailjob/client/common/appender/SnailLog4j2Appender.java
+++ b/snail-job-client/snail-job-client-common/src/main/java/com/aizuda/snailjob/client/common/appender/SnailLog4j2Appender.java
@@ -19,7 +19,6 @@ import com.aizuda.snailjob.client.common.log.support.SnailJobLogManager;
import com.aizuda.snailjob.client.common.rpc.client.NettyChannel;
import com.aizuda.snailjob.common.log.constant.LogFieldConstants;
import com.aizuda.snailjob.common.log.dto.LogContentDTO;
-import org.apache.log4j.MDC;
import org.apache.logging.log4j.core.Filter;
import org.apache.logging.log4j.core.Layout;
import org.apache.logging.log4j.core.LogEvent;
@@ -30,6 +29,7 @@ import org.apache.logging.log4j.core.config.plugins.PluginElement;
import org.apache.logging.log4j.core.config.plugins.PluginFactory;
import org.apache.logging.log4j.core.util.Booleans;
import org.apache.logging.log4j.core.util.Throwables;
+import org.slf4j.MDC;
import java.io.Serializable;
import java.util.Objects;
diff --git a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/executor/AbstractHttpExecutor.java b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/executor/AbstractHttpExecutor.java
index ca5309f6d..fd496d71c 100644
--- a/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/executor/AbstractHttpExecutor.java
+++ b/snail-job-client/snail-job-client-job-core/src/main/java/com/aizuda/snailjob/client/job/core/executor/AbstractHttpExecutor.java
@@ -11,9 +11,10 @@ import com.aizuda.snailjob.common.log.SnailJobLog;
import lombok.Data;
import org.springframework.util.StringUtils;
-import java.util.Iterator;
+import java.util.Base64;
import java.util.Map;
import java.util.Objects;
+import java.util.regex.Pattern;
public abstract class AbstractHttpExecutor {
@@ -27,6 +28,7 @@ public abstract class AbstractHttpExecutor {
private static final String HTTP = "http";
private static final String HTTP_PREFIX = "http://";
private static final int HTTP_SUCCESS_CODE = 200;
+ private static final Pattern pattern = Pattern.compile("[\\u4e00-\\u9fa5]");
public ExecuteResult process(HttpParams httpParams) {
if (httpParams == null) {
@@ -123,6 +125,11 @@ public abstract class AbstractHttpExecutor {
if ( Objects.nonNull(httpParams.getWfContext())) {
httpParams.getWfContext().forEach((key, value) -> {
String headerValue = (value instanceof String) ? (String) value : JsonUtil.toJsonString(value);
+ // 正则表达式匹配中文字符
+ if (pattern.matcher(headerValue).find()) {
+ // 如果包含中文字符,则进行Base64编码
+ headerValue = Base64.getEncoder().encodeToString(headerValue.getBytes());
+ }
request.header(key, headerValue);
});
}
diff --git a/snail-job-client/snail-job-client-retry-core/pom.xml b/snail-job-client/snail-job-client-retry-core/pom.xml
index 4278050de..66ac9f5de 100644
--- a/snail-job-client/snail-job-client-retry-core/pom.xml
+++ b/snail-job-client/snail-job-client-retry-core/pom.xml
@@ -58,7 +58,7 @@
com.alibaba
QLExpress
- 3.3.1
+ 3.3.4
provided
true
diff --git a/snail-job-common/snail-job-common-core/pom.xml b/snail-job-common/snail-job-common-core/pom.xml
index 6345d60ec..6973bffe7 100644
--- a/snail-job-common/snail-job-common-core/pom.xml
+++ b/snail-job-common/snail-job-common-core/pom.xml
@@ -61,7 +61,7 @@
com.alibaba
QLExpress
- 3.3.1
+ 3.3.4
provided
true
diff --git a/snail-job-common/snail-job-common-log/src/main/java/com/aizuda/snailjob/common/log/dialect/log4j2/Log4j2Log.java b/snail-job-common/snail-job-common-log/src/main/java/com/aizuda/snailjob/common/log/dialect/log4j2/Log4j2Log.java
index 629b06d48..44e256bc3 100644
--- a/snail-job-common/snail-job-common-log/src/main/java/com/aizuda/snailjob/common/log/dialect/log4j2/Log4j2Log.java
+++ b/snail-job-common/snail-job-common-log/src/main/java/com/aizuda/snailjob/common/log/dialect/log4j2/Log4j2Log.java
@@ -4,11 +4,11 @@ import cn.hutool.core.util.StrUtil;
import com.aizuda.snailjob.common.log.constant.LogFieldConstants;
import com.aizuda.snailjob.common.log.dialect.AbstractLog;
import com.aizuda.snailjob.common.log.factory.LogFactory;
-import org.apache.log4j.MDC;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.spi.AbstractLogger;
+import org.slf4j.MDC;
//import java.io.Serial;
diff --git a/snail-job-datasource/snail-job-datasource-template/pom.xml b/snail-job-datasource/snail-job-datasource-template/pom.xml
index ba157fab4..7bf49f9ac 100644
--- a/snail-job-datasource/snail-job-datasource-template/pom.xml
+++ b/snail-job-datasource/snail-job-datasource-template/pom.xml
@@ -32,6 +32,10 @@
com.baomidou
mybatis-plus-spring-boot3-starter
+
+ com.baomidou
+ mybatis-plus-jsqlparser
+
org.springframework.boot
spring-boot-starter-jdbc
diff --git a/snail-job-datasource/snail-job-postgres-datasource/pom.xml b/snail-job-datasource/snail-job-postgres-datasource/pom.xml
index e0533db50..074c420bb 100644
--- a/snail-job-datasource/snail-job-postgres-datasource/pom.xml
+++ b/snail-job-datasource/snail-job-postgres-datasource/pom.xml
@@ -16,7 +16,7 @@
17
- 42.2.24
+ 42.7.2
diff --git a/snail-job-server/snail-job-server-job-task/pom.xml b/snail-job-server/snail-job-server-job-task/pom.xml
index 6ad6c137a..17740ffa7 100644
--- a/snail-job-server/snail-job-server-job-task/pom.xml
+++ b/snail-job-server/snail-job-server-job-task/pom.xml
@@ -76,7 +76,7 @@
com.alibaba
QLExpress
- 3.3.1
+ 3.3.4
commons-beanutils
diff --git a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/schedule/JobClearLogSchedule.java b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/schedule/JobClearLogSchedule.java
index 0bfe28e76..14399ecd2 100644
--- a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/schedule/JobClearLogSchedule.java
+++ b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/schedule/JobClearLogSchedule.java
@@ -20,8 +20,6 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists;
import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.TransactionCallbackWithoutResult;
@@ -43,8 +41,6 @@ import java.util.List;
@RequiredArgsConstructor
public class JobClearLogSchedule extends AbstractSchedule implements Lifecycle {
- // last clean log time
- private static Long lastCleanLogTime = 0L;
private final SystemProperties systemProperties;
private final JobTaskBatchMapper jobTaskBatchMapper;
private final JobTaskMapper jobTaskMapper;
@@ -58,7 +54,7 @@ public class JobClearLogSchedule extends AbstractSchedule implements Lifecycle {
@Override
public String lockAtMost() {
- return "PT1H";
+ return "PT4H";
}
@Override
@@ -69,8 +65,9 @@ public class JobClearLogSchedule extends AbstractSchedule implements Lifecycle {
@Override
protected void doExecute() {
try {
- // 清楚日志默认保存天数大于零、最少保留最近一天的日志数据
- if (systemProperties.getLogStorage() <= 0 || System.currentTimeMillis() - lastCleanLogTime < 24 * 60 * 60 * 1000) {
+ // 清除日志默认保存天数大于零、最少保留最近一天的日志数据
+ if (systemProperties.getLogStorage() <= 1) {
+ SnailJobLog.LOCAL.error("job clear log storage error", systemProperties.getLogStorage());
return;
}
// clean job log
@@ -82,9 +79,6 @@ public class JobClearLogSchedule extends AbstractSchedule implements Lifecycle {
SnailJobLog.LOCAL.debug("Job clear success total:[{}]", total);
} catch (Exception e) {
SnailJobLog.LOCAL.error("job clear log error", e);
- } finally {
- // update clean time
- lastCleanLogTime = System.currentTimeMillis();
}
}
@@ -146,7 +140,7 @@ public class JobClearLogSchedule extends AbstractSchedule implements Lifecycle {
@Override
public void start() {
- taskScheduler.scheduleAtFixedRate(this::execute, Duration.parse("PT1H"));
+ taskScheduler.scheduleAtFixedRate(this::execute, Duration.parse("PT4H"));
}
@Override
diff --git a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/schedule/JobLogMergeSchedule.java b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/schedule/JobLogMergeSchedule.java
index 4b034cd92..32bfde298 100644
--- a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/schedule/JobLogMergeSchedule.java
+++ b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/schedule/JobLogMergeSchedule.java
@@ -53,8 +53,6 @@ public class JobLogMergeSchedule extends AbstractSchedule implements Lifecycle {
private final JobLogMessageMapper jobLogMessageMapper;
private final TransactionTemplate transactionTemplate;
- // last merge log time
- private static Long lastMergeLogTime = 0L;
@Override
public String lockName() {
@@ -74,10 +72,6 @@ public class JobLogMergeSchedule extends AbstractSchedule implements Lifecycle {
@Override
protected void doExecute() {
try {
- // 合并日志数据最少保留最近一天的日志数据
- if (System.currentTimeMillis() - lastMergeLogTime < 24 * 60 * 60 * 1000) {
- return;
- }
// merge job log
long total;
LocalDateTime endTime = LocalDateTime.now().minusDays(systemProperties.getMergeLogDays());
@@ -87,9 +81,6 @@ public class JobLogMergeSchedule extends AbstractSchedule implements Lifecycle {
SnailJobLog.LOCAL.debug("job merge success total:[{}]", total);
} catch (Exception e) {
SnailJobLog.LOCAL.error("job merge log error", e);
- } finally {
- // update merge time
- lastMergeLogTime = System.currentTimeMillis();
}
}
@@ -192,7 +183,7 @@ public class JobLogMergeSchedule extends AbstractSchedule implements Lifecycle {
@Override
public void start() {
- taskScheduler.scheduleAtFixedRate(this::execute, Duration.parse("PT1H"));
+ taskScheduler.scheduleAtFixedRate(this::execute, Duration.parse("PT1M"));
}
@Override
diff --git a/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/support/schedule/ClearLogSchedule.java b/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/support/schedule/ClearLogSchedule.java
index f1b769929..e515de107 100644
--- a/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/support/schedule/ClearLogSchedule.java
+++ b/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/support/schedule/ClearLogSchedule.java
@@ -38,8 +38,6 @@ import java.util.List;
@Slf4j
public class ClearLogSchedule extends AbstractSchedule implements Lifecycle {
- // last clean log time
- private static Long lastCleanLogTime = 0L;
@Autowired
private RetryTaskLogMapper retryTaskLogMapper;
@Autowired
@@ -56,7 +54,7 @@ public class ClearLogSchedule extends AbstractSchedule implements Lifecycle {
@Override
public String lockAtMost() {
- return "PT1H";
+ return "PT4H";
}
@Override
@@ -67,7 +65,9 @@ public class ClearLogSchedule extends AbstractSchedule implements Lifecycle {
@Override
protected void doExecute() {
try {
- if (systemProperties.getLogStorage() <= 0 || System.currentTimeMillis() - lastCleanLogTime < 24 * 60 * 60 * 1000) {
+ // 清除日志默认保存天数大于零、最少保留最近一天的日志数据
+ if (systemProperties.getLogStorage() <= 1) {
+ SnailJobLog.LOCAL.error("retry clear log storage error", systemProperties.getLogStorage());
return;
}
// clean retry log
@@ -78,9 +78,6 @@ public class ClearLogSchedule extends AbstractSchedule implements Lifecycle {
SnailJobLog.LOCAL.debug("Retry clear success total:[{}]", total);
} catch (Exception e) {
SnailJobLog.LOCAL.error("clear log error", e);
- } finally {
- // update clean time
- lastCleanLogTime = System.currentTimeMillis();
}
}
@@ -137,7 +134,7 @@ public class ClearLogSchedule extends AbstractSchedule implements Lifecycle {
@Override
public void start() {
- taskScheduler.scheduleAtFixedRate(this::execute, Duration.parse("PT1H"));
+ taskScheduler.scheduleAtFixedRate(this::execute, Duration.parse("PT4H"));
}
@Override
diff --git a/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/support/schedule/RetryLogMergeSchedule.java b/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/support/schedule/RetryLogMergeSchedule.java
index 1e50b1bd6..2cca075f5 100644
--- a/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/support/schedule/RetryLogMergeSchedule.java
+++ b/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/support/schedule/RetryLogMergeSchedule.java
@@ -49,8 +49,6 @@ import static java.util.stream.Collectors.toList;
@RequiredArgsConstructor
public class RetryLogMergeSchedule extends AbstractSchedule implements Lifecycle {
- // last merge log time
- private static Long lastMergeLogTime = 0L;
private final SystemProperties systemProperties;
private final RetryTaskLogMapper retryTaskLogMapper;
private final RetryTaskLogMessageMapper retryTaskLogMessageMapper;
@@ -74,10 +72,6 @@ public class RetryLogMergeSchedule extends AbstractSchedule implements Lifecycle
@Override
protected void doExecute() {
try {
- // 合并日志数据最少保留最近一天的日志数据
- if (System.currentTimeMillis() - lastMergeLogTime < 24 * 60 * 60 * 1000) {
- return;
- }
// merge job log
long total;
LocalDateTime endTime = LocalDateTime.now().minusDays(systemProperties.getMergeLogDays());
@@ -87,9 +81,6 @@ public class RetryLogMergeSchedule extends AbstractSchedule implements Lifecycle
SnailJobLog.LOCAL.debug("job merge success total:[{}]", total);
} catch (Exception e) {
SnailJobLog.LOCAL.error("job merge log error", e);
- } finally {
- // update merge time
- lastMergeLogTime = System.currentTimeMillis();
}
}
diff --git a/snail-job-server/snail-job-server-starter/Dockerfile b/snail-job-server/snail-job-server-starter/Dockerfile
index 98c342ac3..8829c564d 100644
--- a/snail-job-server/snail-job-server-starter/Dockerfile
+++ b/snail-job-server/snail-job-server-starter/Dockerfile
@@ -1,17 +1,24 @@
-FROM --platform=$BUILDPLATFORM amazoncorretto:17 as builder
-WORKDIR /
+# 贝尔实验室 Spring 官方推荐镜像, 能解决arm芯片国产操作系统运行问题
+FROM bellsoft/liberica-openjdk-debian:17.0.11-cds
-ADD ./target/snail-job-server-exec.jar snail-job-server.jar
+LABEL maintainer="opensnail"
+LABEL app-name="snail-job-server"
+LABEL description="SnailJob is a high performance distributed task scheduler and retry management center"
-FROM --platform=$BUILDPLATFORM amazoncorretto:17
-MAINTAINER opensnail
-LABEL server-name=snail-job-server
+ENV TZ=Asia/Shanghai LANG=C.UTF-8 LC_ALL=C.UTF-8
+ENV JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -XX:+HeapDumpOnOutOfMemoryError -XX:+UseZGC"
+ENV PARAMS=""
-#对外暴漏的端口号
+WORKDIR /snailjob/server
+ADD ./target/snail-job-server-exec.jar app.jar
+
+# 对外暴漏的端口号
EXPOSE 8080
EXPOSE 1788
-WORKDIR /
-COPY --from=builder /snail-job-server.jar .
+# 数据卷, 用于映射日志目录
+VOLUME /snailjob/server/data/log
-ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /snail-job-server.jar $PARAMS"]
+# https://docs.docker.com/reference/build-checks/json-args-recommended/
+SHELL ["/bin/bash", "-c"]
+ENTRYPOINT java $JAVA_OPTS -jar app.jar $PARAMS