一. 准备
安装依赖库sarama go get github.com/Shopify/sarama 该库要求kafka版本在0.8及以上,支持kafka定义的high-level API和low-level API,但不支持常用的consumer自动rebalance和offset追踪,所以一般得结合cluster版本使用。
sarama-cluster依赖库 go get github.com/bsm/sarama-cluster 需要kafka 0.9及以上版本
代码示例来自官网(本地已测试),可到官网查看更多信息。
二. 生产者
1. 同步消息模式
import (
"github.com/Shopify/sarama"
"time"
"log"
"fmt"
"os"
"os/signal"
"sync"
)
var Address = []string {
"10.130.138.164:9092" ,"10.130.138.164:9093" ,"10.130.138.164:9094" }
func main() {
syncProducer(Address)
}
func syncProducer(address []string ) {
config := sarama.NewConfig()
config.Producer.Return.Successes = true
config.Producer.Timeout = 5 * time.Second
p, err := sarama.NewSyncProducer(address, config)
if err != nil {
log.Printf("sarama.NewSyncProducer err, message=%s \n" , err)
return
}
defer p.Close()
topic := "test"
srcValue := "sync: this is a message. index=%d"
for i:=0 ; i<10 ; i++ {
value := fmt.Sprintf(srcValue, i)
msg := &sarama.ProducerMessage{
Topic:topic,
Value:sarama.ByteEncoder(value),
}
part, offset, err := p.SendMessage(msg)
if err != nil