feat(targets): support Kafka SASL auth (#3128)

* feat(targets): support Kafka SASL auth

* fix(targets): infer Kafka SASL when enable is blank

---------

Co-authored-by: Henry Guo <marshawcoco@users.noreply.github.com>
This commit is contained in:
Henry Guo
2026-05-30 19:01:17 +08:00
committed by GitHub
parent 97cd19becc
commit 5bdbd66d09
7 changed files with 387 additions and 96 deletions
+4 -9
View File
@@ -228,9 +228,11 @@ pub async fn check_postgres_server_available(args: &crate::target::postgres::Pos
pub async fn check_kafka_broker_available(args: &crate::target::kafka::KafkaArgs) -> Result<(), crate::TargetError> {
use rustfs_kafka_async::error::{ConnectionError, Error as KafkaError};
use rustfs_kafka_async::{AsyncProducer, AsyncProducerConfig, RequiredAcks, SecurityConfig};
use rustfs_kafka_async::{AsyncProducer, AsyncProducerConfig, RequiredAcks};
use std::time::Duration;
args.validate()?;
let map_kafka_error = |err: KafkaError, context: &str| match err {
KafkaError::Connection(ConnectionError::NoHostReachable) => crate::TargetError::NotConnected,
KafkaError::Connection(ConnectionError::Timeout(_)) => crate::TargetError::Timeout(format!("{context}: {err}")),
@@ -249,14 +251,7 @@ pub async fn check_kafka_broker_available(args: &crate::target::kafka::KafkaArgs
.with_ack_timeout(Duration::from_secs(5))
.with_required_acks(acks);
if args.tls_enable {
let mut security = SecurityConfig::new();
if !args.tls_ca.is_empty() {
security = security.with_ca_cert(args.tls_ca.clone());
}
if !args.tls_client_cert.is_empty() && !args.tls_client_key.is_empty() {
security = security.with_client_cert(args.tls_client_cert.clone(), args.tls_client_key.clone());
}
if let Some(security) = args.security_config(false)? {
config = config.with_security(security);
}