生活随笔
收集整理的這篇文章主要介紹了
Go操作Kafka
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Go操作Kafka
目錄
sarama連接kafka發送消息連接kafka消費消息
Kafka是一種高吞吐量的分布式發布訂閱消息系統,它可以處理消費者規模的網站中的所有動作流數據,具有高性能、持久化、多副本備份、橫向擴展等特點。本文介紹了如何使用Go語言發送和接收kafka消息。
1. sarama
Go語言中連接kafka使用第三方庫:github.com/Shopify/sarama。
1. 下載及安裝
go get github
.com
/Shopify
/sarama
2. 注意事項
sarama v1.20之后的版本加入了zstd壓縮算法,需要用到cgo,在Windows平臺編譯時會提示類似如下錯誤:
# github
.com
/DataDog
/zstd
exec
: "gcc":executable file not found in
%PATH
%
2. 連接kafka發送消息
package main
import ("fmt""github.com/Shopify/sarama"
)func main() {config
:= sarama
.NewConfig()config
.Producer
.RequiredAcks
= sarama
.WaitForAll config
.Producer
.Partitioner
= sarama
.NewRandomPartitioner config
.Producer
.Return
.Successes
= true msg
:= &sarama
.ProducerMessage
{}msg
.Topic
= "web_log"msg
.Value
= sarama
.StringEncoder("this is a test log")client
, err
:= sarama
.NewSyncProducer([]string{"192.168.1.7: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
)
}
3. 連接kafka消費消息
package main
import ("fmt""github.com/Shopify/sarama"
)func main() {consumer
, err
:= sarama
.NewConsumer([]string{"127.0.0.1:9092"}, nil)if err
!= nil {fmt
.Printf("fail to start consumer, err:%v\n", err
)return}partitionList
, err
:= consumer
.Partitions("web_log") if err
!= nil {fmt
.Printf("fail to get list of partition:err%v\n", err
)return}fmt
.Println(partitionList
)for partition
:= range partitionList
{ pc
, err
:= consumer
.ConsumePartition("web_log", int32(partition
), sarama
.OffsetNewest
)if err
!= nil {fmt
.Printf("failed to start consumer for partition %d,err:%v\n", partition
, err
)return}defer pc
.AsyncClose()go func(sarama
.PartitionConsumer
) {for msg
:= range pc
.Messages() {fmt
.Printf("Partition:%d Offset:%d Key:%v Value:%v", msg
.Partition
, msg
.Offset
, msg
.Key
, msg
.Value
)}}(pc
)}
}
總結
以上是生活随笔為你收集整理的Go操作Kafka的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。