From f34a92c6a4a16c23d2e8ee3756f40266a0e736d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Tue, 27 May 2025 11:26:20 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20dubbo=20redis=20?= =?UTF-8?q?=E5=85=83=E6=95=B0=E6=8D=AE=E4=B8=AD=E5=BF=83=20=E6=8A=A5?= =?UTF-8?q?=E9=94=99=E6=89=BE=E4=B8=8D=E5=88=B0=E5=85=83=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=97=AE=E9=A2=98=20=E5=AE=98=E6=96=B9=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=AE=9E=E7=8E=B0=E7=B1=BB=E6=9C=89=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../store/redis/RedisMetadataReport.java | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/ruoyi-common/ruoyi-common-dubbo/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReport.java b/ruoyi-common/ruoyi-common-dubbo/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReport.java index 9a435c0e..5acc1f2d 100644 --- a/ruoyi-common/ruoyi-common-dubbo/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReport.java +++ b/ruoyi-common/ruoyi-common-dubbo/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReport.java @@ -83,17 +83,17 @@ public class RedisMetadataReport extends AbstractMetadataReport { @Override protected void doStoreProviderMetadata(MetadataIdentifier providerMetadataIdentifier, String serviceDefinitions) { - this.storeMetadata(providerMetadataIdentifier, serviceDefinitions); + this.storeMetadata(providerMetadataIdentifier, serviceDefinitions, true); } @Override protected void doStoreConsumerMetadata(MetadataIdentifier consumerMetadataIdentifier, String value) { - this.storeMetadata(consumerMetadataIdentifier, value); + this.storeMetadata(consumerMetadataIdentifier, value, true); } @Override protected void doSaveMetadata(ServiceMetadataIdentifier serviceMetadataIdentifier, URL url) { - this.storeMetadata(serviceMetadataIdentifier, URL.encode(url.toFullString())); + this.storeMetadata(serviceMetadataIdentifier, URL.encode(url.toFullString()), false); } @Override @@ -112,7 +112,7 @@ public class RedisMetadataReport extends AbstractMetadataReport { @Override protected void doSaveSubscriberData(SubscriberMetadataIdentifier subscriberMetadataIdentifier, String urlListStr) { - this.storeMetadata(subscriberMetadataIdentifier, urlListStr); + this.storeMetadata(subscriberMetadataIdentifier, urlListStr, false); } @Override @@ -125,18 +125,22 @@ public class RedisMetadataReport extends AbstractMetadataReport { return this.getMetadata(metadataIdentifier); } - private void storeMetadata(BaseMetadataIdentifier metadataIdentifier, String v) { + private void storeMetadata(BaseMetadataIdentifier metadataIdentifier, String v, boolean ephemeral) { if (pool != null) { - storeMetadataStandalone(metadataIdentifier, v); + storeMetadataStandalone(metadataIdentifier, v, ephemeral); } else { - storeMetadataInCluster(metadataIdentifier, v); + storeMetadataInCluster(metadataIdentifier, v, ephemeral); } } - private void storeMetadataInCluster(BaseMetadataIdentifier metadataIdentifier, String v) { + private void storeMetadataInCluster(BaseMetadataIdentifier metadataIdentifier, String v, boolean ephemeral) { try (JedisCluster jedisCluster = new JedisCluster(jedisClusterNodes, timeout, timeout, 2, password, new GenericObjectPoolConfig<>())) { - jedisCluster.set(metadataIdentifier.getIdentifierKey() + META_DATA_STORE_TAG, v); + if (ephemeral) { + jedisCluster.set(metadataIdentifier.getIdentifierKey() + META_DATA_STORE_TAG, v, jedisParams); + } else { + jedisCluster.set(metadataIdentifier.getIdentifierKey() + META_DATA_STORE_TAG, v); + } } catch (Throwable e) { String msg = "Failed to put " + metadataIdentifier + " to redis cluster " + v + ", cause: " + e.getMessage(); @@ -145,9 +149,13 @@ public class RedisMetadataReport extends AbstractMetadataReport { } } - private void storeMetadataStandalone(BaseMetadataIdentifier metadataIdentifier, String v) { + private void storeMetadataStandalone(BaseMetadataIdentifier metadataIdentifier, String v, boolean ephemeral) { try (Jedis jedis = pool.getResource()) { - jedis.set(metadataIdentifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY), v); + if (ephemeral) { + jedis.set(metadataIdentifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY), v, jedisParams); + } else { + jedis.set(metadataIdentifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY), v); + } } catch (Throwable e) { String msg = "Failed to put " + metadataIdentifier + " to redis " + v + ", cause: " + e.getMessage(); logger.error(TRANSPORT_FAILED_RESPONSE, "", "", msg, e); @@ -410,7 +418,7 @@ public class RedisMetadataReport extends AbstractMetadataReport { @Override public void publishAppMetadata(SubscriberMetadataIdentifier identifier, MetadataInfo metadataInfo) { - this.storeMetadata(identifier, metadataInfo.getContent()); + this.storeMetadata(identifier, metadataInfo.getContent(), false); } @Override