golang連接kafka的示例代碼
1 下載,配置,啟動(dòng) kafka
配置修改
在config目錄下的server文件和zookeeper文件,其中分別修改kafka的日志保存路徑和zookeeper的數(shù)據(jù)保存路徑。
啟動(dòng)kafka
先啟動(dòng)kafka自帶的zookeeper,在kafka的根目錄下打開終端,使用配置文件啟動(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庫連接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ā)送消息的過程,包含:配置生產(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)文章
Golang的命名規(guī)范及最佳實(shí)踐(推薦!)
這篇文章主要給大家介紹了關(guān)于Golang的命名規(guī)范及最佳實(shí)踐的相關(guān)資料,命名規(guī)則涉及變量、常量、全局函數(shù)、結(jié)構(gòu)、接口、方法等的命名,文中介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10golang的時(shí)區(qū)和神奇的time.Parse的使用方法
這篇文章主要介紹了golang的時(shí)區(qū)和神奇的time.Parse的使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04go日志系統(tǒng)logrus顯示文件和行號(hào)的操作
這篇文章主要介紹了go日志系統(tǒng)logrus顯示文件和行號(hào)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-11-11golang?MySQL實(shí)現(xiàn)對(duì)數(shù)據(jù)庫表存儲(chǔ)獲取操作示例
這篇文章主要為大家介紹了golang?MySQL實(shí)現(xiàn)對(duì)數(shù)據(jù)庫表存儲(chǔ)獲取操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11Go語言中的流程控制結(jié)構(gòu)和函數(shù)詳解
這篇文章主要介紹了Go語言中的流程控制結(jié)構(gòu)和函數(shù)詳解,本文詳細(xì)講解了if、goto、for、switch等控制語句,同時(shí)對(duì)函數(shù)相關(guān)知識(shí)做了講解,需要的朋友可以參考下2014-10-10深入解析快速排序算法的原理及其Go語言版實(shí)現(xiàn)
這篇文章主要介紹了快速排序算法的原理及其Go語言版實(shí)現(xiàn),文中對(duì)于快速算法的過程和效率有較為詳細(xì)的說明,需要的朋友可以參考下2016-04-04Golang爬蟲及正則表達(dá)式的實(shí)現(xiàn)示例
本文主要介紹了Golang爬蟲及正則表達(dá)式的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12