From 42b618bcac01f9239b132448cab0f0dcdc53573c Mon Sep 17 00:00:00 2001 From: caoyuan Date: Fri, 1 Dec 2023 17:57:56 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix:JbootCaredisCache=20=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E5=8F=82=E6=95=B0isUseFirstLevelOnly=20=E4=B8=BAtrue=E4=B8=8D?= =?UTF-8?q?=E4=BD=BF=E7=94=A8redis=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cache/caredis/JbootCaredisCacheImpl.java | 39 +++++++++++-------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/src/main/java/io/jboot/components/cache/caredis/JbootCaredisCacheImpl.java b/src/main/java/io/jboot/components/cache/caredis/JbootCaredisCacheImpl.java index 3f2e41c9..c02bf1bd 100644 --- a/src/main/java/io/jboot/components/cache/caredis/JbootCaredisCacheImpl.java +++ b/src/main/java/io/jboot/components/cache/caredis/JbootCaredisCacheImpl.java @@ -49,30 +49,32 @@ public class JbootCaredisCacheImpl extends JbootCacheBase { private String clientId; private Cache keysCache = Caffeine.newBuilder() - .expireAfterAccess(10, TimeUnit.MINUTES) - .expireAfterWrite(10, TimeUnit.MINUTES) - .build(); + .expireAfterAccess(10, TimeUnit.MINUTES) + .expireAfterWrite(10, TimeUnit.MINUTES) + .build(); public JbootCaredisCacheImpl(JbootCacheConfig config) { super(config); this.caffeineCacheImpl = new CaffeineCacheImpl(config); - this.redisCacheImpl = new JbootRedisCacheImpl(config); + this.clientId = StrUtil.uuid(); this.serializer = Jboot.getSerializer(); - //在某些场景下,多个应用使用同一个 redis 实例,此时可以通过配置 cacheSyncMqChannel 来解决缓存冲突的问题 - if (StrUtil.isNotBlank(config.getCacheSyncMqChannel())){ - this.channel = config.getCacheSyncMqChannel(); - } - - this.redis = redisCacheImpl.getRedis(); - this.redis.subscribe(new BinaryJedisPubSub() { - @Override - public void onMessage(byte[] channel, byte[] message) { - JbootCaredisCacheImpl.this.onMessage((String) serializer.deserialize(channel), serializer.deserialize(message)); + if(!config.isUseFirstLevelOnly()) { + //在某些场景下,多个应用使用同一个 redis 实例,此时可以通过配置 cacheSyncMqChannel 来解决缓存冲突的问题 + if (StrUtil.isNotBlank(config.getCacheSyncMqChannel())) { + this.channel = config.getCacheSyncMqChannel(); } - }, serializer.serialize(channel)); + this.redisCacheImpl = new JbootRedisCacheImpl(config); + this.redis = redisCacheImpl.getRedis(); + this.redis.subscribe(new BinaryJedisPubSub() { + @Override + public void onMessage(byte[] channel, byte[] message) { + JbootCaredisCacheImpl.this.onMessage((String) serializer.deserialize(channel), serializer.deserialize(message)); + } + }, serializer.serialize(channel)); + } } @@ -241,8 +243,11 @@ public class JbootCaredisCacheImpl extends JbootCacheBase { private void publishMessage(int action, String cacheName, Object key) { clearKeysCache(cacheName); - JbootCaredisMessage message = new JbootCaredisMessage(clientId, action, cacheName, key); - redis.publish(serializer.serialize(channel), serializer.serialize(message)); + if(!config.isUseFirstLevelOnly()){ + JbootCaredisMessage message = new JbootCaredisMessage(clientId, action, cacheName, key); + redis.publish(serializer.serialize(channel), serializer.serialize(message)); + } + } private void clearKeysCache(String cacheName) { -- Gitee From b961af10a816aa79b555be9b522e8edd7b7fa6ef Mon Sep 17 00:00:00 2001 From: Roger Date: Sun, 14 Jul 2024 18:08:18 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix:JbootAopFactory=20=E5=A6=82=E6=9E=9C?= =?UTF-8?q?=E6=B3=A8=E8=A7=A3=E5=BD=93=E5=89=8D=E7=B1=BB=E5=8F=96=E4=B8=8D?= =?UTF-8?q?=E5=88=B0=EF=BC=8C=E5=88=99=E4=BB=8E=E5=BD=93=E5=89=8D=E7=B1=BB?= =?UTF-8?q?=E7=9A=84=E7=88=B6=E7=B1=BB=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/jboot/aop/JbootAopFactory.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/main/java/io/jboot/aop/JbootAopFactory.java b/src/main/java/io/jboot/aop/JbootAopFactory.java index 3aab3f3c..937b466a 100644 --- a/src/main/java/io/jboot/aop/JbootAopFactory.java +++ b/src/main/java/io/jboot/aop/JbootAopFactory.java @@ -410,16 +410,17 @@ public class JbootAopFactory extends AopFactory { beanNameClassesMapping.put(beanName, implClass); } else { Class[] interfaceClasses = implClass.getInterfaces(); - if (interfaceClasses.length == 0) { - //add self - this.addMapping(implClass, implClass); - } else { - Class[] excludes = buildExcludeClasses(implClass); - for (Class interfaceClass : interfaceClasses) { - if (!inExcludes(interfaceClass, excludes)) { - this.addMapping(interfaceClass, implClass); - } + interfaceClasses = implClass.getSuperclass().getInterfaces(); + if (interfaceClasses.length == 0) { + this.addMapping(implClass, implClass); + continue; + } + } + Class[] excludes = buildExcludeClasses(implClass); + for (Class interfaceClass : interfaceClasses) { + if (!inExcludes(interfaceClass, excludes)) { + this.addMapping(interfaceClass, implClass); } } } -- Gitee From 2ea7f25090cdcd2de4f524c06993942385e96d54 Mon Sep 17 00:00:00 2001 From: Roger Date: Wed, 17 Jul 2024 13:48:04 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix:JbootJedisImpl=20redis=E9=87=8D?= =?UTF-8?q?=E8=BF=9E=E7=9A=84=E6=97=A5=E5=BF=97=E5=8F=98=E6=9B=B4=E4=B8=BA?= =?UTF-8?q?=E8=AD=A6=E5=91=8A=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/jboot/support/redis/jedis/JbootJedisImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/jboot/support/redis/jedis/JbootJedisImpl.java b/src/main/java/io/jboot/support/redis/jedis/JbootJedisImpl.java index cc58035e..b5028a1f 100644 --- a/src/main/java/io/jboot/support/redis/jedis/JbootJedisImpl.java +++ b/src/main/java/io/jboot/support/redis/jedis/JbootJedisImpl.java @@ -1495,7 +1495,7 @@ public class JbootJedisImpl extends JbootRedisBase { LOG.warn("Disconnect to redis channels : " + Arrays.toString(channels)); break; } catch (JedisConnectionException e) { - LOG.error("Failed connect to redis, reconnect it.", e); + LOG.warn("Failed connect to redis, reconnect it.", e); QuietlyUtil.sleepQuietly(1000); } finally { returnResource(jedis); @@ -1534,7 +1534,7 @@ public class JbootJedisImpl extends JbootRedisBase { LOG.warn("Disconnect to redis channel in subscribe binaryListener!"); break; } catch (Throwable e) { - LOG.error("Failed connect to redis, reconnect it.", e); + LOG.warn("Failed connect to redis, reconnect it.", e); QuietlyUtil.sleepQuietly(1000); } finally { if (jedis != null) { -- Gitee