2025-04-07 15:46:12 +08:00

52 lines
851 B
Go

package kafka
import (
"crypto/tls"
"ultone/internal/interfaces"
"github.com/segmentio/kafka-go/sasl/plain"
)
type OptionFn func(*client)
func WithPlainAuth(username, password string) OptionFn {
return func(c *client) {
c.mechanism = plain.Mechanism{
Username: username,
Password: password,
}
c.d.SASLMechanism = c.mechanism
}
}
func WithTLS(config *tls.Config) OptionFn {
return func(c *client) {
c.tls = config
c.d.TLS = config
}
}
func WithTopic(topic string) OptionFn {
return func(c *client) {
c.topic = topic
}
}
func WithPartition(partition int) OptionFn {
return func(c *client) {
c.partition = partition
}
}
func WithReconnection() OptionFn {
return func(c *client) {
c.reconnection = true
}
}
func WithLogger(logger interfaces.Logger) OptionFn {
return func(c *client) {
c.logger = logger
}
}