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