53
53
"gzip" : sarama .CompressionGZIP ,
54
54
"snappy" : sarama .CompressionSnappy ,
55
55
}
56
+
57
+ kafkaVersions = map [string ]sarama.KafkaVersion {
58
+ "" : sarama .V0_8_2_0 ,
59
+
60
+ "0.8.2.0" : sarama .V0_8_2_0 ,
61
+ "0.8.2.1" : sarama .V0_8_2_1 ,
62
+ "0.8.2.2" : sarama .V0_8_2_2 ,
63
+ "0.8.2" : sarama .V0_8_2_2 ,
64
+ "0.8" : sarama .V0_8_2_2 ,
65
+
66
+ "0.9.0.0" : sarama .V0_9_0_0 ,
67
+ "0.9.0.1" : sarama .V0_9_0_1 ,
68
+ "0.9.0" : sarama .V0_9_0_1 ,
69
+ "0.9" : sarama .V0_9_0_1 ,
70
+
71
+ "0.10.0.0" : sarama .V0_10_0_0 ,
72
+ "0.10.0" : sarama .V0_10_0_0 ,
73
+ "0.10" : sarama .V0_10_0_0 ,
74
+ }
56
75
)
57
76
58
77
// New instantiates a new kafka output instance.
@@ -211,8 +230,16 @@ func newKafkaConfig(config *kafkaConfig) (*sarama.Config, error) {
211
230
k .Net .TLS .Enable = tls != nil
212
231
k .Net .TLS .Config = tls
213
232
214
- // TODO: configure metadata level properties
215
- // use lib defaults
233
+ if config .Username != "" {
234
+ k .Net .SASL .Enable = true
235
+ k .Net .SASL .User = config .Username
236
+ k .Net .SASL .Password = config .Password
237
+ }
238
+
239
+ // configure metadata update properties
240
+ k .Metadata .Retry .Max = config .Metadata .Retry .Max
241
+ k .Metadata .Retry .Backoff = config .Metadata .Retry .Backoff
242
+ k .Metadata .RefreshFrequency = config .Metadata .RefreshFreq
216
243
217
244
// configure producer API properties
218
245
if config .MaxMessageBytes != nil {
@@ -237,6 +264,7 @@ func newKafkaConfig(config *kafkaConfig) (*sarama.Config, error) {
237
264
retryMax = 1000
238
265
}
239
266
k .Producer .Retry .Max = retryMax
267
+ // TODO: k.Producer.Retry.Backoff = ?
240
268
241
269
// configure per broker go channel buffering
242
270
k .ChannelBufferSize = config .ChanBufferSize
@@ -247,5 +275,12 @@ func newKafkaConfig(config *kafkaConfig) (*sarama.Config, error) {
247
275
logp .Err ("Invalid kafka configuration: %v" , err )
248
276
return nil , err
249
277
}
278
+
279
+ version , ok := kafkaVersions [config .Version ]
280
+ if ! ok {
281
+ return nil , fmt .Errorf ("Unknown/unsupported kafka version: %v" , config .Version )
282
+ }
283
+ k .Version = version
284
+
250
285
return k , nil
251
286
}
0 commit comments