From f0559fefd5051b061b412ba6bbd5b28d8aeb28dd Mon Sep 17 00:00:00 2001 From: opensnail <598092184@qq.com> Date: Wed, 25 Dec 2024 23:38:36 +0800 Subject: [PATCH] =?UTF-8?q?feat:(1.3.0-beta1):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 41 +-- .../persistence/po/NotifyConfig.java | 10 +- .../starter/schedule/RefreshNodeSchedule.java | 256 ------------------ .../model/request/NotifyConfigRequestVO.java | 7 - .../service/impl/NotifyConfigServiceImpl.java | 1 - 5 files changed, 26 insertions(+), 289 deletions(-) delete mode 100644 snail-job-server/snail-job-server-starter/src/main/java/com/aizuda/snailjob/server/starter/schedule/RefreshNodeSchedule.java diff --git a/pom.xml b/pom.xml index 70e48d81f..1ca0d4d73 100644 --- a/pom.xml +++ b/pom.xml @@ -287,26 +287,26 @@ release - - org.apache.maven.plugins - maven-gpg-plugin - 1.6 - - - verify - - sign - - - - - --pinentry-mode - loopback - - - - - + + + + + + + + + + + + + + + + + + + + org.apache.maven.plugins @@ -334,6 +334,7 @@ none + ${java.home}/bin/javadoc diff --git a/snail-job-datasource/snail-job-datasource-template/src/main/java/com/aizuda/snailjob/template/datasource/persistence/po/NotifyConfig.java b/snail-job-datasource/snail-job-datasource-template/src/main/java/com/aizuda/snailjob/template/datasource/persistence/po/NotifyConfig.java index 8cc4e3e86..62ecb08b7 100644 --- a/snail-job-datasource/snail-job-datasource-template/src/main/java/com/aizuda/snailjob/template/datasource/persistence/po/NotifyConfig.java +++ b/snail-job-datasource/snail-job-datasource-template/src/main/java/com/aizuda/snailjob/template/datasource/persistence/po/NotifyConfig.java @@ -17,11 +17,11 @@ public class NotifyConfig extends CreateUpdateDt { private String namespaceId; private String groupName; - - /** - * 业务id (scene_name或job_id或workflow_id) - */ - private String businessId; +// +// /** +// * 业务id (scene_name或job_id或workflow_id) +// */ +// private String businessId; /** * 任务类型 1、重试任务 2、回调任务、 3、JOB任务 4、WORKFLOW任务 diff --git a/snail-job-server/snail-job-server-starter/src/main/java/com/aizuda/snailjob/server/starter/schedule/RefreshNodeSchedule.java b/snail-job-server/snail-job-server-starter/src/main/java/com/aizuda/snailjob/server/starter/schedule/RefreshNodeSchedule.java deleted file mode 100644 index 9344e1387..000000000 --- a/snail-job-server/snail-job-server-starter/src/main/java/com/aizuda/snailjob/server/starter/schedule/RefreshNodeSchedule.java +++ /dev/null @@ -1,256 +0,0 @@ -//package com.aizuda.snailjob.server.starter.schedule; -// -//import cn.hutool.core.collection.CollUtil; -//import com.aizuda.snailjob.common.core.enums.NodeTypeEnum; -//import com.aizuda.snailjob.common.core.model.Result; -//import com.aizuda.snailjob.common.core.util.JsonUtil; -//import com.aizuda.snailjob.common.core.util.NetUtil; -//import com.aizuda.snailjob.common.log.SnailJobLog; -//import com.aizuda.snailjob.server.common.Lifecycle; -//import com.aizuda.snailjob.server.common.config.SystemProperties; -//import com.aizuda.snailjob.server.common.dto.RegisterNodeInfo; -//import com.aizuda.snailjob.server.common.rpc.client.RequestBuilder; -//import com.aizuda.snailjob.server.common.schedule.AbstractSchedule; -//import com.aizuda.snailjob.server.common.triple.Pair; -//import com.aizuda.snailjob.server.job.task.server.ServerRpcClient; -//import com.aizuda.snailjob.server.job.task.support.request.GetRegNodesPostHttpRequestHandler; -//import com.aizuda.snailjob.template.datasource.persistence.mapper.ServerNodeMapper; -//import com.aizuda.snailjob.template.datasource.persistence.po.ServerNode; -//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -//import com.fasterxml.jackson.core.type.TypeReference; -//import com.google.common.collect.Lists; -//import com.google.common.collect.Sets; -//import lombok.RequiredArgsConstructor; -//import lombok.extern.slf4j.Slf4j; -//import org.springframework.dao.DuplicateKeyException; -//import org.springframework.stereotype.Component; -// -//import java.time.Duration; -//import java.time.Instant; -//import java.time.LocalDateTime; -//import java.util.ArrayList; -//import java.util.List; -//import java.util.Objects; -//import java.util.Set; -//import java.util.concurrent.*; -//import java.util.stream.Collectors; -// -//import static com.aizuda.snailjob.server.common.register.ClientRegister.DELAY_TIME; -// -// -//@Component -//@Slf4j -//@RequiredArgsConstructor -//public class RefreshNodeSchedule extends AbstractSchedule implements Lifecycle { -// private final ServerNodeMapper serverNodeMapper; -// -// private final SystemProperties systemProperties; -// -// ExecutorService executorService = Executors.newFixedThreadPool(5); -// -// @Override -// protected void doExecute() { -// int nettyPort = systemProperties.getNettyPort(); -// String localIpStr = NetUtil.getLocalIpStr(); -// try { -// // 获取在线的客户端节点并且排除当前节点 -// LambdaQueryWrapper wrapper = new LambdaQueryWrapper() -// .eq(ServerNode::getNodeType, NodeTypeEnum.SERVER.getType()) -// .not(w -> w.eq(ServerNode::getHostIp, localIpStr) -// .eq(ServerNode::getHostPort, nettyPort)); -// List serverNodes = serverNodeMapper.selectList(wrapper); -// List clientNodes = new ArrayList<>(); -// if (serverNodes.size() > 0) { -// // 并行获取所有服务端需要注册的列表 -// // 获取列表 并完成注册/本地完成续签 -// List allClientList = getAllClientList(serverNodes); -// if (CollUtil.isNotEmpty(allClientList)) { -// clientNodes.addAll(allClientList); -// } -// List refreshCache = GetRegNodesPostHttpRequestHandler.getAndRefreshCache(); -// if (CollUtil.isNotEmpty(refreshCache)) { -// // 完成本节点的刷新 -// clientNodes.addAll(refreshCache); -// } -// } else { -// List refreshCache = GetRegNodesPostHttpRequestHandler.getAndRefreshCache(); -// if (CollUtil.isNotEmpty(refreshCache)) { -// // 完成本节点的刷新 -// clientNodes.addAll(refreshCache); -// } -// } -// if (CollUtil.isEmpty(clientNodes)) { -// SnailJobLog.LOCAL.warn("clientNodes is empty"); -// return; -// } -// SnailJobLog.LOCAL.info("start refresh client nodes:{}", clientNodes); -// refreshExpireAt(clientNodes); -// -// } catch (Exception e) { -// SnailJobLog.LOCAL.error("refresh 失败", e); -// } -// } -// -// private List getAllClientList(List serverNodes) { -// int size = serverNodes.size(); -// // 创建 CountDownLatch -// CountDownLatch latch = new CountDownLatch(size); -// -// // 存储处理结果 -// List> futures = new ArrayList<>(size); -// -// try { -// for (ServerNode serverNode : serverNodes) { -// Future future = executorService.submit(() -> { -// try { -// RegisterNodeInfo nodeInfo = new RegisterNodeInfo(); -// nodeInfo.setHostId(serverNode.getHostId()); -// nodeInfo.setGroupName(serverNode.getGroupName()); -// nodeInfo.setNamespaceId(serverNode.getNamespaceId()); -// nodeInfo.setHostPort(serverNode.getHostPort()); -// nodeInfo.setHostIp(serverNode.getHostIp()); -// ServerRpcClient serverRpcClient = buildRpcClient(nodeInfo); -// Result regNodesAndFlush = serverRpcClient.getRegNodesAndFlush(); -// -// // 模拟耗时处理 -// return regNodesAndFlush.getData(); -// } finally { -// // 处理完成后计数减一 -// latch.countDown(); -// } -// }); -// futures.add(future); -// } -// // 提交任务 -// -// // 等待所有任务完成 -// latch.await(5, TimeUnit.SECONDS); // 设置超时时间为5秒 -// -// return futures.stream() -// .map(future -> { -// try { -// String jsonString = future.get(1, TimeUnit.SECONDS); -// if (Objects.nonNull(jsonString)) { -// return JsonUtil.parseObject(jsonString, new TypeReference>() { -// }); -// } -// return new ArrayList(); -// } catch (Exception e) { -// return new ArrayList(); -// } -// }) -// .filter(Objects::nonNull) -// .flatMap(List::stream) -// .distinct() -// .toList(); -// // 收集处理结果 -// -// } catch (InterruptedException e) { -// throw new RuntimeException(e); -// } -// } -// -// @Override -// public String lockName() { -// return "registerNode"; -// } -// -// @Override -// public String lockAtMost() { -// return "PT10S"; -// } -// -// @Override -// public String lockAtLeast() { -// return "PT5S"; -// } -// -// @Override -// public void start() { -// taskScheduler.scheduleWithFixedDelay(this::execute, Instant.now(), Duration.parse("PT5S")); -// } -// -// @Override -// public void close() { -// -// } -// -// private ServerRpcClient buildRpcClient(RegisterNodeInfo registerNodeInfo) { -//// String regInfo = registerNodeInfo.getHostId() + "/" + registerNodeInfo.getHostIp() + "/" + registerNodeInfo.getHostPort(); -//// log.info(regInfo + "--------------------------"); -// int maxRetryTimes = 3; -// boolean retry = false; -// return RequestBuilder.newBuilder() -// .nodeInfo(registerNodeInfo) -// .failRetry(maxRetryTimes > 0 && !retry) -// .retryTimes(maxRetryTimes) -// .client(ServerRpcClient.class) -// .build(); -// } -// -// private void refreshExpireAt(List serverNodes) { -// if (CollUtil.isEmpty(serverNodes)) { -// return; -// } -// -// Set hostIds = Sets.newHashSet(); -// Set hostIps = Sets.newHashSet(); -// for (final ServerNode serverNode : serverNodes) { -// serverNode.setExpireAt(getExpireAt()); -// hostIds.add(serverNode.getHostId()); -// hostIps.add(serverNode.getHostIp()); -// } -// -// List dbServerNodes = serverNodeMapper.selectList( -// new LambdaQueryWrapper() -// .select(ServerNode::getHostIp, ServerNode::getHostId) -// .in(ServerNode::getHostId, hostIds) -// .in(ServerNode::getHostIp, hostIps) -// ); -// -// List insertDBs = Lists.newArrayList(); -// List updateDBs = Lists.newArrayList(); -// Set> pairs = dbServerNodes.stream() -// .map(serverNode -> Pair.of(serverNode.getHostId(), serverNode.getHostIp())).collect( -// Collectors.toSet()); -// -// // 去重处理 -// Set> existed = Sets.newHashSet(); -// for (final ServerNode serverNode : serverNodes) { -// Pair pair = Pair.of(serverNode.getHostId(), serverNode.getHostIp()); -// if (existed.contains(pair)) { -// continue; -// } -// -// if (pairs.contains(pair)) { -// updateDBs.add(serverNode); -// } else { -// insertDBs.add(serverNode); -// } -// -// existed.add(pair); -// } -// -// try { -// // 批量更新 -// if (CollUtil.isNotEmpty(updateDBs)) { -// serverNodeMapper.updateBatchExpireAt(updateDBs); -// } -// } catch (Exception e) { -// SnailJobLog.LOCAL.error("续租失败", e); -// } -// -// try { -// if (CollUtil.isNotEmpty(insertDBs)) { -// serverNodeMapper.insertBatch(insertDBs); -// } -// } catch (DuplicateKeyException ignored) { -// } catch (Exception e) { -// SnailJobLog.LOCAL.error("注册节点失败", e); -// } -// } -// -// private LocalDateTime getExpireAt() { -// return LocalDateTime.now().plusSeconds(DELAY_TIME); -// } -//} diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/NotifyConfigRequestVO.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/NotifyConfigRequestVO.java index 4ef1bcba4..2c5762a5e 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/NotifyConfigRequestVO.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/NotifyConfigRequestVO.java @@ -22,13 +22,6 @@ public class NotifyConfigRequestVO { @Pattern(regexp = "^[A-Za-z0-9_-]{1,64}$", message = "仅支持长度为1~64字符且类型为数字、字母、下划线和短横线") private String groupName; - /** - * 业务id (scene_name或job_id或workflow_id) - */ - //@NotBlank(message = "业务id不能为空") - @Deprecated - private String businessId; - /** * 任务类型 1、重试任务 2、回调任务、 3、JOB任务 4、WORKFLOW任务 */ diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/NotifyConfigServiceImpl.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/NotifyConfigServiceImpl.java index 3be861ba0..21794f93c 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/NotifyConfigServiceImpl.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/NotifyConfigServiceImpl.java @@ -50,7 +50,6 @@ public class NotifyConfigServiceImpl implements NotifyConfigService { .eq(NotifyConfig::getNamespaceId, userSessionVO.getNamespaceId()) .in(CollUtil.isNotEmpty(groupNames), NotifyConfig::getGroupName, groupNames) .eq(StrUtil.isNotBlank(queryVO.getGroupName()), NotifyConfig::getGroupName, queryVO.getGroupName()) - .eq(StrUtil.isNotBlank(queryVO.getSceneName()), NotifyConfig::getBusinessId, queryVO.getSceneName()) .orderByDesc(NotifyConfig::getId)) .getRecords();