#1358·kafka-go

在关闭 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 数量增加:

image

内容来源: segmentio/kafka-go