【发布时间】:2018-02-01 15:07:55
【问题描述】:
当我生成消息时,我正在使用用 Go 编写的 Sarama 库从错误通道中读取。整个代码如下所示,包含在一个函数中:
producer.AsyncProducer.Input() <- &sarama.ProducerMessage{Topic: topic, Key: nil, Value: sarama.ByteEncoder(message)}
go func() {
for err := range saramaProducer.Errors() {
if producer.callbacks.OnError != nil {
producer.callbacks.OnError(err)
}
}
}()
根据我对 goroutine 的理解,我的 goroutine 会不断迭代 Errors() 频道,直到它收到一个。有没有办法让它在我的函数执行完成后停止侦听错误?
【问题讨论】:
-
如果 api 希望你在一个频道上进行范围,它应该在完成后关闭频道。