diff --git a/fw-valhalla-rpc/src/main/java/cn/fw/valhalla/rpc/erp/TodoRpcService.java b/fw-valhalla-rpc/src/main/java/cn/fw/valhalla/rpc/erp/TodoRpcService.java index 98735b4..8c48f64 100644 --- a/fw-valhalla-rpc/src/main/java/cn/fw/valhalla/rpc/erp/TodoRpcService.java +++ b/fw-valhalla-rpc/src/main/java/cn/fw/valhalla/rpc/erp/TodoRpcService.java @@ -17,10 +17,7 @@ import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.Optional; +import java.util.*; import java.util.stream.Collectors; /** @@ -163,28 +160,27 @@ public class TodoRpcService { } return Optional.of(dto); } catch (Exception e) { - log.error("缓存设置信息失败 key[{}]", key, e); + log.error("缓存信息获取失败 key[{}]", key, e); return Optional.empty(); } } - public List getAllFromCache(final String key) { + public Collection getAllFromCache(final String key) { try { Boolean hasKey = redisTemplate.hasKey(key); if (!Boolean.TRUE.equals(hasKey)) { - return new ArrayList<>(); + return new HashSet<>(); } BoundListOperations ops = redisTemplate.boundListOps(key); List stringList = ops.range(0, -1); + redisTemplate.delete(key); if (CollectionUtils.isEmpty(stringList)) { - return new ArrayList<>(); + return new HashSet<>(); } - List dtos = stringList.stream().map(str -> JSONObject.parseObject(str, BackLogItemDTO.class)).collect(Collectors.toList()); - redisTemplate.delete(key); - return dtos; + return stringList.stream().map(str -> JSONObject.parseObject(str, BackLogItemDTO.class)).collect(Collectors.toSet()); } catch (Exception e) { - log.error("缓存设置信息失败 key[{}]", key, e); - return new ArrayList<>(); + log.error("缓存信息获取失败 key[{}]", key, e); + return new HashSet<>(); } } diff --git a/fw-valhalla-rpc/src/main/java/cn/fw/valhalla/rpc/erp/dto/BackLogItemDTO.java b/fw-valhalla-rpc/src/main/java/cn/fw/valhalla/rpc/erp/dto/BackLogItemDTO.java index 108677a..c7c15e6 100644 --- a/fw-valhalla-rpc/src/main/java/cn/fw/valhalla/rpc/erp/dto/BackLogItemDTO.java +++ b/fw-valhalla-rpc/src/main/java/cn/fw/valhalla/rpc/erp/dto/BackLogItemDTO.java @@ -1,6 +1,7 @@ package cn.fw.valhalla.rpc.erp.dto; import lombok.Data; +import lombok.EqualsAndHashCode; import lombok.ToString; import java.util.Date; @@ -14,6 +15,7 @@ import java.util.Objects; */ @Data @ToString +@EqualsAndHashCode public class BackLogItemDTO { /** * 发送次数 diff --git a/fw-valhalla-server/src/main/java/cn/fw/valhalla/controller/task/FollowRecordTask.java b/fw-valhalla-server/src/main/java/cn/fw/valhalla/controller/task/FollowRecordTask.java index 5152b8d..3142343 100644 --- a/fw-valhalla-server/src/main/java/cn/fw/valhalla/controller/task/FollowRecordTask.java +++ b/fw-valhalla-server/src/main/java/cn/fw/valhalla/controller/task/FollowRecordTask.java @@ -22,9 +22,9 @@ import org.springframework.util.CollectionUtils; import java.time.LocalDateTime; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.Objects; -import java.util.Optional; /** * @author : kurisu @@ -125,21 +125,21 @@ public class FollowRecordTask { /** * 完成待办的重试 */ - @Scheduled(initialDelay = 1500, fixedRate = 1000) + @Scheduled(initialDelay = 1500, fixedRate = 15 * 1000) public void retryCompleteTodoItem() { String key = todoRpcService.generateKey(TodoRpcService.TodoOperationEnum.COMPLETE); - Optional fromCache = todoRpcService.getOneFromCache(key); - fromCache.ifPresent(todoRpcService::complete); + Collection all = todoRpcService.getAllFromCache(key); + all.forEach(todoRpcService::complete); } /** * 取消待办的重试 */ - @Scheduled(initialDelay = 1000, fixedRate = 1000) + @Scheduled(initialDelay = 1000, fixedRate = 10 * 1000) public void retryCancelTodoItem() { String key = todoRpcService.generateKey(TodoRpcService.TodoOperationEnum.CANCEL); - Optional fromCache = todoRpcService.getOneFromCache(key); - fromCache.ifPresent(todoRpcService::cancel); + Collection all = todoRpcService.getAllFromCache(key); + all.forEach(todoRpcService::cancel); }