婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > golang連接kafka消費(fèi)進(jìn)ES操作

golang連接kafka消費(fèi)進(jìn)ES操作

熱門標(biāo)簽:杭州人工智能電銷機(jī)器人費(fèi)用 赤峰電銷 谷歌美發(fā)店地圖標(biāo)注 利用地圖標(biāo)注位置 400開頭電話怎樣申請(qǐng) 地圖區(qū)域圖標(biāo)注后導(dǎo)出 江蘇呼叫中心外呼系統(tǒng)有效果嗎 貴州電話智能外呼系統(tǒng) 官渡電銷外呼管理系統(tǒng)怎么收費(fèi)

1.首先初始化conf配置把kafka和ES的地址配置好還有一個(gè)日志方便查看

配置信息如下 用到的庫(kù)是

github.com/astaxie/beego/config
[logs]
log_level = debug
log_path = "./logs/log_transfer.log"
[kafka]
server_addr = 192.168.0.134:9092
topic = nginx_log
[ES]
addr = http://192.168.0.134:9200/

2.讀取conf配置存取進(jìn)結(jié)構(gòu)體

type LogConfig struct {
  kafkaAddr string
  ESAddr string
  LogPath string
  LogLevel string
  Topic string
}
var (
   logConfig *LogConfig
)

3.讀取conf配置代碼如下

func initConfig(conftype string,filename string)(err error) {
   conf, err := config. NewConfig(conftype,filename)
   if err != nil {
    fmt. Println( "new config faild,err:",err)
     return
  }
   logConfig = LogConfig{}
   logConfig.LogLevel = conf. String( "logs::log_level")
   if len(logConfig.LogLevel) == 0 {
     logConfig.LogLevel = "debug"
  }
   logConfig.LogPath = conf. String( "logs::log_path")
   if len(logConfig.LogPath) == 0 {
     logConfig.LogPath = "./logs"
  }
   logConfig.kafkaAddr = conf. String( "kafka::server_addr")
   if len(logConfig.kafkaAddr) == 0 {
     err = fmt. Errorf( "invalid kafka addr err")
     return
  }
   logConfig.ESAddr = conf. String( "ES::addr")
   if len(logConfig.ESAddr) == 0 {
     err = fmt. Errorf( "invalid ES addr err")
     return
  }
   logConfig.Topic = conf. String( "kafka::topic")
   if len(logConfig.Topic) == 0 {
     err = fmt. Errorf( "invalid topic addr err")
     return
  }
   return
}

4.完成了initConfig的初始化

5.初始化initLogger

func convertLogLevel(level string) int {
   switch(level) {
     case "debug":
       return logs.LevelDebug
     case "warn":
       return logs.LevelWarn
     case "info":
       return logs.LevelInfo
     case "trace":
       return logs.LevelTrace
  }
   return logs.LevelDebug
}
func initLogger(logpath string, logLevel string) (err error) {
   config := make( map[ string] interface{})
  config[ "filename"] = logpath
  config[ "level"] = convertLogLevel(logLevel)
   configStr, err := json. Marshal(config)
   if err!= nil {
    fmt. Println( "marshal failed,err:",err)
     return
  }
  logs. SetLogger(logs.AdapterFile, string(configStr))
   return
}

6.初始化kafka

type KafkaClient struct {
  client sarama.Consumer
  addr string
  topic string
  wg sync.WaitGroup
}
var (
   kafkaClient *KafkaClient
)
func initKafKa(addr string,topic string)(err error) {
   kafkaClient = KafkaClient{}
   consumer, err := sarama. NewConsumer(strings. Split(addr, ","), nil)
   if err != nil {
    logs. Error( "Failed to strat consumer :",err)
     return 
  }
   kafkaClient.client = consumer
   kafkaClient.addr = addr
   kafkaClient.topic = topic
   return
}

7.初始化ES

gopkg.in/olivere/elastic.v2 // 這個(gè)是操作ES的庫(kù)

type LogMessage struct {
  App string
  Topic string
  Message string
}
var (
   esClient *elastic.Client
)
func initES(addr string)(err error) {
  
   client, err := elastic. NewClient(elastic. SetSniff( false),elastic. SetURL(addr))
   if err != nil {
    fmt. Println( "connect es error",err)
     return
  }
   esClient = client
   return
}

8.干活把kafka的數(shù)據(jù)寫入ES

