func (c *client) Init(conf config.Config, topic string) (err error) {
defer func() {
p := recover()
switch v := p.(type) {
case error:
err = v
}
}()
c.reader = kafka.NewReader(kafka.ReaderConfig{
Brokers: conf.Brokers,
GroupID: conf.GroupID,
Topic: topic,
MaxWait: 1 * time.Second, // maximum time to wait for new messages
MinBytes: 1, // minimum message size
MaxBytes: 10e6, // maximum message size 1 MByte (= maximum size Kafka can handle)
RetentionTime: time.Hour * 24 * 7, // keep ConsumerGroup for 1 week
WatchPartitionChanges: true, // watch for changes to the partitions (e.g. increase of partitions)
})
if conf.TlsEnabled {
d := &kafka.Dialer{
TLS: &tls.Config{},
}
}
return err
}
长话短说:如果TlsEnabled为真,我想要做的是将字段Dialer: d
添加到c.reader
中!C.Reader的ReaderConfig类型已经包含拨号程序字段,在本例中为:
d := &kafka.Dialer{
TLS: &tls.Config{},
}
2条答案
按热度按时间pqwbnv8z1#
如果我正确理解了您的问题,当且仅当
conf.TlsEnabled
为真时,您才希望在kafka.ReaderConfig
上设置Dialer
字段。在这种情况下,您只需在调用kafka.NewReader
之前移动if conf.TlsEnabled
检查,并将kafka.ReaderConfig
赋给一个变量,如下所示:只有一个小小的挑剔:在Golang中,首字母缩写和其他缩写应该全部大写。您的配置类型不应该有一个名为
TlsEnabled
的字段,而应该是TLSEnabled
。yh2wf1be2#
您不能向现有类型添加字段,但可以将
client
嵌入自定义类型。然后可以通过自定义类型直接访问这些字段