github.com/bingoohuang/gg@v0.0.0-20240325092523-45da7dee9335/pkg/kafka/util.go (about) 1 package kafka 2 3 import ( 4 "fmt" 5 "log" 6 "strings" 7 8 "github.com/IBM/sarama" 9 ) 10 11 func ParseVersion(config *sarama.Config, version string) error { 12 if version == "" { 13 return nil 14 } 15 16 v, err := sarama.ParseKafkaVersion(version) 17 if err != nil { 18 return fmt.Errorf("parsing KafkaDestination version error: %w", err) 19 } 20 21 config.Version = v 22 return nil 23 } 24 25 func ParseCodec(codec string) sarama.CompressionCodec { 26 switch l := strings.ToLower(strings.TrimSpace(codec)); l { 27 case "none": 28 return sarama.CompressionNone 29 case "gzip": 30 return sarama.CompressionGZIP 31 case "snappy": 32 return sarama.CompressionSnappy 33 case "lz4": 34 return sarama.CompressionLZ4 35 case "zstd": 36 return sarama.CompressionZSTD 37 default: 38 log.Printf("W! unknown compression codec %s", codec) 39 return sarama.CompressionNone 40 } 41 } 42 43 func ParseBalanceStrategy(assignor string) sarama.BalanceStrategy { 44 switch assignor { 45 case "sticky": 46 return sarama.BalanceStrategySticky 47 case "roundrobin", "rr": 48 return sarama.BalanceStrategyRoundRobin 49 case "range": 50 return sarama.BalanceStrategyRange 51 default: 52 return sarama.BalanceStrategyRange 53 } 54 } 55 56 func ParseRequiredAcks(acks string) sarama.RequiredAcks { 57 acks = strings.ToLower(acks) 58 switch acks { 59 case "waitforlocal": 60 return sarama.WaitForLocal 61 case "noresponse": 62 return sarama.NoResponse 63 case "waitforall": 64 return sarama.WaitForAll 65 default: 66 return sarama.WaitForLocal 67 } 68 } 69 70 func SASLVersion(kafkaVersion sarama.KafkaVersion, saslVersion *int) (int16, error) { 71 if saslVersion == nil { 72 if kafkaVersion.IsAtLeast(sarama.V1_0_0_0) { 73 return sarama.SASLHandshakeV1, nil 74 } 75 return sarama.SASLHandshakeV0, nil 76 } 77 78 switch *saslVersion { 79 case 0: 80 return sarama.SASLHandshakeV0, nil 81 case 1: 82 return sarama.SASLHandshakeV1, nil 83 default: 84 return 0, fmt.Errorf("invalid SASL version") 85 } 86 }