github.com/Shopify/sarama 這個(gè)是操作kafka的驅(qū)動(dòng)庫(kù)

func run()(err error) {
  fmt. Println( "run")
   partitionList, err := kafkaClient.client. Partitions(kafkaClient.topic)
   if err != nil {
    logs. Error( "ini failed ,err:%v",err)
    fmt. Printf( "ini failed ,err:%v",err)
     return
  }
   for partition := range partitionList {
    fmt. Println( "for進(jìn)入")
     pc, errRet := kafkaClient.client. ConsumePartition(kafkaClient.topic, int32(partition),sarama.OffsetNewest)
     if errRet != nil {
       err = errRet
      logs. Error( "Failed to start consumer for partition %d: %s \n ",partition,err)
      fmt. Printf( "Failed to start consumer for partition %d: %s \n ",partition,err)
       return
    }
     defer pc. AsyncClose()
    fmt. Println( "馬上進(jìn)入?yún)f(xié)程")
    kafkaClient.wg. Add( 1)
     go func(pc sarama.PartitionConsumer){
      fmt. Println( "進(jìn)來了")
      
       for msg := range pc. Messages() {
        fmt. Println( "func執(zhí)行")
        logs. Debug( "Partition:%d,Offset:%d,key:%s,value:%s",msg.Partition,msg.Offset, string(msg.Key), string(msg.Value))
         //fmt.Println()
         err = sendToES(kafkaClient.topic,msg.Value)
         if err != nil {
          logs. Warn( "send to es failed,err:%v",err)
        }
      }
      kafkaClient.wg. Done()
    }(pc)    
  }
  kafkaClient.wg. Wait()
  fmt. Println( "協(xié)程執(zhí)行完畢")
   return
}

上面代碼是讀kafka消費(fèi)數(shù)據(jù)通過sendToES這個(gè)函數(shù)發(fā)送至ES里面

sendToES代碼如下

func sendToES(topic string,data [] byte) (err error) {
   msg := LogMessage{}
   msg.Topic = topic
   msg.Message = string(data)
   _, err = esClient. Index().
       Index(topic).
       Type(topic).
       BodyJson(msg).
       Do()
     if err != nil {
      
       return
    }
   return
}

Index就是索引名稱

index().type().bodyjson().do()這樣的寫法是鏈?zhǔn)綀?zhí)行操作

9.寫完了基本操作后 再寫一個(gè)模擬寫入數(shù)據(jù)進(jìn)kafka的數(shù)據(jù) 代碼如下

func main() {
config := sarama. NewConfig()
config.Producer.RequiredAcks = sarama.WaitForAll
config.Producer.Partitioner = sarama.NewRandomPartitioner
config.Producer.Return.Successes = true
client, err := sarama. NewSyncProducer([] string{ "127.0.0.1:9092"}, config)
if err != nil {
fmt. Println( "producer close,err:", err)
return
}
defer client. Close()
var n int= 0
for {
n++
msg := sarama.ProducerMessage{}
msg.Topic = "nginx_log"
msg.Value = sarama. StringEncoder( "this is a good test,hello maomaoChong!!," + strconv. Itoa(n))
pid, offset, err := client. SendMessage(msg)
if err != nil {
fmt. Println( "send message failed,", err)
return
}
fmt. Printf( "pid:%v offset:%v \n ", pid, offset)
time. Sleep(time.Second * 2)
}
}

這個(gè)就是生產(chǎn)者往kafka里面寫入數(shù)據(jù)進(jìn)去消費(fèi)

10.我們啟動(dòng)我們的kafka 注意kafka依賴于zookeeper 先啟動(dòng)ZK然后啟動(dòng)kafka

我這里用的是zookeeper-3.4.12網(wǎng)上有下載

啟動(dòng)ZK

ZK已經(jīng)成功啟動(dòng)

11.啟動(dòng)kafka 我這里是kafka_2.11-1.1.0

.\bin\windows\kafka-server-start.bat .\config\server.properties

kafka已經(jīng)跑起來了

12.把kafka消費(fèi)測(cè)試端也啟動(dòng)

.\bin\windows\kafka-console-consumer.bat --topic nginx_log --zookeeper 127.0.0.1 2181

消費(fèi)端啟動(dòng)成功 一直等待數(shù)據(jù)進(jìn)來消費(fèi)

13.然后我們把ES 和Kib 都啟動(dòng)了

