From ca0a0dffd906162c49c7cefed3846a1bc1b3e6cc Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期一, 09 三月 2026 09:29:16 +0800
Subject: [PATCH] feat: 添加轮询服务类支持多出库口负载均衡
---
Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Core/RoundRobinService.cs | 42 ++++++++++++++++++++++++++++++++++++++++++
1 files changed, 42 insertions(+), 0 deletions(-)
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Core/RoundRobinService.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Core/RoundRobinService.cs
new file mode 100644
index 0000000..24d8c58
--- /dev/null
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_Core/Core/RoundRobinService.cs
@@ -0,0 +1,42 @@
+using System.Collections.Concurrent;
+
+namespace WIDESEA_Core.Core
+{
+ /// <summary>
+ /// 杞鏈嶅姟 - 绾跨▼瀹夊叏鐨勫湴鍧�杞閫夋嫨
+ /// </summary>
+ public class RoundRobinService
+ {
+ /// <summary>
+ /// 杞璁℃暟鍣� - key: 宸烽亾鍓嶇紑, value: 褰撳墠绱㈠紩
+ /// </summary>
+ private readonly ConcurrentDictionary<string, int> _counters = new();
+
+ /// <summary>
+ /// 鑾峰彇涓嬩竴涓湴鍧�锛堣疆璇級
+ /// </summary>
+ /// <param name="key">宸烽亾鍓嶇紑鏍囪瘑</param>
+ /// <param name="addresses">鍊欓�夊湴鍧�鍒楄〃</param>
+ /// <returns>閫変腑鐨勭洰鏍囧湴鍧�</returns>
+ public string GetNextAddress(string key, List<string> addresses)
+ {
+ // 绌哄垪琛ㄦ鏌�
+ if (addresses == null || addresses.Count == 0)
+ return "10080";
+
+ // 鍗曚釜鍦板潃锛岀洿鎺ヨ繑鍥�
+ if (addresses.Count == 1)
+ return addresses[0];
+
+ // 澶氫釜鍦板潃锛屼娇鐢ㄨ疆璇㈤�夋嫨
+ // AddOrUpdate 鏄師瀛愭搷浣滐紝绾跨▼瀹夊叏
+ int index = _counters.AddOrUpdate(
+ key,
+ 0, // 棣栨浣跨敤锛屼粠 0 寮�濮�
+ (k, oldValue) => (oldValue + 1) % addresses.Count // 杞锛氶�掑鍚庡彇妯�
+ );
+
+ return addresses[index];
+ }
+ }
+}
--
Gitblit v1.9.3