在关闭 writer 之后,写入消息后仍留下的 goroutine
作者: fjagugar创建于 2024年12月18日更新于 2026年8月11日
标签bug
描述错误
在调试项目中高 CPU 使用量时,我注意到每次向 Kafka 发送事件时,项目中运行的 goroutine 数量都在增加。发送事件的代码如下:
func (k *Client) Push(ctx context.Context, topicName string, message *kafka.Message) error {
writer := &kafka.Writer{
Addr: kafka.TCP(k.brokers...),
Topic: topicName,
Balancer: &kafka.Murmur2Balancer{},
Transport: &kafka.Transport{
TLS: k.dialer.TLS,
},
}
defer func() {
err := writer.Close()
if err != nil {
logger.Warnf("Error closing writer for topic %s: %v", topicName, err)
}
}()
return writer.WriteMessages(ctx, *message)
}运行后,我在 Intellij 调试控制台中看到 goroutine 数量增加:
内容来源: segmentio/kafka-go