From 78fca0cb068fe7a7be9ad9b965fa3d1a2b1e2828 Mon Sep 17 00:00:00 2001
From: cl <1442464845@qq.com>
Date: 星期四, 30 四月 2026 18:19:28 +0800
Subject: [PATCH] #异步
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/CloudWmsNotifySchedule.java | 65 ++++++++++++++++++--------------
1 files changed, 36 insertions(+), 29 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/CloudWmsNotifySchedule.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/CloudWmsNotifySchedule.java
index bb44b8d..203ecb9 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/CloudWmsNotifySchedule.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/CloudWmsNotifySchedule.java
@@ -19,6 +19,7 @@
import java.util.Date;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
/** 浜戜粨涓婃姤瀹氭椂浠诲姟 */
@Slf4j
@@ -45,37 +46,43 @@
return;
}
long nowMs = System.currentTimeMillis();
- for (CloudWmsNotifyLog logRecord : pending) {
- try {
- Integer maxRetry = logRecord.getMaxRetryCount();
- Integer intervalSeconds = logRecord.getRetryIntervalSeconds();
- if (maxRetry == null || intervalSeconds == null) {
- log.warn("浜戜粨涓婃姤寰呭姙璺宠繃锛氶噸璇曞弬鏁扮己澶憋紝id={}锛宐izRef={}锛宮axRetry={}锛宨ntervalSeconds={}",
- logRecord.getId(), logRecord.getBizRef(), maxRetry, intervalSeconds);
- continue;
- }
- int effectiveIntervalSeconds = Math.max(0, intervalSeconds);
- // if (logRecord.getRetryCount() != null && logRecord.getRetryCount() >= maxRetry) {
- if (!isInfiniteRetry(maxRetry)
- && logRecord.getRetryCount() != null
- && logRecord.getRetryCount() >= maxRetry) {
- log.info("浜戜粨涓婃姤寰呭姙璺宠繃锛氶噸璇曟鏁板凡杈句笂闄愶紝id={}锛宐izRef={}锛宺etryCount={}锛宮axRetry={}",
- logRecord.getId(), logRecord.getBizRef(), logRecord.getRetryCount(), maxRetry);
- continue;
- }
- if (logRecord.getLastNotifyTime() != null) {
- long elapsed = (nowMs - logRecord.getLastNotifyTime().getTime()) / 1000;
- if (elapsed < effectiveIntervalSeconds) {
-// log.info("浜戜粨涓婃姤寰呭姙璺宠繃锛氭湭鍒伴噸璇曢棿闅旓紝id={}锛宐izRef={}锛宔lapsed={}s锛宨nterval={}s",
-// logRecord.getId(), logRecord.getBizRef(), elapsed, effectiveIntervalSeconds);
- continue;
- }
- }
- processOne(logRecord);
- } catch (Exception e) {
- log.warn("浜戜粨涓婃姤瀹氭椂浠诲姟澶勭悊鍗曟潯寮傚父锛宨d={}锛宐izRef={}锛歿}", logRecord.getId(), logRecord.getBizRef(), e.getMessage());
+ List<CloudWmsNotifyLog> ready = pending.stream()
+ .filter(logRecord -> shouldProcess(logRecord, nowMs))
+ .collect(Collectors.toList());
+ ready.parallelStream().forEach(this::safeProcessOne);
+ }
+
+ private void safeProcessOne(CloudWmsNotifyLog logRecord) {
+ try {
+ processOne(logRecord);
+ } catch (Exception e) {
+ log.warn("浜戜粨涓婃姤瀹氭椂浠诲姟澶勭悊鍗曟潯寮傚父锛宨d={}锛宐izRef={}锛歿}", logRecord.getId(), logRecord.getBizRef(), e.getMessage());
+ }
+ }
+
+ private boolean shouldProcess(CloudWmsNotifyLog logRecord, long nowMs) {
+ Integer maxRetry = logRecord.getMaxRetryCount();
+ Integer intervalSeconds = logRecord.getRetryIntervalSeconds();
+ if (maxRetry == null || intervalSeconds == null) {
+ log.warn("浜戜粨涓婃姤寰呭姙璺宠繃锛氶噸璇曞弬鏁扮己澶憋紝id={}锛宐izRef={}锛宮axRetry={}锛宨ntervalSeconds={}",
+ logRecord.getId(), logRecord.getBizRef(), maxRetry, intervalSeconds);
+ return false;
+ }
+ if (!isInfiniteRetry(maxRetry)
+ && logRecord.getRetryCount() != null
+ && logRecord.getRetryCount() >= maxRetry) {
+ log.info("浜戜粨涓婃姤寰呭姙璺宠繃锛氶噸璇曟鏁板凡杈句笂闄愶紝id={}锛宐izRef={}锛宺etryCount={}锛宮axRetry={}",
+ logRecord.getId(), logRecord.getBizRef(), logRecord.getRetryCount(), maxRetry);
+ return false;
+ }
+ int effectiveIntervalSeconds = Math.max(0, intervalSeconds);
+ if (logRecord.getLastNotifyTime() != null) {
+ long elapsed = (nowMs - logRecord.getLastNotifyTime().getTime()) / 1000;
+ if (elapsed < effectiveIntervalSeconds) {
+ return false;
}
}
+ return true;
}
private void processOne(CloudWmsNotifyLog logRecord) {
--
Gitblit v1.9.1