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"
}