這是我們的ES版本是5.5.1的 已經(jīng)跑起來了 接著啟動(dòng)我們的kib

kib里面有個(gè)配置config下面的叫kibana.yml里面設(shè)置好ES的地址和端口就處于監(jiān)聽ES狀態(tài)

啟動(dòng)kib有點(diǎn)慢 稍微等一下就好

此時(shí)啟動(dòng)好了kib

14.測(cè)試kib是否啟動(dòng)

默認(rèn)地址是http://localhost:5601

進(jìn)入成功 確定沒問題

15.編譯我們的代碼 寫數(shù)據(jù)進(jìn)kafka

從上面看我們知道一個(gè)再寫 一個(gè)再消費(fèi)

16.編譯運(yùn)行我們把kafka寫入進(jìn)ES里面的代碼

運(yùn)行了 這里就把kafka消費(fèi)的數(shù)據(jù) 寫入進(jìn)ES里面

17.我們看一下數(shù)據(jù)是否有 進(jìn)入kib

我們看到有數(shù)據(jù)了 已經(jīng)成功了~

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • Golang 實(shí)現(xiàn)Thrift客戶端連接池方式
  • golang 通過ssh代理連接mysql的操作
  • 淺談golang結(jié)構(gòu)體偷懶初始化
  • golang實(shí)現(xiàn)各種情況的get請(qǐng)求操作
  • Golang 實(shí)現(xiàn)分片讀取http超大文件流和并發(fā)控制
  • 在Golang中使用http.FileServer返回靜態(tài)文件的操作
  • golang 生成定單號(hào)的操作

