From 8bd022dfab5f81ecc07dbd145029600f72ad862c Mon Sep 17 00:00:00 2001 From: yangqicheng Date: Wed, 10 Jul 2024 10:45:53 +0800 Subject: [PATCH] =?UTF-8?q?REQ-2516-=E4=BF=AE=E5=A4=8D=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=E8=AE=B0=E5=BD=95=E5=B9=B6=E5=8F=91=E5=86=B2?= =?UTF-8?q?=E7=AA=81=E5=AF=BC=E8=87=B4=E6=8F=92=E5=85=A5=E5=A4=9A=E6=9D=A1?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../interceptor/RequestHeaderContextInterceptor.java | 6 +++--- .../axzo/workflow/server/common/util/RedisUtils.java | 12 ++++++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/interceptor/RequestHeaderContextInterceptor.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/interceptor/RequestHeaderContextInterceptor.java index 233b12fc7..cfc316e8e 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/interceptor/RequestHeaderContextInterceptor.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/interceptor/RequestHeaderContextInterceptor.java @@ -91,9 +91,9 @@ public class RequestHeaderContextInterceptor implements HandlerInterceptor { String cacheRepeatKey = REPEAT_KEY + applicationName; log.info("repeatApi key: {}", cacheRepeatKey); - String key = RedisUtils.getCacheObject(cacheRepeatKey); - if (Objects.isNull(key)) { - RedisUtils.setCacheObject(cacheRepeatKey, "", Duration.ofSeconds(5)); + //success为true表示key不存在,执行成功,false表示key存在,执行失败 + Boolean success = RedisUtils.trySetObject(cacheRepeatKey, "", Duration.ofSeconds(5)); + if (success) { KEY_CACHE.set(cacheRepeatKey); insert(extAxProperty, applicationName, clientVersion, manageableStatus); } diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/util/RedisUtils.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/util/RedisUtils.java index 7ecef815f..fcb207f7a 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/util/RedisUtils.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/util/RedisUtils.java @@ -7,6 +7,7 @@ import org.redisson.api.RAtomicLong; import org.redisson.api.RBatch; import org.redisson.api.RBucket; import org.redisson.api.RBucketAsync; +import org.redisson.api.RFuture; import org.redisson.api.RKeys; import org.redisson.api.RList; import org.redisson.api.RMap; @@ -23,6 +24,7 @@ import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.concurrent.TimeUnit; import java.util.function.Consumer; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -140,6 +142,16 @@ public class RedisUtils { batch.execute(); } + + public static Boolean trySetObject(final String key, final T value, final Duration duration) { + RBatch batch = CLIENT.createBatch(); + RBucketAsync bucket = batch.getBucket(key); + RFuture future = bucket.trySetAsync(value, duration.toMillis(), TimeUnit.MILLISECONDS); + batch.execute(); + return future.join(); + } + + /** * 注册对象监听器 *