diff --git a/jsowell-common/src/main/java/com/jsowell/common/core/redis/RedisCache.java b/jsowell-common/src/main/java/com/jsowell/common/core/redis/RedisCache.java index c6c95953c..b2987c5d7 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/core/redis/RedisCache.java +++ b/jsowell-common/src/main/java/com/jsowell/common/core/redis/RedisCache.java @@ -376,7 +376,7 @@ public class RedisCache { * @param key 键 * @param value 值 * @param expireTime 过期时间,单位秒 - * @return + * @return true: set成功; false失败表示已有值 */ public Boolean setnx(String key, String value, long expireTime) { return redisTemplate.opsForValue().setIfAbsent(key, value, expireTime, TimeUnit.SECONDS); diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/AbstractHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/AbstractHandler.java index ac74245b1..a3eac19cc 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/AbstractHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/AbstractHandler.java @@ -76,17 +76,17 @@ public abstract class AbstractHandler implements InitializingBean { /** * 阻止重复帧 + * @return true 重复 */ protected boolean verifyTheDuplicateRequest(YKCDataProtocol ykcDataProtocol, Channel channel) { // 获取序列号域 int serialNumber = BytesUtil.bytesToIntLittle(ykcDataProtocol.getSerialNumber()); // 获取channelId String channelId = channel.id().asShortText(); - String redisKey = "Request_" + channelId + "_" + serialNumber; - - - return false; + Boolean result = redisCache.setnx(redisKey, ykcDataProtocol.getHEXString(), 30); + // result返回false说明没有设置成功,就是说已经有相同请求了,所以返回true重复 + return !result; } } \ No newline at end of file diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/LoginRequestHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/LoginRequestHandler.java index 9f89984ba..b2eeab229 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/LoginRequestHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/LoginRequestHandler.java @@ -163,8 +163,9 @@ public class LoginRequestHandler extends AbstractHandler { String business = BytesUtil.bcd2Str(businessTypeByteArr); // *********************** 字段解析完成,下面进行逻辑处理 *********************** // - verifyTheDuplicateRequest(ykcDataProtocol, channel); - + if (verifyTheDuplicateRequest(ykcDataProtocol, channel)) { + return null; + } LoginRequestData loginRequestData = LoginRequestData.builder() .pileSn(pileSn)