This is an automated email from the ASF dual-hosted git repository.
chenwenkang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shenyu.git
The following commit(s) were added to refs/heads/master by this push:
new aeba1f3cbf [feat] loggingRabbitMQ plugin config based on selector
(#6059)
aeba1f3cbf is described below
commit aeba1f3cbf102b577e3ee535596331121743a825
Author: Yu Siheng <[email protected]>
AuthorDate: Sun Sep 28 00:34:51 2025 +0800
[feat] loggingRabbitMQ plugin config based on selector (#6059)
* [feat] loggingRabbitMQ plugin config based on selector
* fix
* fix
* fix
* fix
* fix
* fix test file
* add:test file
---------
Co-authored-by: aias00 <[email protected]>
Co-authored-by: loongs-zhang <[email protected]>
Co-authored-by: Misaya295 <[email protected]>
---
db/init/mysql/schema.sql | 14 +
db/init/ob/schema.sql | 14 +
db/init/og/create-table.sql | 14 +
db/init/oracle/schema.sql | 38 +++
db/init/pg/create-table.sql | 13 +
db/upgrade/2.7.0-upgrade-2.7.1-mysql.sql | 18 +-
db/upgrade/2.7.0-upgrade-2.7.1-ob.sql | 17 +-
db/upgrade/2.7.0-upgrade-2.7.1-og.sql | 17 +-
db/upgrade/2.7.0-upgrade-2.7.1-oracle.sql | 41 +++
db/upgrade/2.7.0-upgrade-2.7.1-pg.sql | 18 +-
.../src/main/resources/sql-script/h2/schema.sql | 14 +
.../logging/common/AbstractLoggingPlugin.java | 1 +
.../common/collector/AbstractLogCollector.java | 106 ++++++-
.../logging/common/collector/LogCollector.java | 1 +
.../rabbitmq/cache/RabbitmqClientCache.java | 150 ++++++++++
.../rabbitmq/config/RabbitmqLogCollectConfig.java | 319 +++++++++++++++++++++
.../rabbitmq/conllector/RabbitmqLogCollector.java | 17 ++
.../handler/LoggingRabbitmqPluginDataHandler.java | 62 ++++
.../rabbitmq/cache/RabbitmqClientCacheTest.java | 76 +++++
.../collector/RabbitmqLogCollectorTest.java | 35 +++
.../config/RabbitmqLogCollectConfigTest.java | 8 +-
.../LoggingRabbitmqPluginDataHandlerTest.java | 29 ++
22 files changed, 999 insertions(+), 23 deletions(-)
diff --git a/db/init/mysql/schema.sql b/db/init/mysql/schema.sql
index c2b8cbc85d..52bbf64c28 100644
--- a/db/init/mysql/schema.sql
+++ b/db/init/mysql/schema.sql
@@ -1372,6 +1372,20 @@ INSERT INTO `plugin_handle` VALUES
('1722804370575548416', '45', 'exclusive', 'e
INSERT INTO `plugin_handle` VALUES ('1722804461256400896', '45', 'autoDelete',
'autoDelete', 2, 3, 0,
'{\"required\":\"1\",\"defaultValue\":\"false\",\"placeholder\":\"true /
false\",\"rule\":\"/^(true|false)$/\"}', '2023-11-07 11:06:00.803', '2023-11-07
13:31:41.048');
INSERT INTO `plugin_handle` VALUES ('1722804548510507008', '45', 'args',
'args', 2, 3, 0,
'{\"required\":\"0\",\"defaultValue\":"",\"placeholder\":"",\"rule\":\"\"}',
'2023-1\1-07 11:06:00.803', '2023-11-07 13:31:41.048');
+INSERT INTO `plugin_handle` VALUES ('1821435546642157568', '45', 'host',
'host', 2, 1, 0, '{\"required\":\"0\",\"defaultValue\":\"\",\"rule\":\"\"}',
'2023-11-06 15:53:11.704', '2023-11-07 13:31:41.010');
+INSERT INTO `plugin_handle` VALUES ('1821435708743618560', '45', 'port',
'port', 1, 1, 0, '{\"required\":\"0\",\"defaultValue\":\"\",\"rule\":\"\"}',
'2023-11-06 15:53:50.352', '2023-11-07 13:31:41.016');
+INSERT INTO `plugin_handle` VALUES ('1821436368046264320', '45', 'password',
'password', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"\",\"rule\":\"\"}', '2023-11-06
15:56:27.541', '2023-11-07 13:31:41.021');
+INSERT INTO `plugin_handle` VALUES ('1821436500343001088', '45', 'username',
'username', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"\",\"rule\":\"\"}', '2023-11-06
15:56:59.084', '2023-11-07 13:31:41.025');
+INSERT INTO `plugin_handle` VALUES ('1821436639635836928', '45',
'exchangeName', 'exchangeName', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"\",\"rule\":\"\"}', '2023-11-06
15:57:32.295', '2023-11-07 13:31:41.030');
+INSERT INTO `plugin_handle` VALUES ('1821436745583955968', '45', 'queueName',
'queueName', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"\",\"rule\":\"\"}', '2023-11-06
15:57:57.553', '2023-11-07 13:31:41.035');
+INSERT INTO `plugin_handle` VALUES ('1821509996347617280', '45', 'routingKey',
'routingKey', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"\",\"rule\":\"\"}', '2023-11-06
20:49:01.897', '2023-11-07 13:31:41.039');
+INSERT INTO `plugin_handle` VALUES ('1821725585461706752', '45',
'virtualHost', 'virtualHost', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"/\",\"rule\":\"\"}', '2023-11-07
11:05:42.350', '2023-11-07 13:31:41.044');
+INSERT INTO `plugin_handle` VALUES ('1821725662875975680', '45',
'exchangeType', 'exchangeType', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"direct\",\"rule\":\"\"}', '2023-11-07
11:06:00.803', '2023-11-07 13:31:41.048');
+INSERT INTO `plugin_handle` VALUES ('1822804180904927232', '45', 'durable',
'durable', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"true\",\"placeholder\":\"true /
false\",\"rule\":\"/^(true|false)$/\"}', '2023-11-07 11:06:00.803', '2023-11-07
13:31:41.048');
+INSERT INTO `plugin_handle` VALUES ('1822804370575548416', '45', 'exclusive',
'exclusive', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"false\",\"placeholder\":\"true /
false\",\"rule\":\"/^(true|false)$/\"}', '2023-11-07 11:06:00.803', '2023-11-07
13:31:41.048');
+INSERT INTO `plugin_handle` VALUES ('1822804461256400896', '45', 'autoDelete',
'autoDelete', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"false\",\"placeholder\":\"true /
false\",\"rule\":\"/^(true|false)$/\"}', '2023-11-07 11:06:00.803', '2023-11-07
13:31:41.048');
+INSERT INTO `plugin_handle` VALUES ('1822804548510507008', '45', 'args',
'args', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":"",\"placeholder\":"",\"rule\":\"\"}',
'2023-1\1-07 11:06:00.803', '2023-11-07 13:31:41.048');
+
INSERT INTO `plugin_handle` VALUES ('1722804548510507009', '33', 'topic',
'topic', 2, 1, 1,
'{\"required\":\"0\",\"defaultValue\":\"\",\"placeholder\":\"optional\"}',
'2022-05-25 18:02:53', '2022-05-25 18:02:53');
INSERT INTO `plugin_handle` VALUES ('1722804548510507010', '33', 'sampleRate',
'sampleRate', 2, 1, 2,
'{\"required\":\"0\",\"defaultValue\":\"\",\"placeholder\":\"optional,0,0.01~1\"}',
'2022-05-25 18:02:53', '2022-05-25 18:02:53');
diff --git a/db/init/ob/schema.sql b/db/init/ob/schema.sql
index 0862529506..70ad567a22 100644
--- a/db/init/ob/schema.sql
+++ b/db/init/ob/schema.sql
@@ -1340,6 +1340,20 @@ INSERT INTO `plugin_handle` VALUES
('1722804370575548416', '45', 'exclusive', 'e
INSERT INTO `plugin_handle` VALUES ('1722804461256400896', '45', 'autoDelete',
'autoDelete', 2, 3, 0,
'{\"required\":\"1\",\"defaultValue\":\"false\",\"placeholder\":\"true /
false\",\"rule\":\"/^(true|false)$/\"}', '2023-11-07 11:06:00.803', '2023-11-07
13:31:41.048');
INSERT INTO `plugin_handle` VALUES ('1722804548510507008', '45', 'args',
'args', 2, 3, 0,
'{\"required\":\"0\",\"defaultValue\":"",\"placeholder\":"",\"rule\":\"\"}',
'2023-1\1-07 11:06:00.803', '2023-11-07 13:31:41.048');
+INSERT INTO `plugin_handle` VALUES ('1821435546642157568', '45', 'host',
'host', 2, 1, 0, '{\"required\":\"0\",\"defaultValue\":\"\",\"rule\":\"\"}',
'2023-11-06 15:53:11.704', '2023-11-07 13:31:41.010');
+INSERT INTO `plugin_handle` VALUES ('1821435708743618560', '45', 'port',
'port', 1, 1, 0, '{\"required\":\"0\",\"defaultValue\":\"\",\"rule\":\"\"}',
'2023-11-06 15:53:50.352', '2023-11-07 13:31:41.016');
+INSERT INTO `plugin_handle` VALUES ('1821436368046264320', '45', 'password',
'password', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"\",\"rule\":\"\"}', '2023-11-06
15:56:27.541', '2023-11-07 13:31:41.021');
+INSERT INTO `plugin_handle` VALUES ('1821436500343001088', '45', 'username',
'username', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"\",\"rule\":\"\"}', '2023-11-06
15:56:59.084', '2023-11-07 13:31:41.025');
+INSERT INTO `plugin_handle` VALUES ('1821436639635836928', '45',
'exchangeName', 'exchangeName', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"\",\"rule\":\"\"}', '2023-11-06
15:57:32.295', '2023-11-07 13:31:41.030');
+INSERT INTO `plugin_handle` VALUES ('1821436745583955968', '45', 'queueName',
'queueName', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"\",\"rule\":\"\"}', '2023-11-06
15:57:57.553', '2023-11-07 13:31:41.035');
+INSERT INTO `plugin_handle` VALUES ('1821509996347617280', '45', 'routingKey',
'routingKey', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"\",\"rule\":\"\"}', '2023-11-06
20:49:01.897', '2023-11-07 13:31:41.039');
+INSERT INTO `plugin_handle` VALUES ('1821725585461706752', '45',
'virtualHost', 'virtualHost', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"/\",\"rule\":\"\"}', '2023-11-07
11:05:42.350', '2023-11-07 13:31:41.044');
+INSERT INTO `plugin_handle` VALUES ('1821725662875975680', '45',
'exchangeType', 'exchangeType', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"direct\",\"rule\":\"\"}', '2023-11-07
11:06:00.803', '2023-11-07 13:31:41.048');
+INSERT INTO `plugin_handle` VALUES ('1822804180904927232', '45', 'durable',
'durable', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"true\",\"placeholder\":\"true /
false\",\"rule\":\"/^(true|false)$/\"}', '2023-11-07 11:06:00.803', '2023-11-07
13:31:41.048');
+INSERT INTO `plugin_handle` VALUES ('1822804370575548416', '45', 'exclusive',
'exclusive', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"false\",\"placeholder\":\"true /
false\",\"rule\":\"/^(true|false)$/\"}', '2023-11-07 11:06:00.803', '2023-11-07
13:31:41.048');
+INSERT INTO `plugin_handle` VALUES ('1822804461256400896', '45', 'autoDelete',
'autoDelete', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"false\",\"placeholder\":\"true /
false\",\"rule\":\"/^(true|false)$/\"}', '2023-11-07 11:06:00.803', '2023-11-07
13:31:41.048');
+INSERT INTO `plugin_handle` VALUES ('1822804548510507008', '45', 'args',
'args', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":"",\"placeholder\":"",\"rule\":\"\"}',
'2023-1\1-07 11:06:00.803', '2023-11-07 13:31:41.048');
+
INSERT INTO `plugin_handle` VALUES ('1722804548510507009', '33', 'topic',
'topic', 2, 1, 1,
'{\"required\":\"0\",\"defaultValue\":\"\",\"placeholder\":\"optional\"}',
'2022-05-25 18:02:53', '2022-05-25 18:02:53');
INSERT INTO `plugin_handle` VALUES ('1722804548510507010', '33', 'sampleRate',
'sampleRate', 2, 1, 2,
'{\"required\":\"0\",\"defaultValue\":\"\",\"placeholder\":\"optional,0,0.01~1\"}',
'2022-05-25 18:02:53', '2022-05-25 18:02:53');
diff --git a/db/init/og/create-table.sql b/db/init/og/create-table.sql
index 0f35c1a36b..9802802a61 100644
--- a/db/init/og/create-table.sql
+++ b/db/init/og/create-table.sql
@@ -1368,6 +1368,20 @@ INSERT INTO "public"."plugin_handle" VALUES
('1722804370575548416', '45', 'exclu
INSERT INTO "public"."plugin_handle" VALUES ('1722804461256400896', '45',
'autoDelete', 'autoDelete', 2, 3, 0,
'{"required":"1","defaultValue":"false","placeholder":"true /
false","rule":"/^(true|false)$/"}', '2023-11-07 11:06:00.803', '2023-11-07
13:31:41.048');
INSERT INTO "public"."plugin_handle" VALUES ('1722804548510507008', '45',
'args', 'args', 2, 3, 0, '{"required":"0","defaultValue":"","placeholder":"args
json","rule":""}', '2023-11-07 11:06:00.803', '2023-11-07 13:31:41.048');
+INSERT INTO "public"."plugin_handle" VALUES ('1821435546642157568', '45',
'host', 'host', 2, 1, 0, '{"required":"0","defaultValue":"","rule":""}',
'2023-11-06 15:53:11.704', '2023-11-07 13:31:41.010');
+INSERT INTO "public"."plugin_handle" VALUES ('1821435708743618560', '45',
'port', 'port', 1, 1, 0, '{"required":"0","defaultValue":"","rule":""}',
'2023-11-06 15:53:50.352', '2023-11-07 13:31:41.016');
+INSERT INTO "public"."plugin_handle" VALUES ('1821436368046264320', '45',
'password', 'password', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}', '2023-11-06 15:56:27.541',
'2023-11-07 13:31:41.021');
+INSERT INTO "public"."plugin_handle" VALUES ('1821436500343001088', '45',
'username', 'username', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}', '2023-11-06 15:56:59.084',
'2023-11-07 13:31:41.025');
+INSERT INTO "public"."plugin_handle" VALUES ('1821436639635836928', '45',
'exchangeName', 'exchangeName', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}', '2023-11-06 15:57:32.295',
'2023-11-07 13:31:41.030');
+INSERT INTO "public"."plugin_handle" VALUES ('1821436745583955968', '45',
'queueName', 'queueName', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}', '2023-11-06 15:57:57.553',
'2023-11-07 13:31:41.035');
+INSERT INTO "public"."plugin_handle" VALUES ('1821509996347617280', '45',
'routingKey', 'routingKey', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}', '2023-11-06 20:49:01.897',
'2023-11-07 13:31:41.039');
+INSERT INTO "public"."plugin_handle" VALUES ('1821725585461706752', '45',
'virtualHost', 'virtualHost', 2, 1, 0,
'{"required":"0","defaultValue":"/","rule":""}', '2023-11-07 11:05:42.350',
'2023-11-07 13:31:41.044');
+INSERT INTO "public"."plugin_handle" VALUES ('1821725662875975680', '45',
'exchangeType', 'exchangeType', 2, 1, 0,
'{"required":"0","defaultValue":"direct","rule":""}', '2023-11-07
11:06:00.803', '2023-11-07 13:31:41.048');
+INSERT INTO "public"."plugin_handle" VALUES ('1822804180904927232', '45',
'durable', 'durable', 2, 1, 0,
'{"required":"0","defaultValue":"true","placeholder":"true /
false","rule":"/^(true|false)$/"}', '2023-11-07 11:06:00.803', '2023-11-07
13:31:41.048');
+INSERT INTO "public"."plugin_handle" VALUES ('1822804370575548416', '45',
'exclusive', 'exclusive', 2, 1, 0,
'{"required":"0","defaultValue":"false","placeholder":"true /
false","rule":"/^(true|false)$/"}', '2023-11-07 11:06:00.803', '2023-11-07
13:31:41.048');
+INSERT INTO "public"."plugin_handle" VALUES ('1822804461256400896', '45',
'autoDelete', 'autoDelete', 2, 1, 0,
'{"required":"0","defaultValue":"false","placeholder":"true /
false","rule":"/^(true|false)$/"}', '2023-11-07 11:06:00.803', '2023-11-07
13:31:41.048');
+INSERT INTO "public"."plugin_handle" VALUES ('1822804548510507008', '45',
'args', 'args', 2, 1, 0, '{"required":"0","defaultValue":"","placeholder":"args
json","rule":""}', '2023-11-07 11:06:00.803', '2023-11-07 13:31:41.048');
+
INSERT INTO "public"."plugin_handle" VALUES ('1722804548510507009', '45',
'sampleRate', 'sampleRate', 2, 3, 4,
'{"required":"0","defaultValue":"1","placeholder":"optional,0,0.01~1"}',
'2022-07-04 22:00:00', '2022-07-04 22:00:00');
INSERT INTO "public"."plugin_handle" VALUES ('1722804548510507010', '45',
'sampleRate', 'sampleRate', 2, 1, 2,
'{"required":"0","defaultValue":"","placeholder":"optional,0,0.01~1"}',
'2022-07-04 22:00:00', '2022-07-04 22:00:00');
diff --git a/db/init/oracle/schema.sql b/db/init/oracle/schema.sql
index 32fedb7a76..04c74d20ab 100644
--- a/db/init/oracle/schema.sql
+++ b/db/init/oracle/schema.sql
@@ -2176,6 +2176,44 @@ values ('1722804461256400896', '45', 'autoDelete',
'autoDelete', 2, 3, 0, '{"req
insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
values ('1722804548510507008', '45', 'args', 'args', 2, 3, 0,
'{"required":"0","defaultValue":"","placeholder":"","rule":"/^\\s*(\\{.*\\}|\\[.*\\])\\s*$/"}');
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
+values ('1821435546642157568', '45', 'host', 'host', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}');
+
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
+values ('1821435708743618560', '45', 'port', 'port', 1, 1, 0,
'{"required":"0","defaultValue":"","rule":""}');
+
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
+values ('1821436368046264320', '45', 'password', 'password', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}');
+
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
+values ('1821436500343001088', '45', 'username', 'username', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}');
+
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
+values ('1821436639635836928', '45', 'exchangeName', 'exchangeName', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}');
+
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
+values ('1821436745583955968', '45', 'queueName', 'queueName', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}');
+
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
+values ('1821509996347617280', '45', 'routingKey', 'routingKey', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}');
+
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
+values ('1821725585461706752', '45', 'virtualHost', 'virtualHost', 2, 1, 0,
'{"required":"0","defaultValue":"/","rule":""}');
+
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
+values ('1821725662875975680', '45', 'exchangeType', 'exchangeType', 2, 1, 0,
'{"required":"0","defaultValue":"direct","rule":""}');
+
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
+values ('1822804180904927232', '45', 'durable', 'durable', 2, 1, 0,
'{"required":"0","defaultValue":"true","placeholder":"true /
false","rule":"/^(true|false)$/"}');
+
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
+values ('1822804370575548416', '45', 'exclusive', 'exclusive', 2, 1, 0,
'{"required":"0","defaultValue":"false","placeholder":"true /
false","rule":"/^(true|false)$/"}');
+
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
+values ('1822804461256400896', '45', 'autoDelete', 'autoDelete', 2, 1, 0,
'{"required":"0","defaultValue":"false","placeholder":"true /
false","rule":"/^(true|false)$/"}');
+
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
+values ('1822804548510507008', '45', 'args', 'args', 2, 1, 0,
'{"required":"0","defaultValue":"","placeholder":"","rule":"/^\\s*(\\{.*\\}|\\[.*\\])\\s*$/"}');
insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
values ('1722804548510507009', '33', 'sampleRate', 'sampleRate', 2, 1, 2,
'{"required":"0","defaultValue":"","placeholder":"optional,0,0.01~1"}');
diff --git a/db/init/pg/create-table.sql b/db/init/pg/create-table.sql
index 4ae3172cf1..5cf29cce8f 100644
--- a/db/init/pg/create-table.sql
+++ b/db/init/pg/create-table.sql
@@ -1426,6 +1426,19 @@ INSERT INTO "public"."plugin_handle" VALUES
('1722804370575548416', '45', 'exclu
INSERT INTO "public"."plugin_handle" VALUES ('1722804461256400896', '45',
'autoDelete', 'autoDelete', 2, 3, 0,
'{"required":"1","defaultValue":"false","placeholder":"true /
false","rule":"/^(true|false)$/"}', '2023-11-07 11:06:00.803', '2023-11-07
13:31:41.048');
INSERT INTO "public"."plugin_handle" VALUES ('1722804548510507008', '45',
'args', 'args', 2, 3, 0, '{"required":"0","defaultValue":"","placeholder":"args
json","rule":""}', '2023-11-07 11:06:00.803', '2023-11-07 13:31:41.048');
+INSERT INTO "public"."plugin_handle" VALUES ('1821435546642157568', '45',
'host', 'host', 2, 1, 0, '{"required":"0","defaultValue":"","rule":""}',
'2023-11-06 15:53:11.704', '2023-11-07 13:31:41.010');
+INSERT INTO "public"."plugin_handle" VALUES ('1821435708743618560', '45',
'port', 'port', 1, 1, 0, '{"required":"0","defaultValue":"","rule":""}',
'2023-11-06 15:53:50.352', '2023-11-07 13:31:41.016');
+INSERT INTO "public"."plugin_handle" VALUES ('1821436368046264320', '45',
'password', 'password', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}', '2023-11-06 15:56:27.541',
'2023-11-07 13:31:41.021');
+INSERT INTO "public"."plugin_handle" VALUES ('1821436500343001088', '45',
'username', 'username', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}', '2023-11-06 15:56:59.084',
'2023-11-07 13:31:41.025');
+INSERT INTO "public"."plugin_handle" VALUES ('1821436639635836928', '45',
'exchangeName', 'exchangeName', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}', '2023-11-06 15:57:32.295',
'2023-11-07 13:31:41.030');
+INSERT INTO "public"."plugin_handle" VALUES ('1821436745583955968', '45',
'queueName', 'queueName', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}', '2023-11-06 15:57:57.553',
'2023-11-07 13:31:41.035');
+INSERT INTO "public"."plugin_handle" VALUES ('1821509996347617280', '45',
'routingKey', 'routingKey', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}', '2023-11-06 20:49:01.897',
'2023-11-07 13:31:41.039');
+INSERT INTO "public"."plugin_handle" VALUES ('1821725585461706752', '45',
'virtualHost', 'virtualHost', 2, 1, 0,
'{"required":"0","defaultValue":"/","rule":""}', '2023-11-07 11:05:42.350',
'2023-11-07 13:31:41.044');
+INSERT INTO "public"."plugin_handle" VALUES ('1821725662875975680', '45',
'exchangeType', 'exchangeType', 2, 1, 0,
'{"required":"0","defaultValue":"direct","rule":""}', '2023-11-07
11:06:00.803', '2023-11-07 13:31:41.048');
+INSERT INTO "public"."plugin_handle" VALUES ('1822804180904927232', '45',
'durable', 'durable', 2, 1, 0,
'{"required":"0","defaultValue":"true","placeholder":"true /
false","rule":"/^(true|false)$/"}', '2023-11-07 11:06:00.803', '2023-11-07
13:31:41.048');
+INSERT INTO "public"."plugin_handle" VALUES ('1822804370575548416', '45',
'exclusive', 'exclusive', 2, 1, 0,
'{"required":"0","defaultValue":"false","placeholder":"true /
false","rule":"/^(true|false)$/"}', '2023-11-07 11:06:00.803', '2023-11-07
13:31:41.048');
+INSERT INTO "public"."plugin_handle" VALUES ('1822804461256400896', '45',
'autoDelete', 'autoDelete', 2, 1, 0,
'{"required":"0","defaultValue":"false","placeholder":"true /
false","rule":"/^(true|false)$/"}', '2023-11-07 11:06:00.803', '2023-11-07
13:31:41.048');
+INSERT INTO "public"."plugin_handle" VALUES ('1822804548510507008', '45',
'args', 'args', 2, 1, 0, '{"required":"0","defaultValue":"","placeholder":"args
json","rule":""}', '2023-11-07 11:06:00.803', '2023-11-07 13:31:41.048');
INSERT INTO "public"."plugin_handle" VALUES ('1722804548510507009', '45',
'sampleRate', 'sampleRate', 2, 3, 4,
'{"required":"0","defaultValue":"1","placeholder":"optional,0,0.01~1"}',
'2022-07-04 22:00:00', '2022-07-04 22:00:00');
INSERT INTO "public"."plugin_handle" VALUES ('1722804548510507010', '45',
'sampleRate', 'sampleRate', 2, 1, 2,
'{"required":"0","defaultValue":"","placeholder":"optional,0,0.01~1"}',
'2022-07-04 22:00:00', '2022-07-04 22:00:00');
diff --git a/db/upgrade/2.7.0-upgrade-2.7.1-mysql.sql
b/db/upgrade/2.7.0-upgrade-2.7.1-mysql.sql
index 3b9e2a99e1..12aca0b15a 100755
--- a/db/upgrade/2.7.0-upgrade-2.7.1-mysql.sql
+++ b/db/upgrade/2.7.0-upgrade-2.7.1-mysql.sql
@@ -170,6 +170,22 @@ INSERT INTO `plugin_handle` VALUES ('1899702411294539776',
'51', 'timeWindowSeco
INSERT INTO `plugin_handle` VALUES ('1899702472330051584', '51', 'keyName',
'keyName', 2, 2, 2, '{\"required\":\"0\",\"rule\":\"\"}', '2025-03-12
06:02:18.707', '2025-03-12 06:02:18.707');
INSERT INTO `plugin_handle` VALUES ('1899702529972371456', '51', 'tokenLimit',
'tokenLimit', 1, 2, 3, '{\"required\":\"0\",\"rule\":\"\"}', '2025-03-12
06:02:32.450', '2025-03-12 06:02:32.450');
+DELETE FROM `plugin_handle` WHERE `plugin_id` = '8';
+
+INSERT INTO `plugin_handle` VALUES ('1821435546642157568', '45', 'host',
'host', 2, 1, 0, '{\"required\":\"0\",\"defaultValue\":\"\",\"rule\":\"\"}',
'2023-11-06 15:53:11.704', '2023-11-07 13:31:41.010');
+INSERT INTO `plugin_handle` VALUES ('1821435708743618560', '45', 'port',
'port', 1, 1, 0, '{\"required\":\"0\",\"defaultValue\":\"\",\"rule\":\"\"}',
'2023-11-06 15:53:50.352', '2023-11-07 13:31:41.016');
+INSERT INTO `plugin_handle` VALUES ('1821436368046264320', '45', 'password',
'password', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"\",\"rule\":\"\"}', '2023-11-06
15:56:27.541', '2023-11-07 13:31:41.021');
+INSERT INTO `plugin_handle` VALUES ('1821436500343001088', '45', 'username',
'username', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"\",\"rule\":\"\"}', '2023-11-06
15:56:59.084', '2023-11-07 13:31:41.025');
+INSERT INTO `plugin_handle` VALUES ('1821436639635836928', '45',
'exchangeName', 'exchangeName', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"\",\"rule\":\"\"}', '2023-11-06
15:57:32.295', '2023-11-07 13:31:41.030');
+INSERT INTO `plugin_handle` VALUES ('1821436745583955968', '45', 'queueName',
'queueName', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"\",\"rule\":\"\"}', '2023-11-06
15:57:57.553', '2023-11-07 13:31:41.035');
+INSERT INTO `plugin_handle` VALUES ('1821509996347617280', '45', 'routingKey',
'routingKey', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"\",\"rule\":\"\"}', '2023-11-06
20:49:01.897', '2023-11-07 13:31:41.039');
+INSERT INTO `plugin_handle` VALUES ('1821725585461706752', '45',
'virtualHost', 'virtualHost', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"/\",\"rule\":\"\"}', '2023-11-07
11:05:42.350', '2023-11-07 13:31:41.044');
+INSERT INTO `plugin_handle` VALUES ('1821725662875975680', '45',
'exchangeType', 'exchangeType', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"direct\",\"rule\":\"\"}', '2023-11-07
11:06:00.803', '2023-11-07 13:31:41.048');
+INSERT INTO `plugin_handle` VALUES ('1822804180904927232', '45', 'durable',
'durable', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"true\",\"placeholder\":\"true /
false\",\"rule\":\"/^(true|false)$/\"}', '2023-11-07 11:06:00.803', '2023-11-07
13:31:41.048');
+INSERT INTO `plugin_handle` VALUES ('1822804370575548416', '45', 'exclusive',
'exclusive', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"false\",\"placeholder\":\"true /
false\",\"rule\":\"/^(true|false)$/\"}', '2023-11-07 11:06:00.803', '2023-11-07
13:31:41.048');
+INSERT INTO `plugin_handle` VALUES ('1822804461256400896', '45', 'autoDelete',
'autoDelete', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"false\",\"placeholder\":\"true /
false\",\"rule\":\"/^(true|false)$/\"}', '2023-11-07 11:06:00.803', '2023-11-07
13:31:41.048');
+INSERT INTO `plugin_handle` VALUES ('1822804548510507008', '45', 'args',
'args', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":"",\"placeholder\":"",\"rule\":\"\"}',
'2023-1\1-07 11:06:00.803', '2023-11-07 13:31:41.048');
+
INSERT INTO `plugin_handle` VALUES ('1729402613204172859', '30', 'cacheType',
'cacheType', 3, 1, 1,
'{\"required\":\"1\",\"defaultValue\":\"memory\",\"rule\":\"\"}', '2022-05-25
18:02:53', '2022-05-25 18:02:53');
INSERT INTO `plugin_handle` VALUES ('1729402613204172860', '30', 'database',
'database', 1, 1, 2,
'{\"required\":\"0\",\"defaultValue\":\"0\",\"rule\":\"\"}', '2022-05-25
18:02:53', '2022-05-25 18:02:53');
INSERT INTO `plugin_handle` VALUES ('1729402613204172861', '30', 'master',
'master', 2, 1, 3, '{\"required\":\"0\",\"rule\":\"\"}', '2022-05-25 18:02:53',
'2022-05-25 18:02:53');
@@ -245,7 +261,7 @@ INSERT INTO `permission` VALUES ('1697146861569542759',
'1346358560427216896', '
INSERT INTO `permission` VALUES ('1697146861569542760', '1346358560427216896',
'1844026199075534869', '2023-08-31 07:18:37', '2023-08-31 07:18:37');
INSERT INTO `plugin_handle` VALUES ('1907263843073671168', '61',
'description', 'description', 2, 2, 0,
'{\"required\":\"1\",\"rule\":\"\",\"placeholder\":\"tools description\"}',
'2025-03-12 06:02:32.450', '2025-03-12 06:02:32.450');
-DELETE FROM `plugin_handle` WHERE `plugin_id` = '8';
+
INSERT INTO `plugin_handle` VALUES ('1529402613204173925', '6', 'registry',
'registry', 2, 1, 0, '{\"required\":\"0\",\"rule\":\"\"}', '2025-02-27
17:20:50.233', '2025-02-27 17:20:50.233');
UPDATE `plugin_handle` SET ext_obj = '{\"required\":\"0\",\"rule\":\"\"}'
WHERE plugin_id = '6' AND label = 'ip:port' AND data_type = 2;
diff --git a/db/upgrade/2.7.0-upgrade-2.7.1-ob.sql
b/db/upgrade/2.7.0-upgrade-2.7.1-ob.sql
index 8c96fd55c9..70257bcd8a 100755
--- a/db/upgrade/2.7.0-upgrade-2.7.1-ob.sql
+++ b/db/upgrade/2.7.0-upgrade-2.7.1-ob.sql
@@ -165,6 +165,22 @@ INSERT INTO `plugin_handle` VALUES ('1899702411294539776',
'51', 'timeWindowSeco
INSERT INTO `plugin_handle` VALUES ('1899702472330051584', '51', 'keyName',
'keyName', 2, 2, 2, '{\"required\":\"0\",\"rule\":\"\"}', '2025-03-12
06:02:18.707', '2025-03-12 06:02:18.707');
INSERT INTO `plugin_handle` VALUES ('1899702529972371456', '51', 'tokenLimit',
'tokenLimit', 1, 2, 3, '{\"required\":\"0\",\"rule\":\"\"}', '2025-03-12
06:02:32.450', '2025-03-12 06:02:32.450');
+DELETE FROM `plugin_handle` WHERE `plugin_id` = '8';
+
+INSERT INTO `plugin_handle` VALUES ('1821435546642157568', '45', 'host',
'host', 2, 1, 0, '{\"required\":\"0\",\"defaultValue\":\"\",\"rule\":\"\"}',
'2023-11-06 15:53:11.704', '2023-11-07 13:31:41.010');
+INSERT INTO `plugin_handle` VALUES ('1821435708743618560', '45', 'port',
'port', 1, 1, 0, '{\"required\":\"0\",\"defaultValue\":\"\",\"rule\":\"\"}',
'2023-11-06 15:53:50.352', '2023-11-07 13:31:41.016');
+INSERT INTO `plugin_handle` VALUES ('1821436368046264320', '45', 'password',
'password', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"\",\"rule\":\"\"}', '2023-11-06
15:56:27.541', '2023-11-07 13:31:41.021');
+INSERT INTO `plugin_handle` VALUES ('1821436500343001088', '45', 'username',
'username', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"\",\"rule\":\"\"}', '2023-11-06
15:56:59.084', '2023-11-07 13:31:41.025');
+INSERT INTO `plugin_handle` VALUES ('1821436639635836928', '45',
'exchangeName', 'exchangeName', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"\",\"rule\":\"\"}', '2023-11-06
15:57:32.295', '2023-11-07 13:31:41.030');
+INSERT INTO `plugin_handle` VALUES ('1821436745583955968', '45', 'queueName',
'queueName', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"\",\"rule\":\"\"}', '2023-11-06
15:57:57.553', '2023-11-07 13:31:41.035');
+INSERT INTO `plugin_handle` VALUES ('1821509996347617280', '45', 'routingKey',
'routingKey', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"\",\"rule\":\"\"}', '2023-11-06
20:49:01.897', '2023-11-07 13:31:41.039');
+INSERT INTO `plugin_handle` VALUES ('1821725585461706752', '45',
'virtualHost', 'virtualHost', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"/\",\"rule\":\"\"}', '2023-11-07
11:05:42.350', '2023-11-07 13:31:41.044');
+INSERT INTO `plugin_handle` VALUES ('1821725662875975680', '45',
'exchangeType', 'exchangeType', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"direct\",\"rule\":\"\"}', '2023-11-07
11:06:00.803', '2023-11-07 13:31:41.048');
+INSERT INTO `plugin_handle` VALUES ('1822804180904927232', '45', 'durable',
'durable', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"true\",\"placeholder\":\"true /
false\",\"rule\":\"/^(true|false)$/\"}', '2023-11-07 11:06:00.803', '2023-11-07
13:31:41.048');
+INSERT INTO `plugin_handle` VALUES ('1822804370575548416', '45', 'exclusive',
'exclusive', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"false\",\"placeholder\":\"true /
false\",\"rule\":\"/^(true|false)$/\"}', '2023-11-07 11:06:00.803', '2023-11-07
13:31:41.048');
+INSERT INTO `plugin_handle` VALUES ('1822804461256400896', '45', 'autoDelete',
'autoDelete', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":\"false\",\"placeholder\":\"true /
false\",\"rule\":\"/^(true|false)$/\"}', '2023-11-07 11:06:00.803', '2023-11-07
13:31:41.048');
+INSERT INTO `plugin_handle` VALUES ('1822804548510507008', '45', 'args',
'args', 2, 1, 0,
'{\"required\":\"0\",\"defaultValue\":"",\"placeholder\":"",\"rule\":\"\"}',
'2023-1\1-07 11:06:00.803', '2023-11-07 13:31:41.048');
+
INSERT INTO `plugin_handle` VALUES ('1729402613204172859', '30', 'cacheType',
'cacheType', 3, 1, 1,
'{\"required\":\"1\",\"defaultValue\":\"memory\",\"rule\":\"\"}', '2022-05-25
18:02:53', '2022-05-25 18:02:53');
INSERT INTO `plugin_handle` VALUES ('1729402613204172860', '30', 'database',
'database', 1, 1, 2,
'{\"required\":\"0\",\"defaultValue\":\"0\",\"rule\":\"\"}', '2022-05-25
18:02:53', '2022-05-25 18:02:53');
INSERT INTO `plugin_handle` VALUES ('1729402613204172861', '30', 'master',
'master', 2, 1, 3, '{\"required\":\"0\",\"rule\":\"\"}', '2022-05-25 18:02:53',
'2022-05-25 18:02:53');
@@ -213,7 +229,6 @@ INSERT INTO `permission` VALUES ('1697146860569742758',
'1346358560427216896', '
INSERT INTO `permission` VALUES ('1697146860569742759', '1346358560427216896',
'1844026099075564867', '2023-08-31 07:18:37', '2023-08-31 07:18:37');
INSERT INTO `permission` VALUES ('1697146860569742760', '1346358560427216896',
'1844026099075564868', '2023-08-31 07:18:37', '2023-08-31 07:18:37');
-DELETE FROM `plugin_handle` WHERE `plugin_id` = '8';
INSERT INTO `plugin_handle` VALUES ('1529402613204173925', '6', 'registry',
'registry', 2, 1, 0, '{\"required\":\"0\",\"rule\":\"\"}', '2025-02-27
17:20:50.233', '2025-02-27 17:20:50.233');
UPDATE `plugin_handle` SET ext_obj = '{\"required\":\"0\",\"rule\":\"\"}'
WHERE plugin_id = '6' AND label = 'ip:port' AND data_type = 2;
diff --git a/db/upgrade/2.7.0-upgrade-2.7.1-og.sql
b/db/upgrade/2.7.0-upgrade-2.7.1-og.sql
index 9defc8c350..72c6391fc6 100644
--- a/db/upgrade/2.7.0-upgrade-2.7.1-og.sql
+++ b/db/upgrade/2.7.0-upgrade-2.7.1-og.sql
@@ -179,6 +179,22 @@ INSERT INTO "public"."plugin_handle" VALUES
('1899702411294539776', '51', 'timeW
INSERT INTO "public"."plugin_handle" VALUES ('1899702472330051584', '51',
'keyName', 'keyName', 2, 2, 2, '{"required":"0","rule":""}', '2025-03-12
06:02:18.707', '2025-03-12 06:02:18.707');
INSERT INTO "public"."plugin_handle" VALUES ('1899702529972371456', '51',
'tokenLimit', 'tokenLimit', 1, 2, 3, '{"required":"0","rule":""}', '2025-03-12
06:02:32.450', '2025-03-12 06:02:32.450');
+DELETE FROM `plugin_handle` WHERE `plugin_id` = '8';
+
+INSERT INTO "public"."plugin_handle" VALUES ('1821435546642157568', '45',
'host', 'host', 2, 1, 0, '{"required":"0","defaultValue":"","rule":""}',
'2023-11-06 15:53:11.704', '2023-11-07 13:31:41.010');
+INSERT INTO "public"."plugin_handle" VALUES ('1821435708743618560', '45',
'port', 'port', 1, 1, 0, '{"required":"0","defaultValue":"","rule":""}',
'2023-11-06 15:53:50.352', '2023-11-07 13:31:41.016');
+INSERT INTO "public"."plugin_handle" VALUES ('1821436368046264320', '45',
'password', 'password', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}', '2023-11-06 15:56:27.541',
'2023-11-07 13:31:41.021');
+INSERT INTO "public"."plugin_handle" VALUES ('1821436500343001088', '45',
'username', 'username', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}', '2023-11-06 15:56:59.084',
'2023-11-07 13:31:41.025');
+INSERT INTO "public"."plugin_handle" VALUES ('1821436639635836928', '45',
'exchangeName', 'exchangeName', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}', '2023-11-06 15:57:32.295',
'2023-11-07 13:31:41.030');
+INSERT INTO "public"."plugin_handle" VALUES ('1821436745583955968', '45',
'queueName', 'queueName', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}', '2023-11-06 15:57:57.553',
'2023-11-07 13:31:41.035');
+INSERT INTO "public"."plugin_handle" VALUES ('1821509996347617280', '45',
'routingKey', 'routingKey', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}', '2023-11-06 20:49:01.897',
'2023-11-07 13:31:41.039');
+INSERT INTO "public"."plugin_handle" VALUES ('1821725585461706752', '45',
'virtualHost', 'virtualHost', 2, 1, 0,
'{"required":"0","defaultValue":"/","rule":""}', '2023-11-07 11:05:42.350',
'2023-11-07 13:31:41.044');
+INSERT INTO "public"."plugin_handle" VALUES ('1821725662875975680', '45',
'exchangeType', 'exchangeType', 2, 1, 0,
'{"required":"0","defaultValue":"direct","rule":""}', '2023-11-07
11:06:00.803', '2023-11-07 13:31:41.048');
+INSERT INTO "public"."plugin_handle" VALUES ('1822804180904927232', '45',
'durable', 'durable', 2, 1, 0,
'{"required":"0","defaultValue":"true","placeholder":"true /
false","rule":"/^(true|false)$/"}', '2023-11-07 11:06:00.803', '2023-11-07
13:31:41.048');
+INSERT INTO "public"."plugin_handle" VALUES ('1822804370575548416', '45',
'exclusive', 'exclusive', 2, 1, 0,
'{"required":"0","defaultValue":"false","placeholder":"true /
false","rule":"/^(true|false)$/"}', '2023-11-07 11:06:00.803', '2023-11-07
13:31:41.048');
+INSERT INTO "public"."plugin_handle" VALUES ('1822804461256400896', '45',
'autoDelete', 'autoDelete', 2, 1, 0,
'{"required":"0","defaultValue":"false","placeholder":"true /
false","rule":"/^(true|false)$/"}', '2023-11-07 11:06:00.803', '2023-11-07
13:31:41.048');
+INSERT INTO "public"."plugin_handle" VALUES ('1822804548510507008', '45',
'args', 'args', 2, 1, 0, '{"required":"0","defaultValue":"","placeholder":"args
json","rule":""}', '2023-11-07 11:06:00.803', '2023-11-07 13:31:41.048');
+
INSERT INTO "public"."plugin_handle" VALUES ('1529403902783524902', '30',
'cacheType', 'cacheType', 3, 1, 1,
'{"required":"1","defaultValue":"memory","rule":""}', '2022-05-25 18:08:01',
'2022-05-25 18:08:01');
INSERT INTO "public"."plugin_handle" VALUES ('1729403902783524903', '30',
'database', 'database', 1, 1, 2,
'{"required":"0","defaultValue":"0","rule":""}', '2022-05-25 18:08:01',
'2022-05-25 18:08:01');
INSERT INTO "public"."plugin_handle" VALUES ('1729403902783524904', '30',
'master', 'master', 2, 1, 3, '{"required":"0","rule":""}', '2022-05-25
18:08:01', '2022-05-25 18:08:01');
@@ -228,7 +244,6 @@ INSERT INTO "public"."permission" VALUES
('1697146860569742758', '13463585604272
INSERT INTO "public"."permission" VALUES ('1697146860569742759',
'1346358560427216896', '1844026099075564867', '2023-08-31 07:18:37',
'2023-08-31 07:18:37');
INSERT INTO "public"."permission" VALUES ('1697146860569742760',
'1346358560427216896', '1844026099075564868', '2023-08-31 07:18:37',
'2023-08-31 07:18:37');
-DELETE FROM `plugin_handle` WHERE `plugin_id` = '8';
INSERT INTO "public"."plugin_handle" VALUES ('1529402613204173925', '6',
'registry', 'registry', 2, 1, 0, '{"required":"0","rule":""}', '2025-02-27
17:20:50.233', '2025-02-27 17:20:50.233');
UPDATE "public"."plugin_handle" SET ext_obj = '{"required":"0","rule":""}'
WHERE plugin_id = '6' AND label = 'ip:port' AND data_type = 2;
diff --git a/db/upgrade/2.7.0-upgrade-2.7.1-oracle.sql
b/db/upgrade/2.7.0-upgrade-2.7.1-oracle.sql
index 0d59b21efd..e0762e9768 100755
--- a/db/upgrade/2.7.0-upgrade-2.7.1-oracle.sql
+++ b/db/upgrade/2.7.0-upgrade-2.7.1-oracle.sql
@@ -386,6 +386,47 @@ VALUES ('1899702529972371456', '51', 'tokenLimit',
'tokenLimit', 1, 2, 3, '{"req
INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
VALUES ('1529402613204173926', '6', 'registry', 'registry', 2, 1, 0,
'{"required":"0","placeholder":"","rule":""}');
+delete from plugin_handle where plugin_id = '8';
+
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
+values ('1821435546642157568', '45', 'host', 'host', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}');
+
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
+values ('1821435708743618560', '45', 'port', 'port', 1, 1, 0,
'{"required":"0","defaultValue":"","rule":""}');
+
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
+values ('1821436368046264320', '45', 'password', 'password', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}');
+
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
+values ('1821436500343001088', '45', 'username', 'username', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}');
+
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
+values ('1821436639635836928', '45', 'exchangeName', 'exchangeName', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}');
+
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
+values ('1821436745583955968', '45', 'queueName', 'queueName', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}');
+
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
+values ('1821509996347617280', '45', 'routingKey', 'routingKey', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}');
+
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
+values ('1821725585461706752', '45', 'virtualHost', 'virtualHost', 2, 1, 0,
'{"required":"0","defaultValue":"/","rule":""}');
+
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
+values ('1821725662875975680', '45', 'exchangeType', 'exchangeType', 2, 1, 0,
'{"required":"0","defaultValue":"direct","rule":""}');
+
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
+values ('1822804180904927232', '45', 'durable', 'durable', 2, 1, 0,
'{"required":"0","defaultValue":"true","placeholder":"true /
false","rule":"/^(true|false)$/"}');
+
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
+values ('1822804370575548416', '45', 'exclusive', 'exclusive', 2, 1, 0,
'{"required":"0","defaultValue":"false","placeholder":"true /
false","rule":"/^(true|false)$/"}');
+
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
+values ('1822804461256400896', '45', 'autoDelete', 'autoDelete', 2, 1, 0,
'{"required":"0","defaultValue":"false","placeholder":"true /
false","rule":"/^(true|false)$/"}');
+
+insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
+values ('1822804548510507008', '45', 'args', 'args', 2, 1, 0,
'{"required":"0","defaultValue":"","placeholder":"","rule":"/^\\s*(\\{.*\\}|\\[.*\\])\\s*$/"}');
+
insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(plugin_handle(plugin_id, field, type))
*/ into plugin_handle (ID, PLUGIN_ID, FIELD, LABEL, DATA_TYPE, TYPE, SORT,
EXT_OBJ)
values ('1718229897214468163', '30', 'cacheType', 'cacheType', 3, 1, 1,
'{"required":"1","defaultValue":"memory","rule":""}');
diff --git a/db/upgrade/2.7.0-upgrade-2.7.1-pg.sql
b/db/upgrade/2.7.0-upgrade-2.7.1-pg.sql
index a1949b578b..beabbef9f9 100755
--- a/db/upgrade/2.7.0-upgrade-2.7.1-pg.sql
+++ b/db/upgrade/2.7.0-upgrade-2.7.1-pg.sql
@@ -179,6 +179,22 @@ INSERT INTO "public"."plugin_handle" VALUES
('1899702529972371456', '51', 'token
INSERT INTO "public"."plugin_handle" VALUES ('1529402613204173925', '6',
'registry', 'registry', 2, 1, 0, '{"required":"0","rule":""}', '2025-02-27
17:20:50.233', '2025-02-27 17:20:50.233');
UPDATE "public"."plugin_handle" SET ext_obj = '{"required":"0","rule":""}'
WHERE plugin_id = '6' AND label = 'ip:port' AND data_type = 2;
+DELETE FROM "public"."plugin_handle" WHERE plugin_id = '8';
+
+INSERT INTO "public"."plugin_handle" VALUES ('1821435546642157568', '45',
'host', 'host', 2, 1, 0, '{"required":"0","defaultValue":"","rule":""}',
'2023-11-06 15:53:11.704', '2023-11-07 13:31:41.010');
+INSERT INTO "public"."plugin_handle" VALUES ('1821435708743618560', '45',
'port', 'port', 1, 1, 0, '{"required":"0","defaultValue":"","rule":""}',
'2023-11-06 15:53:50.352', '2023-11-07 13:31:41.016');
+INSERT INTO "public"."plugin_handle" VALUES ('1821436368046264320', '45',
'password', 'password', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}', '2023-11-06 15:56:27.541',
'2023-11-07 13:31:41.021');
+INSERT INTO "public"."plugin_handle" VALUES ('1821436500343001088', '45',
'username', 'username', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}', '2023-11-06 15:56:59.084',
'2023-11-07 13:31:41.025');
+INSERT INTO "public"."plugin_handle" VALUES ('1821436639635836928', '45',
'exchangeName', 'exchangeName', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}', '2023-11-06 15:57:32.295',
'2023-11-07 13:31:41.030');
+INSERT INTO "public"."plugin_handle" VALUES ('1821436745583955968', '45',
'queueName', 'queueName', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}', '2023-11-06 15:57:57.553',
'2023-11-07 13:31:41.035');
+INSERT INTO "public"."plugin_handle" VALUES ('1821509996347617280', '45',
'routingKey', 'routingKey', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}', '2023-11-06 20:49:01.897',
'2023-11-07 13:31:41.039');
+INSERT INTO "public"."plugin_handle" VALUES ('1821725585461706752', '45',
'virtualHost', 'virtualHost', 2, 1, 0,
'{"required":"0","defaultValue":"/","rule":""}', '2023-11-07 11:05:42.350',
'2023-11-07 13:31:41.044');
+INSERT INTO "public"."plugin_handle" VALUES ('1821725662875975680', '45',
'exchangeType', 'exchangeType', 2, 1, 0,
'{"required":"0","defaultValue":"direct","rule":""}', '2023-11-07
11:06:00.803', '2023-11-07 13:31:41.048');
+INSERT INTO "public"."plugin_handle" VALUES ('1822804180904927232', '45',
'durable', 'durable', 2, 1, 0,
'{"required":"0","defaultValue":"true","placeholder":"true /
false","rule":"/^(true|false)$/"}', '2023-11-07 11:06:00.803', '2023-11-07
13:31:41.048');
+INSERT INTO "public"."plugin_handle" VALUES ('1822804370575548416', '45',
'exclusive', 'exclusive', 2, 1, 0,
'{"required":"0","defaultValue":"false","placeholder":"true /
false","rule":"/^(true|false)$/"}', '2023-11-07 11:06:00.803', '2023-11-07
13:31:41.048');
+INSERT INTO "public"."plugin_handle" VALUES ('1822804461256400896', '45',
'autoDelete', 'autoDelete', 2, 1, 0,
'{"required":"0","defaultValue":"false","placeholder":"true /
false","rule":"/^(true|false)$/"}', '2023-11-07 11:06:00.803', '2023-11-07
13:31:41.048');
+INSERT INTO "public"."plugin_handle" VALUES ('1822804548510507008', '45',
'args', 'args', 2, 1, 0, '{"required":"0","defaultValue":"","placeholder":"args
json","rule":""}', '2023-11-07 11:06:00.803', '2023-11-07 13:31:41.048');
+
INSERT INTO "public"."plugin_handle" VALUES ('1729403902783524902', '30',
'cacheType', 'cacheType', 3, 1, 1,
'{"required":"1","defaultValue":"memory","rule":""}', '2022-05-25 18:08:01',
'2022-05-25 18:08:01');
INSERT INTO "public"."plugin_handle" VALUES ('1729403902783524903', '30',
'database', 'database', 1, 1, 2,
'{"required":"0","defaultValue":"0","rule":""}', '2022-05-25 18:08:01',
'2022-05-25 18:08:01');
INSERT INTO "public"."plugin_handle" VALUES ('1729403902783524904', '30',
'master', 'master', 2, 1, 3, '{"required":"0","rule":""}', '2022-05-25
18:08:01', '2022-05-25 18:08:01');
@@ -227,8 +243,6 @@ INSERT INTO "public"."permission" VALUES
('1697146860569742758', '13463585604272
INSERT INTO "public"."permission" VALUES ('1697146860569742759',
'1346358560427216896', '1844026099075564867', '2023-08-31 07:18:37',
'2023-08-31 07:18:37');
INSERT INTO "public"."permission" VALUES ('1697146860569742760',
'1346358560427216896', '1844026099075564868', '2023-08-31 07:18:37',
'2023-08-31 07:18:37');
-DELETE FROM "public"."plugin_handle" WHERE plugin_id = '8';
-
INSERT INTO "public"."plugin_handle" VALUES ('1829403902783524879', '17',
'registerProtocol', 'registerProtocol', 2, 1, 0,
'{"required":"0","defaultValue":"","placeholder":"registerProtocol","rule":""}',
'2022-05-25 18:08:01', '2022-05-25 18:08:01');
INSERT INTO "public"."plugin_handle" VALUES ('1878997557628272641', '17',
'registerAddress', 'registerAddress', 2, 1, 1,
'{"required":"0","defaultValue":"","placeholder":"registerAddress","rule":""}',
'2022-05-25 18:08:01', '2022-05-25 18:08:01');
INSERT INTO "public"."plugin_handle" VALUES ('1829403902783524880', '17',
'corethreads', 'corethreads', 1, 1, 2,
'{"required":"0","defaultValue":"","placeholder":"corethreads","rule":""}',
'2022-05-25 18:08:01', '2022-05-25 18:08:01');
diff --git a/shenyu-admin/src/main/resources/sql-script/h2/schema.sql
b/shenyu-admin/src/main/resources/sql-script/h2/schema.sql
index 804e8ea776..96ceda58df 100644
--- a/shenyu-admin/src/main/resources/sql-script/h2/schema.sql
+++ b/shenyu-admin/src/main/resources/sql-script/h2/schema.sql
@@ -945,6 +945,20 @@ INSERT IGNORE INTO plugin_handle (`id`,
`plugin_id`,`field`,`label`,`data_type`,
INSERT IGNORE INTO plugin_handle (`id`,
`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`) VALUES
('1722804461256400896', '45', 'autoDelete', 'autoDelete', 2, 3, 0,
'{"required":"1","defaultValue":"false","placeholder":"true /
false","rule":"/^(true|false)$/"}');
INSERT IGNORE INTO plugin_handle (`id`,
`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`) VALUES
('1722804548510507008', '45', 'args', 'args', 2, 3, 0,
'{"required":"0","defaultValue":"","placeholder":"","rule":""}');
+INSERT IGNORE INTO plugin_handle (`id`,
`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`) VALUES
('1821435546642157568', '45', 'host', 'host', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}');
+INSERT IGNORE INTO plugin_handle (`id`,
`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`) VALUES
('1821435708743618560', '45', 'port', 'port', 1, 1, 0,
'{"required":"0","defaultValue":"","rule":""}');
+INSERT IGNORE INTO plugin_handle (`id`,
`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`) VALUES
('1821436368046264320', '45', 'password', 'password', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}');
+INSERT IGNORE INTO plugin_handle (`id`,
`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`) VALUES
('1821436500343001088', '45', 'username', 'username', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}');
+INSERT IGNORE INTO plugin_handle (`id`,
`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`) VALUES
('1821436639635836928', '45', 'exchangeName', 'exchangeName', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}');
+INSERT IGNORE INTO plugin_handle (`id`,
`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`) VALUES
('1821436745583955968', '45', 'queueName', 'queueName', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}');
+INSERT IGNORE INTO plugin_handle (`id`,
`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`) VALUES
('1821509996347617280', '45', 'routingKey', 'routingKey', 2, 1, 0,
'{"required":"0","defaultValue":"","rule":""}');
+INSERT IGNORE INTO plugin_handle (`id`,
`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`) VALUES
('1821725585461706752', '45', 'virtualHost', 'virtualHost', 2, 1, 0,
'{"required":"0","defaultValue":"/","rule":""}');
+INSERT IGNORE INTO plugin_handle (`id`,
`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`) VALUES
('1821725662875975680', '45', 'exchangeType', 'exchangeType', 2, 1, 0,
'{"required":"0","defaultValue":"direct","rule":""}');
+INSERT IGNORE INTO plugin_handle (`id`,
`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`) VALUES
('1822804180904927232', '45', 'durable', 'durable', 2, 1, 0,
'{"required":"0","defaultValue":"true","placeholder":"true /
false","rule":"/^(true|false)$/"}');
+INSERT IGNORE INTO plugin_handle (`id`,
`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`) VALUES
('1822804370575548416', '45', 'exclusive', 'exclusive', 2, 1, 0,
'{"required":"0","defaultValue":"false","placeholder":"true /
false","rule":"/^(true|false)$/"}');
+INSERT IGNORE INTO plugin_handle (`id`,
`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`) VALUES
('1822804461256400896', '45', 'autoDelete', 'autoDelete', 2, 1, 0,
'{"required":"0","defaultValue":"false","placeholder":"true /
false","rule":"/^(true|false)$/"}');
+INSERT IGNORE INTO plugin_handle (`id`,
`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`) VALUES
('1822804548510507008', '45', 'args', 'args', 2, 1, 0,
'{"required":"0","defaultValue":"","placeholder":"","rule":""}');
+
INSERT IGNORE INTO plugin_handle (`id`,
`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`) VALUES
('1722804548510507009', '33', 'sampleRate', 'sampleRate', 2, 1, 2,
'{"required":"0","defaultValue":"","placeholder":"optional,0,0.01~1"}');
INSERT IGNORE INTO plugin_handle (`id`,
`plugin_id`,`field`,`label`,`data_type`,`type`,`sort`,`ext_obj`) VALUES
('1722804548510507010', '45', 'sampleRate', 'sampleRate', 2, 3, 4,
'{"required":"0","defaultValue":"1","placeholder":"optional,0,0.01~1"}');
diff --git
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-common/src/main/java/org/apache/shenyu/plugin/logging/common/AbstractLoggingPlugin.java
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-common/src/main/java/org/apache/shenyu/plugin/logging/common/AbstractLoggingPlugin.java
index 0374f1af73..ae704e5cd2 100644
---
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-common/src/main/java/org/apache/shenyu/plugin/logging/common/AbstractLoggingPlugin.java
+++
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-common/src/main/java/org/apache/shenyu/plugin/logging/common/AbstractLoggingPlugin.java
@@ -47,6 +47,7 @@ import java.util.Objects;
import java.util.Optional;
import java.util.Set;
+
/**
* abstract logging plugin.
*/
diff --git
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-common/src/main/java/org/apache/shenyu/plugin/logging/common/collector/AbstractLogCollector.java
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-common/src/main/java/org/apache/shenyu/plugin/logging/common/collector/AbstractLogCollector.java
index 254c2738a1..78f5642f5b 100644
---
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-common/src/main/java/org/apache/shenyu/plugin/logging/common/collector/AbstractLogCollector.java
+++
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-common/src/main/java/org/apache/shenyu/plugin/logging/common/collector/AbstractLogCollector.java
@@ -17,6 +17,7 @@
package org.apache.shenyu.plugin.logging.common.collector;
+import com.google.common.collect.Maps;
import org.apache.shenyu.common.concurrent.MemorySafeTaskQueue;
import org.apache.shenyu.common.concurrent.ShenyuThreadFactory;
import org.apache.shenyu.common.concurrent.ShenyuThreadPoolExecutor;
@@ -32,8 +33,10 @@ import
org.apache.shenyu.plugin.logging.desensitize.api.matcher.KeyWordMatch;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.BlockingQueue;
@@ -57,6 +60,10 @@ public abstract class AbstractLogCollector<T extends
AbstractLogConsumeClient<?,
private BlockingQueue<L> bufferQueue;
+ private final Map<String, BlockingQueue<L>> bufferQueueS =
Maps.newConcurrentMap();
+
+ private final Map<String, Long> lastPushTimeS = Maps.newConcurrentMap();
+
private long lastPushTime;
private final AtomicBoolean started = new AtomicBoolean(true);
@@ -78,11 +85,19 @@ public abstract class AbstractLogCollector<T extends
AbstractLogConsumeClient<?,
@Override
public void collect(final L log) {
- if (Objects.isNull(log) || Objects.isNull(getLogConsumeClient())) {
+ if (Objects.isNull(log) ||
Objects.isNull(getLogConsumeClient(log.getSelectorId()))) {
return;
}
- if (bufferQueue.size() < bufferSize) {
- bufferQueue.add(log);
+ if (getMultiClient()) {
+ String selectorId = log.getSelectorId();
+ BlockingQueue<L> bufferQueue =
bufferQueueS.computeIfAbsent(selectorId, bufferQueueS -> initQueue(selectorId));
+ if (bufferQueue.size() < bufferSize) {
+ bufferQueue.add(log);
+ }
+ } else {
+ if (bufferQueue.size() < bufferSize) {
+ bufferQueue.add(log);
+ }
}
}
@@ -100,19 +115,19 @@ public abstract class AbstractLogCollector<T extends
AbstractLogConsumeClient<?,
int diffTimeMSForPush = 100;
try {
List<L> logs = new ArrayList<>();
- int size = bufferQueue.size();
- long time = System.currentTimeMillis();
- long timeDiffMs = time - lastPushTime;
int batchSize = 100;
- if (size >= batchSize || timeDiffMs > diffTimeMSForPush) {
- bufferQueue.drainTo(logs, batchSize);
- AbstractLogConsumeClient<?, L> logCollectClient =
getLogConsumeClient();
- if (Objects.nonNull(logCollectClient)) {
- logCollectClient.consume(logs);
- }
- lastPushTime = time;
+ if (getMultiClient()) {
+ bufferQueueS.forEach((selectorId, bufferQueue) -> {
+ List<L> logsS = new ArrayList<>();
+ Long lastPushTime = lastPushTimeS.get(selectorId);
+ try {
+ processBufferQueue(bufferQueue, batchSize,
diffTimeMSForPush, logsS, lastPushTime, selectorId);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ });
} else {
- ThreadUtils.sleep(TimeUnit.MILLISECONDS,
diffTimeMSForPush);
+ processBufferQueue(bufferQueue, batchSize,
diffTimeMSForPush, logs, lastPushTime);
}
} catch (Throwable t) {
LOG.error("DefaultLogCollector collect log error", t);
@@ -121,6 +136,51 @@ public abstract class AbstractLogCollector<T extends
AbstractLogConsumeClient<?,
}
}
+ private BlockingQueue<L> initQueue(final String selectorId) {
+ bufferSize = getLogCollectConfig().getBufferQueueSize();
+ bufferQueue = new LinkedBlockingDeque<>(bufferSize);
+ lastPushTimeS.put(selectorId, System.currentTimeMillis());
+ return bufferQueue;
+ }
+
+ private void processBufferQueue(final BlockingQueue<L> bufferQueue, final
int batchSize,
+ final int diffTimeMSForPush, final List<L>
logs,
+ final Long lastPushTime, final String
selectorId) throws Exception {
+ int size = bufferQueue.size();
+ long time = System.currentTimeMillis();
+ long timeDiffMs = time - lastPushTime;
+
+ if (size >= batchSize || timeDiffMs > diffTimeMSForPush) {
+ bufferQueue.drainTo(logs, batchSize);
+ AbstractLogConsumeClient<?, L> logCollectClient =
getLogConsumeClient(selectorId);
+ if (Objects.nonNull(logCollectClient)) {
+ logCollectClient.consume(logs);
+ }
+ lastPushTimeS.put(selectorId, time);
+ } else {
+ ThreadUtils.sleep(TimeUnit.MILLISECONDS, diffTimeMSForPush);
+ }
+ }
+
+ private void processBufferQueue(final BlockingQueue<L> bufferQueue, final
int batchSize,
+ final int diffTimeMSForPush, final List<L>
logs,
+ final Long lastPushTime) throws Exception {
+ int size = bufferQueue.size();
+ long time = System.currentTimeMillis();
+ long timeDiffMs = time - lastPushTime;
+
+ if (size >= batchSize || timeDiffMs > diffTimeMSForPush) {
+ bufferQueue.drainTo(logs, batchSize);
+ AbstractLogConsumeClient<?, L> logCollectClient =
getLogConsumeClient();
+ if (Objects.nonNull(logCollectClient)) {
+ logCollectClient.consume(logs);
+ }
+ this.lastPushTime = time;
+ } else {
+ ThreadUtils.sleep(TimeUnit.MILLISECONDS, diffTimeMSForPush);
+ }
+ }
+
private void desensitizeShenyuRequestLog(final L logInfo, final
KeyWordMatch keyWordMatch, final String desensitizedAlg) {
logInfo.setClientIp(desensitizeForSingleWord(GenericLoggingConstant.CLIENT_IP,
logInfo.getClientIp(), keyWordMatch, desensitizedAlg));
logInfo.setTimeLocal(desensitizeForSingleWord(GenericLoggingConstant.TIME_LOCAL,
logInfo.getTimeLocal(), keyWordMatch, desensitizedAlg));
@@ -158,6 +218,24 @@ public abstract class AbstractLogCollector<T extends
AbstractLogConsumeClient<?,
*/
protected abstract T getLogConsumeClient();
+ /**
+ * get log consume client by selectorId.
+ *
+ * @return log consume client
+ */
+ protected T getLogConsumeClient(final String path) {
+ return getLogConsumeClient();
+ }
+
+ /**
+ * getMultiClient.
+ *
+ * @return multiClient
+ */
+ protected boolean getMultiClient() {
+ return false;
+ }
+
/**
* get log collect config.
*
diff --git
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-common/src/main/java/org/apache/shenyu/plugin/logging/common/collector/LogCollector.java
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-common/src/main/java/org/apache/shenyu/plugin/logging/common/collector/LogCollector.java
index 4bd0588b2c..c1ec216534 100644
---
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-common/src/main/java/org/apache/shenyu/plugin/logging/common/collector/LogCollector.java
+++
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-common/src/main/java/org/apache/shenyu/plugin/logging/common/collector/LogCollector.java
@@ -45,4 +45,5 @@ public interface LogCollector<L extends ShenyuRequestLog>
extends AutoCloseable
* @param log access log
*/
void collect(L log);
+
}
diff --git
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/main/java/org/apache/shenyu/plugin/logging/rabbitmq/cache/RabbitmqClientCache.java
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/main/java/org/apache/shenyu/plugin/logging/rabbitmq/cache/RabbitmqClientCache.java
new file mode 100644
index 0000000000..35cafe569d
--- /dev/null
+++
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/main/java/org/apache/shenyu/plugin/logging/rabbitmq/cache/RabbitmqClientCache.java
@@ -0,0 +1,150 @@
+/*
+ * 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.shenyu.plugin.logging.rabbitmq.cache;
+
+import com.google.common.collect.Maps;
+import org.apache.shenyu.common.utils.Singleton;
+import
org.apache.shenyu.plugin.logging.rabbitmq.client.RabbitmqLogCollectClient;
+import
org.apache.shenyu.plugin.logging.rabbitmq.config.RabbitmqLogCollectConfig;
+
+import java.util.Map;
+import java.util.Objects;
+
+import static org.apache.shenyu.plugin.api.ShenyuPlugin.LOG;
+
+/**
+ * rabbitmq client cache.
+ */
+public class RabbitmqClientCache {
+
+ private static final Map<String, RabbitmqLogCollectClient> CLIENT_CACHE =
Maps.newConcurrentMap();
+
+ public RabbitmqClientCache() {
+ }
+
+ /**
+ * Gets instance.
+ *
+ * @return the instance
+ */
+ public static RabbitmqClientCache getInstance() {
+ return ApplicationConfigCacheInstance.INSTANCE;
+ }
+
+ /**
+ * Init client.
+ *
+ * @param selectorId selectorId
+ * @param rabbitmqLogUpstream rabbitmqLogUpstream
+ */
+ public void initRabbitmqClient(final String selectorId, final
RabbitmqLogCollectConfig.LogApiConfig rabbitmqLogUpstream) {
+ RabbitmqLogCollectConfig.RabbitmqLogConfig globalLogConfig =
Singleton.INST.get(RabbitmqLogCollectConfig.RabbitmqLogConfig.class);
+ if (Objects.nonNull(rabbitmqLogUpstream) &&
Objects.nonNull(rabbitmqLogUpstream.getHost())) {
+ globalLogConfig = copyConfig(rabbitmqLogUpstream);
+ }
+ RabbitmqLogCollectClient rabbitmqLogCollectClient = new
RabbitmqLogCollectClient();
+ rabbitmqLogCollectClient.initClient(globalLogConfig);
+ CLIENT_CACHE.put(selectorId, rabbitmqLogCollectClient);
+ }
+
+ /**
+ * Get the client.
+ *
+ * @param path path
+ * @return Channel channel
+ */
+ public RabbitmqLogCollectClient getRabbitmqClient(final String path) {
+ return CLIENT_CACHE.get(path);
+ }
+
+ /**
+ * getClientCache.
+ *
+ * @return clientCache
+ */
+ public Map<String, RabbitmqLogCollectClient> getClientCache() {
+ return CLIENT_CACHE;
+ }
+
+ /**
+ * invalidate the client by selectorId.
+ *
+ * @param path path
+ */
+ public void invalidate(final String path) {
+ RabbitmqLogCollectClient client = CLIENT_CACHE.get(path);
+ if (Objects.nonNull(client)) {
+ client.close();
+ CLIENT_CACHE.remove(path);
+ }
+ }
+
+ /**
+ * invalidate all client.
+ */
+ public void invalidateAll() {
+ if (CLIENT_CACHE.isEmpty()) {
+ return;
+ }
+
+ CLIENT_CACHE.values().forEach(client -> {
+ try {
+ if (Objects.nonNull(client)) {
+ client.close();
+ }
+ } catch (Exception e) {
+ LOG.error("Failed to close client {}", client, e);
+ }
+ });
+
+ CLIENT_CACHE.clear();
+ }
+
+ public static RabbitmqLogCollectConfig.RabbitmqLogConfig copyConfig(final
RabbitmqLogCollectConfig.LogApiConfig rabbitmqLogUpstream) {
+ RabbitmqLogCollectConfig.RabbitmqLogConfig rabbitmqLogConfig = new
RabbitmqLogCollectConfig.RabbitmqLogConfig();
+ rabbitmqLogConfig.setQueueName(rabbitmqLogUpstream.getQueueName());
+ rabbitmqLogConfig.setHost(rabbitmqLogUpstream.getHost());
+ rabbitmqLogConfig.setPort(rabbitmqLogUpstream.getPort());
+ rabbitmqLogConfig.setUsername(rabbitmqLogUpstream.getUsername());
+ rabbitmqLogConfig.setPassword(rabbitmqLogUpstream.getPassword());
+ rabbitmqLogConfig.setRoutingKey(rabbitmqLogUpstream.getRoutingKey());
+
rabbitmqLogConfig.setExchangeName(rabbitmqLogUpstream.getExchangeName());
+
rabbitmqLogConfig.setExchangeType(rabbitmqLogUpstream.getExchangeType());
+ rabbitmqLogConfig.setVirtualHost(rabbitmqLogUpstream.getVirtualHost());
+ rabbitmqLogConfig.setExclusive(rabbitmqLogUpstream.getExclusive());
+ rabbitmqLogConfig.setDurable(rabbitmqLogUpstream.getDurable());
+ rabbitmqLogConfig.setAutoDelete(rabbitmqLogUpstream.getAutoDelete());
+ rabbitmqLogConfig.setArgs(rabbitmqLogUpstream.getArgs());
+ return rabbitmqLogConfig;
+ }
+
+ /**
+ * The type Application config cache instance.
+ */
+ static final class ApplicationConfigCacheInstance {
+
+ /**
+ * The Instance.
+ */
+ static final RabbitmqClientCache INSTANCE = new RabbitmqClientCache();
+
+ private ApplicationConfigCacheInstance() {
+
+ }
+ }
+}
diff --git
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/main/java/org/apache/shenyu/plugin/logging/rabbitmq/config/RabbitmqLogCollectConfig.java
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/main/java/org/apache/shenyu/plugin/logging/rabbitmq/config/RabbitmqLogCollectConfig.java
index 26a1e580f7..c53c1290f1 100644
---
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/main/java/org/apache/shenyu/plugin/logging/rabbitmq/config/RabbitmqLogCollectConfig.java
+++
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/main/java/org/apache/shenyu/plugin/logging/rabbitmq/config/RabbitmqLogCollectConfig.java
@@ -358,5 +358,324 @@ public class RabbitmqLogCollectConfig {
* api log config.
*/
public static class LogApiConfig extends GenericApiConfig {
+
+ private String queueName;
+
+ private String exchangeName;
+
+ private String host;
+
+ private Integer port;
+
+ private String username;
+
+ private String password;
+
+ private String routingKey;
+
+ private String exchangeType;
+
+ private String virtualHost;
+
+ private Boolean durable;
+
+ private Boolean exclusive;
+
+ private Boolean autoDelete;
+
+ private Map<String, Object> args;
+
+ /**
+ * get Durable.
+ *
+ * @return Durable
+ */
+ public Boolean getDurable() {
+ return durable;
+ }
+
+ /**
+ * set Durable.
+ *
+ * @param durable Durable
+ */
+ public void setDurable(final Boolean durable) {
+ this.durable = durable;
+ }
+
+ /**
+ * get Exclusive.
+ *
+ * @return Exclusive
+ */
+ public Boolean getExclusive() {
+ return exclusive;
+ }
+
+ /**
+ * set Exclusive.
+ *
+ * @param exclusive Exclusive
+ */
+ public void setExclusive(final Boolean exclusive) {
+ this.exclusive = exclusive;
+ }
+
+ /**
+ * get AutoDelete.
+ *
+ * @return AutoDelete
+ */
+ public Boolean getAutoDelete() {
+ return autoDelete;
+ }
+
+ /**
+ * set AutoDelete.
+ *
+ * @param autoDelete AutoDelete
+ */
+ public void setAutoDelete(final Boolean autoDelete) {
+ this.autoDelete = autoDelete;
+ }
+
+ /**
+ * get Rabbitmq Args.
+ *
+ * @return Rabbitmq Args
+ */
+ public Map<String, Object> getArgs() {
+ return args;
+ }
+
+ /**
+ * set Rabbitmq Args.
+ *
+ * @param args Rabbitmq Args
+ */
+ public void setArgs(@javax.annotation.Nullable final Map<String,
Object> args) {
+ this.args = args;
+ }
+
+ /**
+ * get VirtualHost.
+ *
+ * @return VirtualHost
+ */
+ public String getVirtualHost() {
+ return virtualHost;
+ }
+
+ /**
+ * set VirtualHost.
+ *
+ * @param virtualHost VirtualHost
+ */
+ public void setVirtualHost(final String virtualHost) {
+ this.virtualHost = virtualHost;
+ }
+
+ /**
+ * get exchangeType.
+ *
+ * @return exchangeType
+ */
+ public String getExchangeType() {
+ return exchangeType;
+ }
+
+ /**
+ * set exchangeType.
+ *
+ * @param exchangeType exchangeType
+ */
+ public void setExchangeType(final String exchangeType) {
+ this.exchangeType = exchangeType;
+ }
+
+ /**
+ * Get RabbitMQ routingKey.
+ *
+ * @return RabbitMQ routingKey
+ */
+ public String getRoutingKey() {
+ return routingKey;
+ }
+
+ /**
+ * Set RabbitMQ routingKey.
+ *
+ * @param routingKey RabbitMQ routingKey
+ */
+ public void setRoutingKey(final String routingKey) {
+ this.routingKey = routingKey;
+ }
+
+ /**
+ * Get RabbitMQ queue name.
+ *
+ * @return Queue name
+ */
+ public String getQueueName() {
+ return queueName;
+ }
+
+ /**
+ * Set RabbitMQ queue name.
+ *
+ * @param queueName Queue name
+ */
+ public void setQueueName(final String queueName) {
+ this.queueName = queueName;
+ }
+
+ /**
+ * Get RabbitMQ exchange name.
+ *
+ * @return Exchange name
+ */
+ public String getExchangeName() {
+ return exchangeName;
+ }
+
+ /**
+ * Set RabbitMQ exchange name.
+ *
+ * @param exchangeName Exchange name
+ */
+ public void setExchangeName(final String exchangeName) {
+ this.exchangeName = exchangeName;
+ }
+
+ /**
+ * Get RabbitMQ host.
+ *
+ * @return Host
+ */
+ public String getHost() {
+ return host;
+ }
+
+ /**
+ * Set RabbitMQ host.
+ *
+ * @param host Host
+ */
+ public void setHost(final String host) {
+ this.host = host;
+ }
+
+ /**
+ * Get RabbitMQ port.
+ *
+ * @return Port
+ */
+ public Integer getPort() {
+ return port;
+ }
+
+ /**
+ * Set RabbitMQ port.
+ *
+ * @param port Port
+ */
+ public void setPort(final Integer port) {
+ this.port = port;
+ }
+
+ /**
+ * Get RabbitMQ username.
+ *
+ * @return Username
+ */
+ public String getUsername() {
+ return username;
+ }
+
+ /**
+ * Set RabbitMQ username.
+ *
+ * @param username Username
+ */
+ public void setUsername(final String username) {
+ this.username = username;
+ }
+
+ /**
+ * Get RabbitMQ password.
+ *
+ * @return Password
+ */
+ public String getPassword() {
+ return password;
+ }
+
+ /**
+ * Set RabbitMQ password.
+ *
+ * @param password Password
+ */
+ public void setPassword(final String password) {
+ this.password = password;
+ }
+
+ @Override
+ public boolean equals(final Object o) {
+ if (this == o) {
+ return Boolean.TRUE;
+ }
+ if (Objects.isNull(o) || getClass() != o.getClass()) {
+ return Boolean.FALSE;
+ }
+ LogApiConfig that = (LogApiConfig) o;
+
+ return Objects.equals(getRoutingKey(), that.getRoutingKey())
+ && Objects.equals(getQueueName(), that.getQueueName())
+ && Objects.equals(getExchangeName(),
that.getExchangeName())
+ && Objects.equals(getHost(), that.getHost())
+ && Objects.equals(getPort(), that.getPort())
+ && Objects.equals(getExchangeType(),
that.getExchangeType())
+ && Objects.equals(getVirtualHost(), that.getVirtualHost())
+ && Objects.equals(getDurable(), that.getDurable())
+ && Objects.equals(getExclusive(), that.getExclusive())
+ && Objects.equals(getAutoDelete(), that.getAutoDelete())
+ && Objects.equals(getArgs(), that.getArgs());
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(routingKey, queueName, exchangeName, host,
port, exchangeType, virtualHost, durable, autoDelete, exchangeType, args);
+ }
+
+
+ @Override
+ public String toString() {
+ return "LogApiConfig{"
+ + ", queueName="
+ + getQueueName()
+ + ", exchangeName="
+ + getExchangeName()
+ + ", host="
+ + getHost()
+ + ", port="
+ + getPort()
+ + ", username="
+ + getUsername()
+ + ", password="
+ + getPassword()
+ + ", routingKey="
+ + getRoutingKey()
+ + ", exchangeType="
+ + getExchangeType()
+ + ", virtualHost="
+ + getVirtualHost()
+ + ", durable="
+ + getDurable()
+ + ", autoDelete="
+ + getAutoDelete()
+ + ", args"
+ + getArgs()
+ + '}';
+ }
}
}
diff --git
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/main/java/org/apache/shenyu/plugin/logging/rabbitmq/conllector/RabbitmqLogCollector.java
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/main/java/org/apache/shenyu/plugin/logging/rabbitmq/conllector/RabbitmqLogCollector.java
index ca5c01dc75..c9f77a0068 100644
---
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/main/java/org/apache/shenyu/plugin/logging/rabbitmq/conllector/RabbitmqLogCollector.java
+++
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/main/java/org/apache/shenyu/plugin/logging/rabbitmq/conllector/RabbitmqLogCollector.java
@@ -21,10 +21,13 @@ import
org.apache.shenyu.plugin.logging.common.collector.AbstractLogCollector;
import org.apache.shenyu.plugin.logging.common.collector.LogCollector;
import org.apache.shenyu.plugin.logging.common.entity.ShenyuRequestLog;
import org.apache.shenyu.plugin.logging.desensitize.api.matcher.KeyWordMatch;
+import org.apache.shenyu.plugin.logging.rabbitmq.cache.RabbitmqClientCache;
import
org.apache.shenyu.plugin.logging.rabbitmq.client.RabbitmqLogCollectClient;
import
org.apache.shenyu.plugin.logging.rabbitmq.config.RabbitmqLogCollectConfig;
import
org.apache.shenyu.plugin.logging.rabbitmq.handler.LoggingRabbitmqPluginDataHandler;
+import java.util.Objects;
+
/**
* rabbitmq log collector,depend a LogConsumeClient for consume logs.
*/
@@ -51,6 +54,20 @@ public class RabbitmqLogCollector extends
AbstractLogCollector<RabbitmqLogCollec
return LoggingRabbitmqPluginDataHandler.getRabbitmqLogCollectClient();
}
+ @Override
+ public RabbitmqLogCollectClient getLogConsumeClient(final String path) {
+ RabbitmqLogCollectClient rabbitmqClient =
RabbitmqClientCache.getInstance().getRabbitmqClient(path);
+ if (Objects.isNull(rabbitmqClient)) {
+ return getLogConsumeClient();
+ }
+ return rabbitmqClient;
+ }
+
+ @Override
+ protected boolean getMultiClient() {
+ return LoggingRabbitmqPluginDataHandler.getMultiClient();
+ }
+
@Override
protected RabbitmqLogCollectConfig.RabbitmqLogConfig getLogCollectConfig()
{
return RabbitmqLogCollectConfig.INSTANCE.getRabbitmqLogConfig();
diff --git
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/main/java/org/apache/shenyu/plugin/logging/rabbitmq/handler/LoggingRabbitmqPluginDataHandler.java
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/main/java/org/apache/shenyu/plugin/logging/rabbitmq/handler/LoggingRabbitmqPluginDataHandler.java
index 037cd08fa0..5e6f7ed82d 100644
---
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/main/java/org/apache/shenyu/plugin/logging/rabbitmq/handler/LoggingRabbitmqPluginDataHandler.java
+++
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/main/java/org/apache/shenyu/plugin/logging/rabbitmq/handler/LoggingRabbitmqPluginDataHandler.java
@@ -17,13 +17,24 @@
package org.apache.shenyu.plugin.logging.rabbitmq.handler;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.shenyu.common.dto.PluginData;
+import org.apache.shenyu.common.dto.SelectorData;
import org.apache.shenyu.common.enums.PluginEnum;
+import org.apache.shenyu.common.utils.GsonUtils;
import org.apache.shenyu.plugin.logging.common.collector.LogCollector;
import
org.apache.shenyu.plugin.logging.common.handler.AbstractLogPluginDataHandler;
+import org.apache.shenyu.plugin.logging.common.utils.LogCollectConfigUtils;
+import org.apache.shenyu.plugin.logging.rabbitmq.cache.RabbitmqClientCache;
import
org.apache.shenyu.plugin.logging.rabbitmq.client.RabbitmqLogCollectClient;
import
org.apache.shenyu.plugin.logging.rabbitmq.config.RabbitmqLogCollectConfig;
import
org.apache.shenyu.plugin.logging.rabbitmq.conllector.RabbitmqLogCollector;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.concurrent.atomic.AtomicBoolean;
+
/**
* The type logging rabbitmq plugin data handler.
*/
@@ -31,6 +42,8 @@ public class LoggingRabbitmqPluginDataHandler extends
AbstractLogPluginDataHandl
private static final RabbitmqLogCollectClient RABBITMQ_LOG_COLLECT_CLIENT
= new RabbitmqLogCollectClient();
+ private static final AtomicBoolean MULTI_CLIENT = new AtomicBoolean(false);
+
/**
* get rabbitmq log collect client.
*
@@ -40,6 +53,15 @@ public class LoggingRabbitmqPluginDataHandler extends
AbstractLogPluginDataHandl
return RABBITMQ_LOG_COLLECT_CLIENT;
}
+ /**
+ * getMultiClient.
+ *
+ * @return multiClient
+ */
+ public static boolean getMultiClient() {
+ return MULTI_CLIENT.get();
+ }
+
@Override
public String pluginNamed() {
return PluginEnum.LOGGING_RABBITMQ.getName();
@@ -65,4 +87,44 @@ public class LoggingRabbitmqPluginDataHandler extends
AbstractLogPluginDataHandl
RabbitmqLogCollectConfig.INSTANCE.setRabbitmqLogConfig(globalLogConfig);
RABBITMQ_LOG_COLLECT_CLIENT.initClient(globalLogConfig);
}
+
+ @Override
+ public void handlerSelector(final SelectorData selectorData) {
+ Map<String, Object> rabbitmqJsonMap =
GsonUtils.getInstance().convertToMap(selectorData.getHandle());
+ Object hostObj = rabbitmqJsonMap.get("host");
+ if (Objects.isNull(hostObj) || !(hostObj instanceof String) ||
((String) hostObj).trim().isEmpty()) {
+ RabbitmqClientCache.getInstance().invalidate(selectorData.getId());
+
Optional.ofNullable(RabbitmqClientCache.getInstance().getClientCache())
+ .filter(Map::isEmpty)
+ .ifPresent(map -> MULTI_CLIENT.set(false));
+ return;
+ }
+ RabbitmqLogCollectConfig.LogApiConfig nConfig =
GsonUtils.getInstance().fromJson(selectorData.getHandle(),
RabbitmqLogCollectConfig.LogApiConfig.class);
+ RabbitmqLogCollectConfig.LogApiConfig oConfig =
(RabbitmqLogCollectConfig.LogApiConfig)
getSelectApiConfigMap().get(selectorData.getId());
+ if (Objects.equals(nConfig, oConfig)) {
+ return;
+ }
+ RabbitmqClientCache.getInstance().invalidate(selectorData.getId());
+ if (Objects.isNull(nConfig)) {
+ return;
+ }
+
RabbitmqClientCache.getInstance().initRabbitmqClient(selectorData.getId(),
nConfig);
+ MULTI_CLIENT.set(true);
+ if (StringUtils.isNotEmpty(nConfig.getSampleRate())) {
+
nConfig.setSampler(LogCollectConfigUtils.setSampler(nConfig.getSampleRate()));
+ }
+ getSelectApiConfigMap().put(selectorData.getId(), nConfig);
+ }
+
+ @Override
+ public void removePlugin(final PluginData pluginData) {
+ RabbitmqClientCache.getInstance().invalidateAll();
+ super.removePlugin(pluginData);
+ }
+
+ @Override
+ public void removeSelector(final SelectorData selectorData) {
+ RabbitmqClientCache.getInstance().invalidate(selectorData.getId());
+ super.removeSelector(selectorData);
+ }
}
diff --git
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/test/java/org/apache/shenyu/plugin/logging/rabbitmq/cache/RabbitmqClientCacheTest.java
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/test/java/org/apache/shenyu/plugin/logging/rabbitmq/cache/RabbitmqClientCacheTest.java
new file mode 100644
index 0000000000..f9137f06c6
--- /dev/null
+++
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/test/java/org/apache/shenyu/plugin/logging/rabbitmq/cache/RabbitmqClientCacheTest.java
@@ -0,0 +1,76 @@
+/*
+ * 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.shenyu.plugin.logging.rabbitmq.cache;
+
+import org.apache.shenyu.common.dto.SelectorData;
+import org.apache.shenyu.common.utils.GsonUtils;
+import
org.apache.shenyu.plugin.logging.rabbitmq.client.RabbitmqLogCollectClient;
+import
org.apache.shenyu.plugin.logging.rabbitmq.config.RabbitmqLogCollectConfig;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.util.Map;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+/**
+ * RabbitmqClientCacheTest.
+ */
+public class RabbitmqClientCacheTest {
+
+ private RabbitmqClientCache cache;
+
+ private SelectorData selectorData;
+
+ @BeforeEach
+ void setup() {
+ cache = RabbitmqClientCache.getInstance();
+ selectorData = SelectorData.builder().id("153153464562434")
+ .handle("{\n"
+ + " \"queueName\": \"shenyu-logs-queue\",\n"
+ + " \"exchangeName\": \"shenyu-logs-exchange\",\n"
+ + " \"host\": \"127.0.0.1\",\n"
+ + " \"port\": 5672,\n"
+ + " \"username\": \"admin\",\n"
+ + " \"password\": \"123456\",\n"
+ + " \"routingKey\": \"shenyu.log.key\",\n"
+ + " \"exchangeType\": \"topic\",\n"
+ + " \"virtualHost\": \"/\",\n"
+ + " \"durable\": true,\n"
+ + " \"exclusive\": false,\n"
+ + " \"autoDelete\": false,\n"
+ + " \"args\": {\n"
+ + " \"x-message-ttl\": 60000,\n"
+ + " \"x-max-length\": 1000\n"
+ + " }\n"
+ + "}")
+ .build();
+ cache.invalidateAll();
+ }
+
+ @Test
+ public void testInitRabbitmqClient() {
+ RabbitmqLogCollectConfig.LogApiConfig logApiConfig =
GsonUtils.getInstance()
+ .fromJson(selectorData.getHandle(),
RabbitmqLogCollectConfig.LogApiConfig.class);
+ cache.initRabbitmqClient(selectorData.getId(), logApiConfig);
+ Map<String, RabbitmqLogCollectClient> clientCache =
cache.getClientCache();
+ RabbitmqLogCollectClient rabbitmqLogCollectClient =
clientCache.get(selectorData.getId());
+ assertNotNull(rabbitmqLogCollectClient);
+ }
+
+}
diff --git
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/test/java/org/apache/shenyu/plugin/logging/rabbitmq/collector/RabbitmqLogCollectorTest.java
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/test/java/org/apache/shenyu/plugin/logging/rabbitmq/collector/RabbitmqLogCollectorTest.java
index 20f40dd0cd..8f9081fab6 100644
---
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/test/java/org/apache/shenyu/plugin/logging/rabbitmq/collector/RabbitmqLogCollectorTest.java
+++
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/test/java/org/apache/shenyu/plugin/logging/rabbitmq/collector/RabbitmqLogCollectorTest.java
@@ -17,9 +17,13 @@
package org.apache.shenyu.plugin.logging.rabbitmq.collector;
+import org.apache.shenyu.common.dto.SelectorData;
+import org.apache.shenyu.common.utils.GsonUtils;
import org.apache.shenyu.plugin.logging.common.collector.AbstractLogCollector;
import org.apache.shenyu.plugin.logging.common.entity.ShenyuRequestLog;
+import org.apache.shenyu.plugin.logging.rabbitmq.cache.RabbitmqClientCache;
import
org.apache.shenyu.plugin.logging.rabbitmq.client.RabbitmqLogCollectClient;
+import
org.apache.shenyu.plugin.logging.rabbitmq.config.RabbitmqLogCollectConfig;
import
org.apache.shenyu.plugin.logging.rabbitmq.conllector.RabbitmqLogCollector;
import org.junit.Assert;
import org.junit.Before;
@@ -38,6 +42,7 @@ public class RabbitmqLogCollectorTest {
public void setUp() {
shenyuRequestLog.setClientIp("0.0.0.0");
shenyuRequestLog.setPath("org/apache/shenyu/plugin/logging");
+ shenyuRequestLog.setSelectorId("1332017966661636096");
}
@Test
@@ -63,4 +68,34 @@ public class RabbitmqLogCollectorTest {
Assert.assertEquals(RabbitmqLogCollectClient.class,
logConsumeClient.getClass());
}
+ @Test
+ public void testGetLogConsumeClient2() {
+ RabbitmqClientCache cache = RabbitmqClientCache.getInstance();
+ SelectorData selectorData =
SelectorData.builder().id("1332017966661636096")
+ .handle("{\n"
+ + " \"queueName\": \"shenyu-logs-queue\",\n"
+ + " \"exchangeName\": \"shenyu-logs-exchange\",\n"
+ + " \"host\": \"127.0.0.1\",\n"
+ + " \"port\": 5672,\n"
+ + " \"username\": \"admin\",\n"
+ + " \"password\": \"123456\",\n"
+ + " \"routingKey\": \"shenyu.log.key\",\n"
+ + " \"exchangeType\": \"topic\",\n"
+ + " \"virtualHost\": \"/\",\n"
+ + " \"durable\": true,\n"
+ + " \"exclusive\": false,\n"
+ + " \"autoDelete\": false,\n"
+ + " \"args\": {\n"
+ + " \"x-message-ttl\": 60000,\n"
+ + " \"x-max-length\": 1000\n"
+ + " }\n"
+ + "}")
+ .build();
+ RabbitmqLogCollectConfig.LogApiConfig logApiConfig =
GsonUtils.getInstance()
+ .fromJson(selectorData.getHandle(),
RabbitmqLogCollectConfig.LogApiConfig.class);
+ cache.initRabbitmqClient("1332017966661636096", logApiConfig);
+ RabbitmqLogCollectClient logConsumeClient = new
RabbitmqLogCollector().getLogConsumeClient("1332017966661636096");
+ Assert.assertEquals(RabbitmqLogCollectClient.class,
logConsumeClient.getClass());
+ }
+
}
diff --git
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/test/java/org/apache/shenyu/plugin/logging/rabbitmq/config/RabbitmqLogCollectConfigTest.java
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/test/java/org/apache/shenyu/plugin/logging/rabbitmq/config/RabbitmqLogCollectConfigTest.java
index 266c9e448b..64934e1158 100644
---
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/test/java/org/apache/shenyu/plugin/logging/rabbitmq/config/RabbitmqLogCollectConfigTest.java
+++
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/test/java/org/apache/shenyu/plugin/logging/rabbitmq/config/RabbitmqLogCollectConfigTest.java
@@ -50,13 +50,13 @@ public class RabbitmqLogCollectConfigTest {
private final String exchangeType = "direct";
private final String virtualHost = "/";
-
+
private final Boolean durable = Boolean.TRUE;
-
+
private final Boolean exclusive = Boolean.FALSE;
-
+
private final Boolean autoDelete = Boolean.FALSE;
-
+
private final Map<String, Object> args = new HashMap<>();
@Test
diff --git
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/test/java/org/apache/shenyu/plugin/logging/rabbitmq/handler/LoggingRabbitmqPluginDataHandlerTest.java
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/test/java/org/apache/shenyu/plugin/logging/rabbitmq/handler/LoggingRabbitmqPluginDataHandlerTest.java
index ed15d0d141..9739a767d4 100644
---
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/test/java/org/apache/shenyu/plugin/logging/rabbitmq/handler/LoggingRabbitmqPluginDataHandlerTest.java
+++
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-rabbitmq/src/test/java/org/apache/shenyu/plugin/logging/rabbitmq/handler/LoggingRabbitmqPluginDataHandlerTest.java
@@ -25,6 +25,7 @@ import org.apache.shenyu.common.enums.PluginEnum;
import org.apache.shenyu.common.enums.SelectorTypeEnum;
import org.apache.shenyu.common.utils.GsonUtils;
import org.apache.shenyu.common.utils.Singleton;
+import org.apache.shenyu.plugin.logging.rabbitmq.cache.RabbitmqClientCache;
import
org.apache.shenyu.plugin.logging.rabbitmq.client.RabbitmqLogCollectClient;
import
org.apache.shenyu.plugin.logging.rabbitmq.config.RabbitmqLogCollectConfig;
import org.junit.jupiter.api.Assertions;
@@ -42,6 +43,7 @@ import java.util.List;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
+import static org.junit.Assert.assertNotNull;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.never;
@@ -142,6 +144,33 @@ public final class LoggingRabbitmqPluginDataHandlerTest {
verify(loggingRabbitmqPluginDataHandler,
times(1)).doRefreshConfig(any());
}
+ @Test
+ public void testHandlerSelector() {
+ SelectorData selectorData =
SelectorData.builder().id("1332017966661636096")
+ .handle("{\n"
+ + " \"queueName\": \"shenyu-logs-queue\",\n"
+ + " \"exchangeName\": \"shenyu-logs-exchange\",\n"
+ + " \"host\": \"127.0.0.1\",\n"
+ + " \"port\": 5672,\n"
+ + " \"username\": \"admin\",\n"
+ + " \"password\": \"123456\",\n"
+ + " \"routingKey\": \"shenyu.log.key\",\n"
+ + " \"exchangeType\": \"topic\",\n"
+ + " \"virtualHost\": \"/\",\n"
+ + " \"durable\": true,\n"
+ + " \"exclusive\": false,\n"
+ + " \"autoDelete\": false,\n"
+ + " \"args\": {\n"
+ + " \"x-message-ttl\": 60000,\n"
+ + " \"x-max-length\": 1000\n"
+ + " }\n"
+ + "}")
+ .build();
+ loggingRabbitmqPluginDataHandler.handlerSelector(selectorData);
+ RabbitmqClientCache cache = RabbitmqClientCache.getInstance();
+ assertNotNull(cache.getClientCache().get("1332017966661636096"));
+ }
+
private PluginData createPluginData() {
PluginData pluginData = new PluginData();
pluginData.setEnabled(true);