標(biāo)簽:宜春 武漢 保定 河池 松原 黔西 泰安 鷹潭

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《golang連接kafka消費(fèi)進(jìn)ES操作》,本文關(guān)鍵詞  golang,連接,kafka,消費(fèi),進(jìn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《golang連接kafka消費(fèi)進(jìn)ES操作》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于golang連接kafka消費(fèi)進(jìn)ES操作的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    成人免费视频app| 美国精品在线观看| 美国精品在线观看| 欧美伦理电影网| 亚洲主播在线观看| 高清不卡一区二区| 中文无字幕一区二区三区| 国产精品一级二级三级| 久久精品视频免费观看| 成人激情电影免费在线观看| 亚洲欧美日韩在线播放| 色婷婷av一区二区三区大白胸 | 久久日一线二线三线suv| 国产综合色视频| 美国十次综合导航| 91精品国产手机| 狠狠色2019综合网| 日本一区二区三区国色天香| 99精品视频免费在线观看| 国产精品久久久久久久久快鸭| 成人免费黄色在线| 亚洲最新视频在线播放| 在线区一区二视频| 午夜视频久久久久久| 制服丝袜激情欧洲亚洲| 韩国精品主播一区二区在线观看| 91精品国产一区二区| 黑人巨大精品欧美一区| 中文字幕成人在线观看| 在线视频中文字幕一区二区| 伦理电影国产精品| 欧美大黄免费观看| 狠狠狠色丁香婷婷综合激情| 亚洲国产岛国毛片在线| 欧美日韩一区二区三区免费看| 亚洲国产wwwccc36天堂| 精品国产百合女同互慰| 一区二区中文字幕在线| 欧美日本不卡视频| 日韩av网站免费在线| 6080国产精品一区二区| 久久精品国产999大香线蕉| 欧美日韩高清影院| 粉嫩av一区二区三区在线播放| 一区二区三区四区av| 精品视频资源站| 99久久99久久精品免费观看 | 欧美午夜精品免费| 成人午夜伦理影院| 黄色日韩三级电影| 亚洲第一久久影院| 亚洲精品一区二区三区福利| 一区二区在线观看免费| 国产亚洲污的网站| 欧美日韩国产区一| av一区二区久久| 韩国v欧美v日本v亚洲v| 五月天网站亚洲| 亚洲欧洲精品天堂一级| 精品蜜桃在线看| 在线观看国产一区二区| 懂色av一区二区夜夜嗨| 黑人精品欧美一区二区蜜桃| 亚洲综合色成人| 中文字幕一区av| 久久精品日产第一区二区三区高清版| 91猫先生在线| 国产一区二区三区av电影| 亚洲电影一级黄| 亚洲老妇xxxxxx| 国产精品福利一区二区三区| 日本一区二区三区四区| 欧美一区二区三区四区在线观看| 成人亚洲一区二区一| 一区二区在线观看免费| 国产亚洲一区二区三区在线观看| 在线国产电影不卡| 不卡在线观看av| 粉嫩av一区二区三区| 成人国产精品免费观看视频| 蜜桃精品在线观看| 亚洲线精品一区二区三区| 亚洲欧洲无码一区二区三区| 久久婷婷久久一区二区三区| 国产色一区二区| 久久综合九色综合欧美98| 欧美精品一区二区三区高清aⅴ| 精品国产一区二区精华| 国产精品色哟哟网站| 亚洲第一福利视频在线| 久久成人免费日本黄色| 国产99精品在线观看| 91色porny在线视频| 欧美另类变人与禽xxxxx| 国产精品影音先锋| 一区二区三区欧美| 午夜精品久久久久久久| 蜜臀av性久久久久蜜臀aⅴ四虎| 美女视频免费一区| 99久久精品费精品国产一区二区| 日本乱人伦一区| 欧美一级片在线看| 欧美国产日韩一二三区| 中文字幕制服丝袜成人av| 午夜视频在线观看一区二区三区| 亚洲小说春色综合另类电影| 日韩av一区二区在线影视| 91亚洲精品久久久蜜桃| 欧美精品1区2区| 国产精品乱码久久久久久| 亚洲午夜精品在线| 美女国产一区二区三区| 色94色欧美sute亚洲线路一ni| 精品粉嫩aⅴ一区二区三区四区| 亚洲午夜精品久久久久久久久| 国产v综合v亚洲欧| 日韩一区二区三区三四区视频在线观看| 国产精品久久久一本精品| 极品美女销魂一区二区三区| 日本高清不卡视频| 精品国产凹凸成av人网站| 亚洲影院在线观看| av在线一区二区| 日韩欧美你懂的| 中文字幕字幕中文在线中不卡视频| 丝袜亚洲另类丝袜在线| 337p日本欧洲亚洲大胆精品| 亚洲素人一区二区| 豆国产96在线|亚洲| 久久青草欧美一区二区三区| 亚洲电影激情视频网站| 91视频精品在这里| 国产精品的网站| 国产最新精品精品你懂的| 欧美电影在线免费观看| 国产校园另类小说区| 亚洲风情在线资源站| 91国产免费看| 亚洲综合清纯丝袜自拍| 欧美性色黄大片手机版| 亚洲宅男天堂在线观看无病毒| 99久久伊人网影院| 亚洲视频电影在线| 91国产丝袜在线播放| 亚洲影院在线观看| 欧美精品丝袜中出| 五月婷婷激情综合| 91麻豆精品国产91久久久资源速度 | 亚洲午夜免费电影| 在线视频你懂得一区| 亚洲国产精品久久人人爱蜜臀| 欧美偷拍一区二区| 日韩1区2区3区| 欧美va在线播放| 国产一区二区在线观看视频| 久久新电视剧免费观看| 韩国女主播成人在线| 国产精品久久久久影视| 在线视频一区二区三| 午夜欧美电影在线观看| 精品国产凹凸成av人导航| 国产成人精品一区二区三区四区 | 日本亚洲一区二区| 久久在线观看免费| 91麻豆精品视频| 天堂蜜桃91精品| 国产欧美日韩综合精品一区二区| 91麻豆福利精品推荐| 香蕉加勒比综合久久| 日韩免费福利电影在线观看| 成人av在线资源网站| 午夜精品久久久久久久99水蜜桃| 久久人人97超碰com| 色婷婷综合久久久久中文一区二区 | 亚洲成a人v欧美综合天堂| 欧美刺激脚交jootjob| av高清久久久| 久久国内精品自在自线400部| 亚洲欧美日韩国产综合| 欧美一区二区三区人| 99国产欧美另类久久久精品| 人人爽香蕉精品| 夜夜嗨av一区二区三区中文字幕| 2021久久国产精品不只是精品| 91精品福利在线| 成人免费高清视频在线观看| 蜜桃视频一区二区三区 | 玉足女爽爽91| 久久久精品影视| 欧美色视频在线| 不卡免费追剧大全电视剧网站| 日本成人在线看| 亚洲一区二区三区不卡国产欧美| 国产精品第四页| 国产欧美日韩不卡免费| 这里只有精品电影| 欧美伊人久久久久久久久影院| 成人免费三级在线| 精品一二三四区| 麻豆成人久久精品二区三区红|