From fabc7f444a737449094f9fa5fa257f66df8ed7c2 Mon Sep 17 00:00:00 2001 From: opensnail <598092184@qq.com> Date: Wed, 17 Jul 2024 10:34:52 +0800 Subject: [PATCH] =?UTF-8?q?fix(sj=5F1.1.1):=201.=20=E4=BF=AE=E5=A4=8DMailP?= =?UTF-8?q?roperties=E7=9A=84bean=E5=86=B2=E7=AA=81=E9=97=AE=E9=A2=98=202.?= =?UTF-8?q?=20=E5=AE=A2=E6=88=B7=E7=AB=AF=E9=87=87=E7=94=A810=E7=A7=92?= =?UTF-8?q?=E4=B8=80=E6=AC=A1=E4=B8=BB=E5=8A=A8=E4=B8=8A=E6=8A=A5=203.=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8DargStr=E7=A9=BA=E5=AD=97=E7=AC=A6=E5=BA=8F?= =?UTF-8?q?=E5=88=97=E5=8C=96=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../common/config/SnailJobProperties.java | 4 +- .../client/common/handler/ClientRegister.java | 55 +++++++++++++++++++ .../rpc/client/NettyHttpClientHandler.java | 12 +--- .../rpc/client/NettyHttpConnectClient.java | 3 +- .../core/executor/AbstractJobExecutor.java | 30 ++++++++-- ...rties.java => SnailJobMailProperties.java} | 2 +- .../core/alarm/strategy/EmailAlarm.java | 32 +++++------ .../common/config/SystemProperties.java | 4 +- .../common/register/AbstractRegister.java | 4 +- .../common/register/ClientRegister.java | 2 +- .../rpc/server/RequestHandlerActor.java | 4 +- .../actor/scan/AbstractScanGroup.java | 4 ++ .../spring-configuration-metadata.json | 2 +- 14 files changed, 118 insertions(+), 42 deletions(-) create mode 100644 snail-job-client/snail-job-client-common/src/main/java/com/aizuda/snailjob/client/common/handler/ClientRegister.java rename snail-job-common/snail-job-common-core/src/main/java/com/aizuda/snailjob/common/core/alarm/email/{MailProperties.java => SnailJobMailProperties.java} (95%) diff --git a/pom.xml b/pom.xml index 8e11bbcb4..078e211e2 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ 17 17 17 - 1.1.0 + 1.1.1 4.1.94.Final 5.8.25 3.5.7 diff --git a/snail-job-client/snail-job-client-common/src/main/java/com/aizuda/snailjob/client/common/config/SnailJobProperties.java b/snail-job-client/snail-job-client-common/src/main/java/com/aizuda/snailjob/client/common/config/SnailJobProperties.java index 508447014..58ace1fe4 100644 --- a/snail-job-client/snail-job-client-common/src/main/java/com/aizuda/snailjob/client/common/config/SnailJobProperties.java +++ b/snail-job-client/snail-job-client-common/src/main/java/com/aizuda/snailjob/client/common/config/SnailJobProperties.java @@ -1,6 +1,6 @@ package com.aizuda.snailjob.client.common.config; -import com.aizuda.snailjob.common.core.alarm.email.MailProperties; +import com.aizuda.snailjob.common.core.alarm.email.SnailJobMailProperties; import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -75,7 +75,7 @@ public class SnailJobProperties { * 邮件配置 */ @NestedConfigurationProperty - private MailProperties mail = new MailProperties(); + private SnailJobMailProperties mail = new SnailJobMailProperties(); @Data public static class ServerConfig { diff --git a/snail-job-client/snail-job-client-common/src/main/java/com/aizuda/snailjob/client/common/handler/ClientRegister.java b/snail-job-client/snail-job-client-common/src/main/java/com/aizuda/snailjob/client/common/handler/ClientRegister.java new file mode 100644 index 000000000..b5056c304 --- /dev/null +++ b/snail-job-client/snail-job-client-common/src/main/java/com/aizuda/snailjob/client/common/handler/ClientRegister.java @@ -0,0 +1,55 @@ +package com.aizuda.snailjob.client.common.handler; + +import com.aizuda.snailjob.client.common.Lifecycle; +import com.aizuda.snailjob.client.common.NettyClient; +import com.aizuda.snailjob.client.common.rpc.client.RequestBuilder; +import com.aizuda.snailjob.common.core.constant.SystemConstants.BEAT; +import com.aizuda.snailjob.common.core.enums.StatusEnum; +import com.aizuda.snailjob.common.core.model.NettyResult; +import com.aizuda.snailjob.common.log.SnailJobLog; +import org.springframework.stereotype.Component; + +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; + +/** + * @author: oepnsnail + * @date : 2024-07-17 + * @since : 1.1.1 + */ +@Component +public class ClientRegister implements Lifecycle { + private static final ScheduledExecutorService SCHEDULE_EXECUTOR = Executors.newSingleThreadScheduledExecutor( + r -> new Thread(r, "sj-client-register")); + public static final NettyClient CLIENT; + public static final int REGISTER_TIME = 10; + + static { + CLIENT = RequestBuilder.newBuilder() + .client(NettyClient.class) + .callback( + nettyResult -> { + if (StatusEnum.NO.getStatus().equals(nettyResult.getStatus())) { + SnailJobLog.LOCAL.error("heartbeat check requestId:[{}] message:[{}]", nettyResult.getReqId(), nettyResult.getMessage()); + } + }) + .build(); + } + + @Override + public void start() { + SCHEDULE_EXECUTOR.scheduleAtFixedRate(() -> { + try { + CLIENT.beat(BEAT.PING); + } catch (Exception e) { + SnailJobLog.LOCAL.error("发送心跳失败", e); + } + }, 0, REGISTER_TIME, TimeUnit.SECONDS); + } + + @Override + public void close() { + + } +} diff --git a/snail-job-client/snail-job-client-common/src/main/java/com/aizuda/snailjob/client/common/rpc/client/NettyHttpClientHandler.java b/snail-job-client/snail-job-client-common/src/main/java/com/aizuda/snailjob/client/common/rpc/client/NettyHttpClientHandler.java index 51e926550..08bb3316e 100644 --- a/snail-job-client/snail-job-client-common/src/main/java/com/aizuda/snailjob/client/common/rpc/client/NettyHttpClientHandler.java +++ b/snail-job-client/snail-job-client-common/src/main/java/com/aizuda/snailjob/client/common/rpc/client/NettyHttpClientHandler.java @@ -2,8 +2,10 @@ package com.aizuda.snailjob.client.common.rpc.client; import com.aizuda.snailjob.client.common.NettyClient; import com.aizuda.snailjob.client.common.event.SnailChannelReconnectEvent; +import com.aizuda.snailjob.client.common.handler.ClientRegister; import com.aizuda.snailjob.common.core.constant.SystemConstants.BEAT; import com.aizuda.snailjob.common.core.context.SpringContext; +import com.aizuda.snailjob.common.core.enums.StatusEnum; import com.aizuda.snailjob.common.core.model.NettyResult; import com.aizuda.snailjob.common.core.rpc.RpcContext; import com.aizuda.snailjob.common.core.util.JsonUtil; @@ -28,17 +30,9 @@ import java.util.concurrent.TimeUnit; @Slf4j public class NettyHttpClientHandler extends SimpleChannelInboundHandler { - private NettyClient client; private NettyHttpConnectClient nettyHttpConnectClient; public NettyHttpClientHandler(NettyHttpConnectClient nettyHttpConnectClient) { - - client = RequestBuilder.newBuilder() - .client(NettyClient.class) - .callback( - nettyResult -> SnailJobLog.LOCAL.debug("heartbeat check requestId:[{}]", nettyResult.getReqId())) - .build(); - this.nettyHttpConnectClient = nettyHttpConnectClient; } @@ -112,7 +106,7 @@ public class NettyHttpClientHandler extends SimpleChannelInboundHandler { - private final MailProperties mailProperties; + private final SnailJobMailProperties snailJobMailProperties; private MailAccount mailAccount; @Override @@ -63,28 +63,28 @@ public class EmailAlarm extends AbstractAlarm { @Override public void afterPropertiesSet() throws Exception { super.afterPropertiesSet(); - Boolean enabled = mailProperties.getEnabled(); + Boolean enabled = snailJobMailProperties.getEnabled(); if (Objects.isNull(enabled) || Boolean.FALSE.equals(enabled)) { return; } - mailAccount = initMailAccount(mailProperties); + mailAccount = initMailAccount(snailJobMailProperties); MailUtils.setMailAccount(mailAccount); } - private MailAccount initMailAccount(MailProperties mailProperties) { + private MailAccount initMailAccount(SnailJobMailProperties snailJobMailProperties) { MailAccount account = new MailAccount(); - account.setHost(mailProperties.getHost()); - account.setPort(mailProperties.getPort()); - account.setAuth(Optional.ofNullable(mailProperties.getAuth()).orElse(Boolean.FALSE)); - account.setFrom(mailProperties.getFrom()); - account.setUser(mailProperties.getUser()); - account.setPass(mailProperties.getPass()); - account.setSocketFactoryPort(Optional.ofNullable(mailProperties.getPort()).orElse(465)); - account.setStarttlsEnable(Optional.ofNullable(mailProperties.getStarttlsEnable()).orElse(Boolean.FALSE)); - account.setSslEnable(Optional.ofNullable(mailProperties.getSslEnable()).orElse(Boolean.FALSE)); - account.setTimeout(Optional.ofNullable(mailProperties.getTimeout()).orElse(0L)); - account.setConnectionTimeout(Optional.ofNullable(mailProperties.getConnectionTimeout()).orElse(0L)); + account.setHost(snailJobMailProperties.getHost()); + account.setPort(snailJobMailProperties.getPort()); + account.setAuth(Optional.ofNullable(snailJobMailProperties.getAuth()).orElse(Boolean.FALSE)); + account.setFrom(snailJobMailProperties.getFrom()); + account.setUser(snailJobMailProperties.getUser()); + account.setPass(snailJobMailProperties.getPass()); + account.setSocketFactoryPort(Optional.ofNullable(snailJobMailProperties.getPort()).orElse(465)); + account.setStarttlsEnable(Optional.ofNullable(snailJobMailProperties.getStarttlsEnable()).orElse(Boolean.FALSE)); + account.setSslEnable(Optional.ofNullable(snailJobMailProperties.getSslEnable()).orElse(Boolean.FALSE)); + account.setTimeout(Optional.ofNullable(snailJobMailProperties.getTimeout()).orElse(0L)); + account.setConnectionTimeout(Optional.ofNullable(snailJobMailProperties.getConnectionTimeout()).orElse(0L)); return account; } } diff --git a/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/config/SystemProperties.java b/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/config/SystemProperties.java index 71fb02576..f3613ca44 100644 --- a/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/config/SystemProperties.java +++ b/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/config/SystemProperties.java @@ -1,6 +1,6 @@ package com.aizuda.snailjob.server.common.config; -import com.aizuda.snailjob.common.core.alarm.email.MailProperties; +import com.aizuda.snailjob.common.core.alarm.email.SnailJobMailProperties; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.NestedConfigurationProperty; @@ -109,6 +109,6 @@ public class SystemProperties { * 邮件配置 */ @NestedConfigurationProperty - private MailProperties mail = new MailProperties(); + private SnailJobMailProperties mail = new SnailJobMailProperties(); } diff --git a/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/register/AbstractRegister.java b/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/register/AbstractRegister.java index 8c9f899fb..18f1d5387 100644 --- a/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/register/AbstractRegister.java +++ b/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/register/AbstractRegister.java @@ -93,7 +93,7 @@ public abstract class AbstractRegister implements Register, Lifecycle { try { // 批量更新 - if (updateDBs.size() != serverNodeMapper.updateBatchExpireAt(updateDBs)) { + if (CollUtil.isNotEmpty(updateDBs) && updateDBs.size() != serverNodeMapper.updateBatchExpireAt(updateDBs)) { SnailJobLog.LOCAL.warn("续租失败 [{}]", JsonUtil.toJsonString(updateDBs)); } } catch (Exception e) { @@ -101,7 +101,7 @@ public abstract class AbstractRegister implements Register, Lifecycle { } try { - if (insertDBs.size() != serverNodeMapper.insertBatch(insertDBs)) { + if (CollUtil.isNotEmpty(insertDBs) && insertDBs.size() != serverNodeMapper.insertBatch(insertDBs)) { SnailJobLog.LOCAL.warn("注册节点失败 [{}]", JsonUtil.toJsonString(insertDBs)); } } catch (DuplicateKeyException ignored) { diff --git a/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/register/ClientRegister.java b/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/register/ClientRegister.java index 29eee112d..13d85cdb8 100644 --- a/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/register/ClientRegister.java +++ b/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/register/ClientRegister.java @@ -102,7 +102,7 @@ public class ClientRegister extends AbstractRegister implements Runnable { } finally { // 防止刷的过快 try { - TimeUnit.MILLISECONDS.sleep(5000); + TimeUnit.MILLISECONDS.sleep(2000); } catch (InterruptedException ignored) { Thread.currentThread().interrupt(); } diff --git a/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/rpc/server/RequestHandlerActor.java b/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/rpc/server/RequestHandlerActor.java index 29b55518f..61fcd5687 100644 --- a/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/rpc/server/RequestHandlerActor.java +++ b/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/rpc/server/RequestHandlerActor.java @@ -88,10 +88,10 @@ public class RequestHandlerActor extends AbstractActor { String token = headers.get(HeadersEnum.TOKEN.getKey()); if (StrUtil.isBlank(token) || !CacheToken.get(groupName, namespace).equals(token)) { - throw new SnailJobServerException("Token authentication failed. [{}]", token); + throw new SnailJobServerException("Token authentication failed. [namespace:{} groupName:{} token:{}]", namespace, groupName, token); } - // 注册版本 + // 注册版本 此后后续版本将迁移至BeatHttpRequestHandler 只处理beat的心态注册 RegisterContext registerContext = new RegisterContext(); registerContext.setGroupName(groupName); registerContext.setHostPort(hostPort); diff --git a/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/support/dispatch/actor/scan/AbstractScanGroup.java b/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/support/dispatch/actor/scan/AbstractScanGroup.java index 86b5e7f23..14e37eb2d 100644 --- a/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/support/dispatch/actor/scan/AbstractScanGroup.java +++ b/snail-job-server/snail-job-server-retry-task/src/main/java/com/aizuda/snailjob/server/retry/task/support/dispatch/actor/scan/AbstractScanGroup.java @@ -132,6 +132,10 @@ public abstract class AbstractScanGroup extends AbstractActor { waitUpdateRetryTasks.add(retryTask); } + if (CollUtil.isEmpty(waitUpdateRetryTasks)) { + return; + } + // 批量更新 retryTaskMapper.updateBatchNextTriggerAtById(scanTask.getGroupPartition(), waitUpdateRetryTasks); diff --git a/snail-job-server/snail-job-server-starter/src/main/resources/spring-configuration-metadata.json b/snail-job-server/snail-job-server-starter/src/main/resources/spring-configuration-metadata.json index 3488d0730..bdc376d2d 100644 --- a/snail-job-server/snail-job-server-starter/src/main/resources/spring-configuration-metadata.json +++ b/snail-job-server/snail-job-server-starter/src/main/resources/spring-configuration-metadata.json @@ -16,7 +16,7 @@ }, { "name": "snail-job.mail", - "type": "com.aizuda.snailjob.common.core.alarm.email.MailProperties", + "type": "com.aizuda.snailjob.common.core.alarm.email.SnailJobMailProperties", "description": "邮箱配置", "sourceType": "com.aizuda.snailjob.server.common.config.SystemProperties" }