From 408a0f269969d453ea69e6c66692e28e2738fce4 Mon Sep 17 00:00:00 2001 From: byteblogs168 <598092184@qq.com> Date: Wed, 6 Sep 2023 22:43:32 +0800 Subject: [PATCH] =?UTF-8?q?feat:2.3.0=201.=20=E4=BF=AE=E5=A4=8D=E5=BD=93?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E7=BB=84=E7=94=B1=E6=89=93=E5=BC=80=E5=88=B0?= =?UTF-8?q?=E5=85=B3=E9=97=AD=EF=BC=8C=E5=B7=B2=E5=88=86=E9=85=8D=E7=9A=84?= =?UTF-8?q?=E7=BB=84=E6=9C=AA=E8=83=BD=E6=B8=85=E9=99=A4=E9=97=AE=E9=A2=98?= =?UTF-8?q?=202.=20=E4=BF=AE=E5=A4=8D=E8=BF=81=E7=A7=BB=E6=AD=BB=E4=BF=A1?= =?UTF-8?q?=E9=98=9F=E5=88=97id=E9=87=8D=E5=A4=8D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/convert/RetryDeadLetterConverter.java | 12 +++++++----- .../retry/server/service/impl/RetryServiceImpl.java | 5 ++++- .../server/AllocateMessageQueueConsistentHash.java | 4 ++-- .../server/support/handler/ServerNodeBalance.java | 8 +++++--- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/service/convert/RetryDeadLetterConverter.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/service/convert/RetryDeadLetterConverter.java index c84077c9f..30e0a648f 100644 --- a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/service/convert/RetryDeadLetterConverter.java +++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/service/convert/RetryDeadLetterConverter.java @@ -2,9 +2,7 @@ package com.aizuda.easy.retry.server.service.convert; import com.aizuda.easy.retry.template.datasource.persistence.po.RetryDeadLetter; import com.aizuda.easy.retry.template.datasource.persistence.po.RetryTask; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; -import org.mapstruct.Mappings; +import org.mapstruct.*; import org.mapstruct.factory.Mappers; import java.util.List; @@ -19,10 +17,14 @@ public interface RetryDeadLetterConverter { RetryDeadLetterConverter INSTANCE = Mappers.getMapper(RetryDeadLetterConverter.class); + @Named("ignoreId") @Mappings({ - @Mapping(source = "id", target = "id", ignore = true), - @Mapping(source = "createDt", target = "createDt", ignore = true) + @Mapping(target = "id", ignore = true), + @Mapping(target = "createDt", ignore = true) }) + RetryDeadLetter toRetryDeadLetter(RetryTask retryTasks); + + @IterableMapping(qualifiedByName = "ignoreId") List toRetryDeadLetter(List retryTasks); } diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/service/impl/RetryServiceImpl.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/service/impl/RetryServiceImpl.java index 5e8c08216..a9f3864a4 100644 --- a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/service/impl/RetryServiceImpl.java +++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/service/impl/RetryServiceImpl.java @@ -237,7 +237,10 @@ public class RetryServiceImpl implements RetryService { } List retryDeadLetters = RetryDeadLetterConverter.INSTANCE.toRetryDeadLetter(retryTasks); - + LocalDateTime now = LocalDateTime.now(); + for (RetryDeadLetter retryDeadLetter : retryDeadLetters) { + retryDeadLetter.setCreateDt(now); + } Assert.isTrue(retryDeadLetters.size() == accessTemplate .getRetryDeadLetterAccess().batchInsert(groupName, retryDeadLetters), () -> new EasyRetryServerException("插入死信队列失败 [{}]", JsonUtil.toJsonString(retryDeadLetters))); diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/allocate/server/AllocateMessageQueueConsistentHash.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/allocate/server/AllocateMessageQueueConsistentHash.java index 956837a9d..76f7273e8 100644 --- a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/allocate/server/AllocateMessageQueueConsistentHash.java +++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/allocate/server/AllocateMessageQueueConsistentHash.java @@ -58,10 +58,10 @@ public class AllocateMessageQueueConsistentHash implements ServerLoadBalance { throw new IllegalArgumentException("currentCID is empty"); } if (CollectionUtils.isEmpty(groupList)) { - throw new IllegalArgumentException("mqAll is null or mqAll empty"); + throw new IllegalArgumentException("groupList is null or groupList empty"); } if (CollectionUtils.isEmpty(serverList)) { - throw new IllegalArgumentException("cidAll is null or cidAll empty"); + throw new IllegalArgumentException("serverList is null or serverList empty"); } List result = new ArrayList<>(); diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/handler/ServerNodeBalance.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/handler/ServerNodeBalance.java index 24ec7eaaf..1f1c4c384 100644 --- a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/handler/ServerNodeBalance.java +++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/handler/ServerNodeBalance.java @@ -72,20 +72,22 @@ public class ServerNodeBalance implements Lifecycle, Runnable { if (CollectionUtils.isEmpty(podIpSet)) { LogUtils.error(log, "server node is empty"); - return; } Set allGroup = CacheGroup.getAllGroup(); if (CollectionUtils.isEmpty(allGroup)) { LogUtils.error(log, "group is empty"); + } + + // 删除本地缓存的所有组信息 + CacheConsumerGroup.clear(); + if(CollectionUtils.isEmpty(podIpSet) || CollectionUtils.isEmpty(allGroup)) { return; } List allocate = new AllocateMessageQueueConsistentHash() .allocate(ServerRegister.CURRENT_CID, new ArrayList<>(allGroup), new ArrayList<>(podIpSet)); - // 删除本地缓存的所有组信息 - CacheConsumerGroup.clear(); // 重新覆盖本地分配的组信息 for (String groupName : allocate) { CacheConsumerGroup.addOrUpdate(groupName);