feat(targets): complete redis mysql postgres target wiring (#2842)

Signed-off-by: jaehanbyun <awbrg789@naver.com>
Signed-off-by: houseme <housemecn@gmail.com>
Signed-off-by: Gunther Xing <jiengup@gmail.com>
Signed-off-by: JaySon-Huang <tshent@qq.com>
Co-authored-by: jaehanbyun <awbrg789@naver.com>
Co-authored-by: Gunther Xing <jiengup@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: cxymds <Cxymds@qq.com>
Co-authored-by: JaySon <tshent@qq.com>
Co-authored-by: 安正超 <anzhengchao@gmail.com>
This commit is contained in:
houseme
2026-05-07 18:00:59 +08:00
committed by GitHub
parent b159d656cc
commit 5431b9273d
41 changed files with 6787 additions and 237 deletions
+11 -4
View File
@@ -15,16 +15,22 @@
mod arn;
mod kafka;
mod mqtt;
mod mysql;
mod nats;
mod postgres;
mod pulsar;
mod redis;
mod store;
mod webhook;
pub use arn::*;
pub use kafka::*;
pub use mqtt::*;
pub use mysql::*;
pub use nats::*;
pub use postgres::*;
pub use pulsar::*;
pub use redis::*;
pub use store::*;
pub use webhook::*;
@@ -69,19 +75,20 @@ pub const ENV_NOTIFY_SEND_CONCURRENCY: &str = "RUSTFS_NOTIFY_SEND_CONCURRENCY";
/// Adjust this value based on your system's capabilities and expected load.
pub const DEFAULT_NOTIFY_SEND_CONCURRENCY: usize = 64;
#[allow(dead_code)]
pub const NOTIFY_SUB_SYSTEMS: &[&str] = &[
NOTIFY_KAFKA_SUB_SYS,
NOTIFY_MQTT_SUB_SYS,
NOTIFY_MYSQL_SUB_SYS,
NOTIFY_NATS_SUB_SYS,
NOTIFY_POSTGRES_SUB_SYS,
NOTIFY_PULSAR_SUB_SYS,
NOTIFY_REDIS_SUB_SYS,
NOTIFY_WEBHOOK_SUB_SYS,
];
pub const NOTIFY_KAFKA_SUB_SYS: &str = "notify_kafka";
pub const NOTIFY_MQTT_SUB_SYS: &str = "notify_mqtt";
#[allow(dead_code)]
pub const NOTIFY_MY_SQL_SUB_SYS: &str = "notify_mysql";
pub const NOTIFY_MYSQL_SUB_SYS: &str = "notify_mysql";
#[allow(dead_code)]
pub const NOTIFY_NATS_SUB_SYS: &str = "notify_nats";
#[allow(dead_code)]
@@ -90,9 +97,9 @@ pub const NOTIFY_NSQ_SUB_SYS: &str = "notify_nsq";
pub const NOTIFY_ES_SUB_SYS: &str = "notify_elasticsearch";
#[allow(dead_code)]
pub const NOTIFY_AMQP_SUB_SYS: &str = "notify_amqp";
#[allow(dead_code)]
pub const NOTIFY_POSTGRES_SUB_SYS: &str = "notify_postgres";
#[allow(dead_code)]
pub const NOTIFY_REDIS_SUB_SYS: &str = "notify_redis";
pub const NOTIFY_REDIS_DEFAULT_CHANNEL: &str = "rustfs_notify_channel";
pub const NOTIFY_PULSAR_SUB_SYS: &str = "notify_pulsar";
pub const NOTIFY_WEBHOOK_SUB_SYS: &str = "notify_webhook";
+53
View File
@@ -0,0 +1,53 @@
// Copyright 2024 RustFS Team
//
// Licensed 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.
/// A list of all valid configuration keys for a MySQL target.
pub const NOTIFY_MYSQL_KEYS: &[&str] = &[
crate::ENABLE_KEY,
crate::MYSQL_DSN_STRING,
crate::MYSQL_TABLE,
crate::MYSQL_FORMAT,
crate::MYSQL_TLS_CA,
crate::MYSQL_TLS_CLIENT_CERT,
crate::MYSQL_TLS_CLIENT_KEY,
crate::MYSQL_QUEUE_DIR,
crate::MYSQL_QUEUE_LIMIT,
crate::MYSQL_MAX_OPEN_CONNECTIONS,
crate::COMMENT_KEY,
];
// MySQL Environment Variables
pub const ENV_NOTIFY_MYSQL_ENABLE: &str = "RUSTFS_NOTIFY_MYSQL_ENABLE";
pub const ENV_NOTIFY_MYSQL_DSN_STRING: &str = "RUSTFS_NOTIFY_MYSQL_DSN_STRING";
pub const ENV_NOTIFY_MYSQL_TABLE: &str = "RUSTFS_NOTIFY_MYSQL_TABLE";
pub const ENV_NOTIFY_MYSQL_FORMAT: &str = "RUSTFS_NOTIFY_MYSQL_FORMAT";
pub const ENV_NOTIFY_MYSQL_TLS_CA: &str = "RUSTFS_NOTIFY_MYSQL_TLS_CA";
pub const ENV_NOTIFY_MYSQL_TLS_CLIENT_CERT: &str = "RUSTFS_NOTIFY_MYSQL_TLS_CLIENT_CERT";
pub const ENV_NOTIFY_MYSQL_TLS_CLIENT_KEY: &str = "RUSTFS_NOTIFY_MYSQL_TLS_CLIENT_KEY";
pub const ENV_NOTIFY_MYSQL_QUEUE_DIR: &str = "RUSTFS_NOTIFY_MYSQL_QUEUE_DIR";
pub const ENV_NOTIFY_MYSQL_QUEUE_LIMIT: &str = "RUSTFS_NOTIFY_MYSQL_QUEUE_LIMIT";
pub const ENV_NOTIFY_MYSQL_MAX_OPEN_CONNECTIONS: &str = "RUSTFS_NOTIFY_MYSQL_MAX_OPEN_CONNECTIONS";
pub const ENV_NOTIFY_MYSQL_KEYS: &[&str; 10] = &[
ENV_NOTIFY_MYSQL_ENABLE,
ENV_NOTIFY_MYSQL_DSN_STRING,
ENV_NOTIFY_MYSQL_TABLE,
ENV_NOTIFY_MYSQL_FORMAT,
ENV_NOTIFY_MYSQL_TLS_CA,
ENV_NOTIFY_MYSQL_TLS_CLIENT_CERT,
ENV_NOTIFY_MYSQL_TLS_CLIENT_KEY,
ENV_NOTIFY_MYSQL_QUEUE_DIR,
ENV_NOTIFY_MYSQL_QUEUE_LIMIT,
ENV_NOTIFY_MYSQL_MAX_OPEN_CONNECTIONS,
];
+51
View File
@@ -0,0 +1,51 @@
// Copyright 2024 RustFS Team
//
// Licensed 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.
pub const NOTIFY_POSTGRES_KEYS: &[&str] = &[
crate::ENABLE_KEY,
crate::POSTGRES_DSN_STRING,
crate::POSTGRES_TABLE,
crate::POSTGRES_FORMAT,
crate::POSTGRES_TLS_REQUIRED,
crate::POSTGRES_TLS_CA,
crate::POSTGRES_TLS_CLIENT_CERT,
crate::POSTGRES_TLS_CLIENT_KEY,
crate::POSTGRES_QUEUE_DIR,
crate::POSTGRES_QUEUE_LIMIT,
crate::COMMENT_KEY,
];
pub const ENV_NOTIFY_POSTGRES_ENABLE: &str = "RUSTFS_NOTIFY_POSTGRES_ENABLE";
pub const ENV_NOTIFY_POSTGRES_DSN_STRING: &str = "RUSTFS_NOTIFY_POSTGRES_DSN_STRING";
pub const ENV_NOTIFY_POSTGRES_TABLE: &str = "RUSTFS_NOTIFY_POSTGRES_TABLE";
pub const ENV_NOTIFY_POSTGRES_FORMAT: &str = "RUSTFS_NOTIFY_POSTGRES_FORMAT";
pub const ENV_NOTIFY_POSTGRES_TLS_REQUIRED: &str = "RUSTFS_NOTIFY_POSTGRES_TLS_REQUIRED";
pub const ENV_NOTIFY_POSTGRES_TLS_CA: &str = "RUSTFS_NOTIFY_POSTGRES_TLS_CA";
pub const ENV_NOTIFY_POSTGRES_TLS_CLIENT_CERT: &str = "RUSTFS_NOTIFY_POSTGRES_TLS_CLIENT_CERT";
pub const ENV_NOTIFY_POSTGRES_TLS_CLIENT_KEY: &str = "RUSTFS_NOTIFY_POSTGRES_TLS_CLIENT_KEY";
pub const ENV_NOTIFY_POSTGRES_QUEUE_DIR: &str = "RUSTFS_NOTIFY_POSTGRES_QUEUE_DIR";
pub const ENV_NOTIFY_POSTGRES_QUEUE_LIMIT: &str = "RUSTFS_NOTIFY_POSTGRES_QUEUE_LIMIT";
pub const ENV_NOTIFY_POSTGRES_KEYS: &[&str; 10] = &[
ENV_NOTIFY_POSTGRES_ENABLE,
ENV_NOTIFY_POSTGRES_DSN_STRING,
ENV_NOTIFY_POSTGRES_TABLE,
ENV_NOTIFY_POSTGRES_FORMAT,
ENV_NOTIFY_POSTGRES_TLS_REQUIRED,
ENV_NOTIFY_POSTGRES_TLS_CA,
ENV_NOTIFY_POSTGRES_TLS_CLIENT_CERT,
ENV_NOTIFY_POSTGRES_TLS_CLIENT_KEY,
ENV_NOTIFY_POSTGRES_QUEUE_DIR,
ENV_NOTIFY_POSTGRES_QUEUE_LIMIT,
];
+82
View File
@@ -0,0 +1,82 @@
// Copyright 2024 RustFS Team
//
// Licensed 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.
/// A list of all valid configuration keys for a Redis target.
pub const NOTIFY_REDIS_KEYS: &[&str] = &[
crate::ENABLE_KEY,
crate::REDIS_URL,
crate::REDIS_CHANNEL,
crate::REDIS_USERNAME,
crate::REDIS_PASSWORD,
crate::REDIS_KEEP_ALIVE_INTERVAL,
crate::REDIS_QUEUE_DIR,
crate::REDIS_QUEUE_LIMIT,
crate::REDIS_MAX_RETRY_ATTEMPTS,
crate::REDIS_RECONNECT_RETRY_ATTEMPTS,
crate::REDIS_MIN_RETRY_DELAY,
crate::REDIS_MAX_RETRY_DELAY,
crate::REDIS_CONNECTION_TIMEOUT,
crate::REDIS_RESPONSE_TIMEOUT,
crate::REDIS_PIPELINE_BUFFER_SIZE,
crate::REDIS_TLS_POLICY,
crate::REDIS_TLS_CA,
crate::REDIS_TLS_CLIENT_CERT,
crate::REDIS_TLS_CLIENT_KEY,
crate::REDIS_TLS_ALLOW_INSECURE,
crate::COMMENT_KEY,
];
pub const ENV_NOTIFY_REDIS_ENABLE: &str = "RUSTFS_NOTIFY_REDIS_ENABLE";
pub const ENV_NOTIFY_REDIS_URL: &str = "RUSTFS_NOTIFY_REDIS_URL";
pub const ENV_NOTIFY_REDIS_CHANNEL: &str = "RUSTFS_NOTIFY_REDIS_CHANNEL";
pub const ENV_NOTIFY_REDIS_USERNAME: &str = "RUSTFS_NOTIFY_REDIS_USERNAME";
pub const ENV_NOTIFY_REDIS_PASSWORD: &str = "RUSTFS_NOTIFY_REDIS_PASSWORD";
pub const ENV_NOTIFY_REDIS_KEEP_ALIVE_INTERVAL: &str = "RUSTFS_NOTIFY_REDIS_KEEP_ALIVE_INTERVAL";
pub const ENV_NOTIFY_REDIS_QUEUE_DIR: &str = "RUSTFS_NOTIFY_REDIS_QUEUE_DIR";
pub const ENV_NOTIFY_REDIS_QUEUE_LIMIT: &str = "RUSTFS_NOTIFY_REDIS_QUEUE_LIMIT";
pub const ENV_NOTIFY_REDIS_MAX_RETRY_ATTEMPTS: &str = "RUSTFS_NOTIFY_REDIS_MAX_RETRY_ATTEMPTS";
pub const ENV_NOTIFY_REDIS_RECONNECT_RETRY_ATTEMPTS: &str = "RUSTFS_NOTIFY_REDIS_RECONNECT_RETRY_ATTEMPTS";
pub const ENV_NOTIFY_REDIS_MIN_RETRY_DELAY: &str = "RUSTFS_NOTIFY_REDIS_MIN_RETRY_DELAY";
pub const ENV_NOTIFY_REDIS_MAX_RETRY_DELAY: &str = "RUSTFS_NOTIFY_REDIS_MAX_RETRY_DELAY";
pub const ENV_NOTIFY_REDIS_CONNECTION_TIMEOUT: &str = "RUSTFS_NOTIFY_REDIS_CONNECTION_TIMEOUT";
pub const ENV_NOTIFY_REDIS_RESPONSE_TIMEOUT: &str = "RUSTFS_NOTIFY_REDIS_RESPONSE_TIMEOUT";
pub const ENV_NOTIFY_REDIS_PIPELINE_BUFFER_SIZE: &str = "RUSTFS_NOTIFY_REDIS_PIPELINE_BUFFER_SIZE";
pub const ENV_NOTIFY_REDIS_TLS_POLICY: &str = "RUSTFS_NOTIFY_REDIS_TLS_POLICY";
pub const ENV_NOTIFY_REDIS_TLS_CA: &str = "RUSTFS_NOTIFY_REDIS_TLS_CA";
pub const ENV_NOTIFY_REDIS_TLS_CLIENT_CERT: &str = "RUSTFS_NOTIFY_REDIS_TLS_CLIENT_CERT";
pub const ENV_NOTIFY_REDIS_TLS_CLIENT_KEY: &str = "RUSTFS_NOTIFY_REDIS_TLS_CLIENT_KEY";
pub const ENV_NOTIFY_REDIS_TLS_ALLOW_INSECURE: &str = "RUSTFS_NOTIFY_REDIS_TLS_ALLOW_INSECURE";
pub const ENV_NOTIFY_REDIS_KEYS: &[&str; 20] = &[
ENV_NOTIFY_REDIS_ENABLE,
ENV_NOTIFY_REDIS_URL,
ENV_NOTIFY_REDIS_CHANNEL,
ENV_NOTIFY_REDIS_USERNAME,
ENV_NOTIFY_REDIS_PASSWORD,
ENV_NOTIFY_REDIS_KEEP_ALIVE_INTERVAL,
ENV_NOTIFY_REDIS_QUEUE_DIR,
ENV_NOTIFY_REDIS_QUEUE_LIMIT,
ENV_NOTIFY_REDIS_MAX_RETRY_ATTEMPTS,
ENV_NOTIFY_REDIS_RECONNECT_RETRY_ATTEMPTS,
ENV_NOTIFY_REDIS_MIN_RETRY_DELAY,
ENV_NOTIFY_REDIS_MAX_RETRY_DELAY,
ENV_NOTIFY_REDIS_CONNECTION_TIMEOUT,
ENV_NOTIFY_REDIS_RESPONSE_TIMEOUT,
ENV_NOTIFY_REDIS_PIPELINE_BUFFER_SIZE,
ENV_NOTIFY_REDIS_TLS_POLICY,
ENV_NOTIFY_REDIS_TLS_CA,
ENV_NOTIFY_REDIS_TLS_CLIENT_CERT,
ENV_NOTIFY_REDIS_TLS_CLIENT_KEY,
ENV_NOTIFY_REDIS_TLS_ALLOW_INSECURE,
];