golang連接kafka的示例代碼
1 下載,配置,啟動(dòng) kafka
配置修改
在config目錄下的server文件和zookeeper文件,其中分別修改kafka的日志保存路徑和zookeeper的數(shù)據(jù)保存路徑。

啟動(dòng)kafka
先啟動(dòng)kafka自帶的zookeeper,在kafka的根目錄下打開(kāi)終端,使用配置文件啟動(dòng)
./bin/windows/zookeeper-server-start.bat config/zookeeper.properties
同樣在kafka目錄的根目錄下啟動(dòng)kafka
./bin/windows/kafka-server-start.bat config/server.properties
2 使用golang的github.com/Shopify/sarama庫(kù)連接kafka
package main
import (
"fmt"
"time"
"github.com/Shopify/sarama"
)
func main() {
config:=sarama.NewConfig()
// 生產(chǎn)者配置
config.Producer.RequiredAcks=sarama.WaitForAll
config.Producer.Partitioner=sarama.NewRandomPartitioner
config.Producer.Return.Successes=true
// 封裝消息
msg:=&sarama.ProducerMessage{}
msg.Topic="shopping"
time_str:=time.Now().Format("2006-01-02 15:04:05")
msg.Value=sarama.StringEncoder("0413 test log!"+time_str)
// 連接kafka
client,err:=sarama.NewSyncProducer([]string{"127.0.0.1:9092"}, config)
if err!=nil {
fmt.Println("producer closed", err)
return
}
defer client.Close()
// 發(fā)送消息
partition,offset,err:=client.SendMessage(msg)
if err!=nil {
fmt.Println("send failed", err)
return
}
fmt.Printf("partition:%v offset:%v", partition, offset)
}
這段代碼實(shí)現(xiàn)了模擬生產(chǎn)者向kafka發(fā)送消息的過(guò)程,包含:配置生產(chǎn)者,封裝消息,消息類型是 *sarama.ProducerMessage,連接kafka,默認(rèn)端口是9092,發(fā)送消息,返回消息存儲(chǔ)的partition和offset日志偏移量。
3 確認(rèn)生產(chǎn)者發(fā)送成功
使用kafka自帶的命令行消費(fèi)者客戶端查看kafka中的數(shù)據(jù)
在kafka的根目錄下
bin/windows/kafka-console-consumer.bat --bootstrap-server 127.0.0.1:9092 --topic shopping --from-beginning
這里的topic和代碼中的topic一致,均為shopping
終端會(huì)輸出之前發(fā)送的數(shù)據(jù)。
到此這篇關(guān)于golang連接kafka的示例代碼的文章就介紹到這了,更多相關(guān)golang連接kafka內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
深入理解gorm如何和數(shù)據(jù)庫(kù)建立連接
這篇文章主要為大家詳細(xì)介紹了gorm如何和數(shù)據(jù)庫(kù)建立連接,文中的示例代碼講解詳細(xì),對(duì)我們深入了解GO語(yǔ)言有一定的幫助,需要的小伙伴可以參考下2023-11-11
golang?使用chromedp獲取頁(yè)面請(qǐng)求日志network
這篇文章主要為大家介紹了golang?使用chromedp獲取頁(yè)面請(qǐng)求日志network方法實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
go語(yǔ)言-在mac下brew升級(jí)golang
這篇文章主要介紹了go語(yǔ)言-在mac下brew升級(jí)golang,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04
GoFrame框架數(shù)據(jù)校驗(yàn)之校驗(yàn)對(duì)象校驗(yàn)結(jié)構(gòu)體
這篇文章主要為大家介紹了GoFrame框架數(shù)據(jù)校驗(yàn)之校驗(yàn)對(duì)象校驗(yàn)結(jié)構(gòu)體示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
GPT回答 go語(yǔ)言和C語(yǔ)言數(shù)組操作對(duì)比
這篇文章主要為大家介紹了GPT回答的go語(yǔ)言和C語(yǔ)言數(shù)組操作方法對(duì)比,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
Golang操作sqlite3數(shù)據(jù)庫(kù)的詳細(xì)教程
最近會(huì)使用到sqlite3,這里作個(gè)記錄,記性越來(lái)越差就是這樣,下面這篇文章主要給大家介紹了關(guān)于Golang操作sqlite3數(shù)據(jù)庫(kù)的詳細(xì)教程,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04
golang中channel+error來(lái)做異步錯(cuò)誤處理有多香
官方推薦golang中錯(cuò)誤處理當(dāng)做值處理, 既然是值那就可以在channel中傳輸,這篇文章主要介紹了golang 錯(cuò)誤處理channel+error真的香,需要的朋友可以參考下2023-01-01

