kafka-producer.go

发布时间 2023-07-13 19:32:59作者: 木林coder

package producer

import (
"fmt"

"github.com/Shopify/sarama"

)

type CRead func() string

func Run(cRead CRead) {
config := sarama.NewConfig()
config.Producer.RequiredAcks = sarama.WaitForAll // 发送完数据需要leader和follower都确认
config.Producer.Partitioner = sarama.NewRandomPartitioner //写到随机分区中,我们默认设置32个分区
config.Producer.Return.Successes = true // 成功交付的消息将在success channel返回

// 构造一个消息
input := cRead()
msg := &sarama.ProducerMessage{}
msg.Topic = "sun"
msg.Value = sarama.StringEncoder(input)

// 连接kafka
client, err := sarama.NewSyncProducer([]string{"192.168.184.10:9092"}, config)
if err != nil {
	fmt.Println("Producer closed, err:", err)
	return
}
defer client.Close()

// 发送消息
pid, offset, err := client.SendMessage(msg)
if err != nil {
	fmt.Println("send msg failed, err:", err)
	return
}
fmt.Printf("pid:%v offset:%v\n", pid, offset)

}

func Test() {
fmt.Println("this is producer")
}