diff --git a/pom.xml b/pom.xml
index dd7befa8e..85ac7b747 100644
--- a/pom.xml
+++ b/pom.xml
@@ -350,13 +350,6 @@
${fastjson.version}
-
-
- redis.clients
- jedis
- 5.1.0
-
-
io.github.linpeilie
mapstruct-plus-spring-boot-starter
diff --git a/ruoyi-common/ruoyi-common-dubbo/pom.xml b/ruoyi-common/ruoyi-common-dubbo/pom.xml
index 344e3a1ae..87dcae628 100644
--- a/ruoyi-common/ruoyi-common-dubbo/pom.xml
+++ b/ruoyi-common/ruoyi-common-dubbo/pom.xml
@@ -37,20 +37,10 @@
- org.apache.dubbo.extensions
- dubbo-metadata-report-redis
-
-
- redis.clients
- jedis
-
-
-
-
- redis.clients
- jedis
- 5.2.0
+ org.dromara
+ ruoyi-common-redis
+
org.projectlombok
lombok
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
deleted file mode 100644
index fa47ed1fe..000000000
--- a/ruoyi-common/ruoyi-common-dubbo/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReport.java
+++ /dev/null
@@ -1,538 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.metadata.store.redis;
-
-import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.config.configcenter.ConfigItem;
-import org.apache.dubbo.common.logger.ErrorTypeAwareLogger;
-import org.apache.dubbo.common.logger.LoggerFactory;
-import org.apache.dubbo.common.utils.*;
-import org.apache.dubbo.metadata.MappingChangedEvent;
-import org.apache.dubbo.metadata.MappingListener;
-import org.apache.dubbo.metadata.MetadataInfo;
-import org.apache.dubbo.metadata.ServiceNameMapping;
-import org.apache.dubbo.metadata.report.identifier.*;
-import org.apache.dubbo.metadata.report.support.AbstractMetadataReport;
-import org.apache.dubbo.rpc.RpcException;
-import redis.clients.jedis.*;
-import redis.clients.jedis.params.SetParams;
-import redis.clients.jedis.util.JedisClusterCRC16;
-
-import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
-
-import static org.apache.dubbo.common.constants.CommonConstants.*;
-import static org.apache.dubbo.common.constants.LoggerCodeConstants.TRANSPORT_FAILED_RESPONSE;
-import static org.apache.dubbo.metadata.MetadataConstants.META_DATA_STORE_TAG;
-import static org.apache.dubbo.metadata.ServiceNameMapping.DEFAULT_MAPPING_GROUP;
-import static org.apache.dubbo.metadata.ServiceNameMapping.getAppNames;
-import static org.apache.dubbo.metadata.report.support.Constants.DEFAULT_METADATA_REPORT_CYCLE_REPORT;
-
-/**
- * RedisMetadataReport
- */
-public class RedisMetadataReport extends AbstractMetadataReport {
-
- private static final String REDIS_DATABASE_KEY = "database";
- private static final ErrorTypeAwareLogger logger = LoggerFactory.getErrorTypeAwareLogger(RedisMetadataReport.class);
-
- // protected , for test
- protected JedisPool pool;
- private Set jedisClusterNodes;
- private int timeout;
- private String username;
- private String password;
- private final String root;
- private final ConcurrentHashMap mappingDataListenerMap = new ConcurrentHashMap<>();
- private SetParams jedisParams = SetParams.setParams();
-
- public RedisMetadataReport(URL url) {
- super(url);
- timeout = url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT);
- username = url.getUsername();
- password = url.getPassword();
- this.root = url.getGroup(DEFAULT_ROOT);
- if (url.getParameter(CYCLE_REPORT_KEY, DEFAULT_METADATA_REPORT_CYCLE_REPORT)) {
- // ttl default is twice the cycle-report time
- jedisParams.px(ONE_DAY_IN_MILLISECONDS * 2);
- }
- if (url.getParameter(CLUSTER_KEY, false)) {
- jedisClusterNodes = new HashSet<>();
- List urls = url.getBackupUrls();
- for (URL tmpUrl : urls) {
- jedisClusterNodes.add(new HostAndPort(tmpUrl.getHost(), tmpUrl.getPort()));
- }
- } else {
- int database = url.getParameter(REDIS_DATABASE_KEY, 0);
- pool = new JedisPool(new JedisPoolConfig(), url.getHost(), url.getPort(), timeout, username, password, database);
- }
- }
-
- @Override
- protected void doStoreProviderMetadata(MetadataIdentifier providerMetadataIdentifier, String serviceDefinitions) {
- this.storeMetadata(providerMetadataIdentifier, serviceDefinitions, true);
- }
-
- @Override
- protected void doStoreConsumerMetadata(MetadataIdentifier consumerMetadataIdentifier, String value) {
- this.storeMetadata(consumerMetadataIdentifier, value, true);
- }
-
- @Override
- protected void doSaveMetadata(ServiceMetadataIdentifier serviceMetadataIdentifier, URL url) {
- this.storeMetadata(serviceMetadataIdentifier, URL.encode(url.toFullString()), false);
- }
-
- @Override
- protected void doRemoveMetadata(ServiceMetadataIdentifier serviceMetadataIdentifier) {
- this.deleteMetadata(serviceMetadataIdentifier);
- }
-
- @Override
- protected List doGetExportedURLs(ServiceMetadataIdentifier metadataIdentifier) {
- String content = getMetadata(metadataIdentifier);
- if (StringUtils.isEmpty(content)) {
- return Collections.emptyList();
- }
- return new ArrayList<>(Arrays.asList(URL.decode(content)));
- }
-
- @Override
- protected void doSaveSubscriberData(SubscriberMetadataIdentifier subscriberMetadataIdentifier, String urlListStr) {
- this.storeMetadata(subscriberMetadataIdentifier, urlListStr, false);
- }
-
- @Override
- protected String doGetSubscribedURLs(SubscriberMetadataIdentifier subscriberMetadataIdentifier) {
- return this.getMetadata(subscriberMetadataIdentifier);
- }
-
- @Override
- public String getServiceDefinition(MetadataIdentifier metadataIdentifier) {
- return this.getMetadata(metadataIdentifier);
- }
-
- private void storeMetadata(BaseMetadataIdentifier metadataIdentifier, String v, boolean ephemeral) {
- if (pool != null) {
- storeMetadataStandalone(metadataIdentifier, v, ephemeral);
- } else {
- storeMetadataInCluster(metadataIdentifier, v, ephemeral);
- }
- }
-
- private void storeMetadataInCluster(BaseMetadataIdentifier metadataIdentifier, String v, boolean ephemeral) {
- try (JedisCluster jedisCluster =
- new JedisCluster(jedisClusterNodes, timeout, timeout, 2, password, new GenericObjectPoolConfig<>())) {
- 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();
- logger.error(TRANSPORT_FAILED_RESPONSE, "", "", msg, e);
- throw new RpcException(msg, e);
- }
- }
-
- private void storeMetadataStandalone(BaseMetadataIdentifier metadataIdentifier, String v, boolean ephemeral) {
- try (Jedis jedis = pool.getResource()) {
- 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);
- throw new RpcException(msg, e);
- }
- }
-
- private void deleteMetadata(BaseMetadataIdentifier metadataIdentifier) {
- if (pool != null) {
- deleteMetadataStandalone(metadataIdentifier);
- } else {
- deleteMetadataInCluster(metadataIdentifier);
- }
- }
-
- private void deleteMetadataInCluster(BaseMetadataIdentifier metadataIdentifier) {
- try (JedisCluster jedisCluster =
- new JedisCluster(jedisClusterNodes, timeout, timeout, 2, password, new GenericObjectPoolConfig<>())) {
- jedisCluster.del(metadataIdentifier.getIdentifierKey() + META_DATA_STORE_TAG);
- } catch (Throwable e) {
- String msg = "Failed to delete " + metadataIdentifier + " from redis cluster , cause: " + e.getMessage();
- logger.error(TRANSPORT_FAILED_RESPONSE, "", "", msg, e);
- throw new RpcException(msg, e);
- }
- }
-
- private void deleteMetadataStandalone(BaseMetadataIdentifier metadataIdentifier) {
- try (Jedis jedis = pool.getResource()) {
- jedis.del(metadataIdentifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY));
- } catch (Throwable e) {
- String msg = "Failed to delete " + metadataIdentifier + " from redis , cause: " + e.getMessage();
- logger.error(TRANSPORT_FAILED_RESPONSE, "", "", msg, e);
- throw new RpcException(msg, e);
- }
- }
-
- private String getMetadata(BaseMetadataIdentifier metadataIdentifier) {
- if (pool != null) {
- return getMetadataStandalone(metadataIdentifier);
- } else {
- return getMetadataInCluster(metadataIdentifier);
- }
- }
-
- private String getMetadataInCluster(BaseMetadataIdentifier metadataIdentifier) {
- try (JedisCluster jedisCluster =
- new JedisCluster(jedisClusterNodes, timeout, timeout, 2, password, new GenericObjectPoolConfig<>())) {
- return jedisCluster.get(metadataIdentifier.getIdentifierKey() + META_DATA_STORE_TAG);
- } catch (Throwable e) {
- String msg = "Failed to get " + metadataIdentifier + " from redis cluster , cause: " + e.getMessage();
- logger.error(TRANSPORT_FAILED_RESPONSE, "", "", msg, e);
- throw new RpcException(msg, e);
- }
- }
-
- private String getMetadataStandalone(BaseMetadataIdentifier metadataIdentifier) {
- try (Jedis jedis = pool.getResource()) {
- return jedis.get(metadataIdentifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY));
- } catch (Throwable e) {
- String msg = "Failed to get " + metadataIdentifier + " from redis , cause: " + e.getMessage();
- logger.error(TRANSPORT_FAILED_RESPONSE, "", "", msg, e);
- throw new RpcException(msg, e);
- }
- }
-
- /**
- * Store class and application names using Redis hashes
- * key: default 'dubbo:mapping'
- * field: class (serviceInterface)
- * value: application_names
- * @param serviceInterface field(class)
- * @param defaultMappingGroup {@link ServiceNameMapping#DEFAULT_MAPPING_GROUP}
- * @param newConfigContent new application_names
- * @param ticket previous application_names
- * @return
- */
- @Override
- public boolean registerServiceAppMapping(
- String serviceInterface, String defaultMappingGroup, String newConfigContent, Object ticket) {
- try {
- if (null != ticket && !(ticket instanceof String)) {
- throw new IllegalArgumentException("redis publishConfigCas requires stat type ticket");
- }
- String pathKey = buildMappingKey(defaultMappingGroup);
-
- return storeMapping(pathKey, serviceInterface, newConfigContent, (String) ticket);
- } catch (Exception e) {
- logger.warn(TRANSPORT_FAILED_RESPONSE, "", "", "redis publishConfigCas failed.", e);
- return false;
- }
- }
-
- private boolean storeMapping(String key, String field, String value, String ticket) {
- if (pool != null) {
- return storeMappingStandalone(key, field, value, ticket);
- } else {
- return storeMappingInCluster(key, field, value, ticket);
- }
- }
-
- /**
- * use 'watch' to implement cas.
- * Find information about slot distribution by key.
- */
- private boolean storeMappingInCluster(String key, String field, String value, String ticket) {
- try (JedisCluster jedisCluster =
- new JedisCluster(jedisClusterNodes, timeout, timeout, 2, password, new GenericObjectPoolConfig<>())) {
- Jedis jedis = new Jedis(jedisCluster.getConnectionFromSlot(JedisClusterCRC16.getSlot(key)));
- jedis.watch(key);
- String oldValue = jedis.hget(key, field);
- if (null == oldValue || null == ticket || oldValue.equals(ticket)) {
- Transaction transaction = jedis.multi();
- transaction.hset(key, field, value);
- List