第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

動(dòng)態(tài)添加 Kafka 主題以供使用,而無需重新啟動(dòng)我的 GoLang 應(yīng)用程序

動(dòng)態(tài)添加 Kafka 主題以供使用,而無需重新啟動(dòng)我的 GoLang 應(yīng)用程序

Go
阿波羅的戰(zhàn)車 2022-06-01 11:19:43
我有一個(gè) Golang 應(yīng)用程序,它基本上以 Kafka 消費(fèi)者為起點(diǎn)。我在運(yùn)行時(shí)從 MongoDB 獲取要收聽的主題列表。但是,每次我要添加一個(gè)新的主題來聽,添加到Mongo之后,我必須重新啟動(dòng)整個(gè)Golang應(yīng)用程序。消費(fèi)者位于主文件本身中。我正在使用 Confluent 作為客戶端。有沒有辦法在不重新啟動(dòng)應(yīng)用程序的情況下添加更多主題來消費(fèi)?
查看完整描述

3 回答

?
慕尼黑8549860

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊

您是否嘗試過使用regular expressions.


例子 :


consume, err := kafka.NewConsumer(&kafka.ConfigMap{

                     "bootstrap.servers":  "server",

})


err = consume.SubscribeTopics([]string{"^.*_mypattern"}, nil)

來源:https ://github.com/confluentinc/confluent-kafka-go/issues/96


在初始化 consumer 時(shí)也嘗試設(shè)置此選項(xiàng)metadata.max.age.ms。這將刷新元數(shù)據(jù)以查看是否有任何新主題可用。


查看完整回答
反對(duì) 回復(fù) 2022-06-01
?
GCT1015

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊

該邏輯的代碼片段會(huì)有所幫助。


您可以使用Mongo Change Streams來做到這一點(diǎn)。

例如,要查看集合的更改,請(qǐng)使用以下Collection.Watch()方法 -


var collection *mongo.Collection


// specify a pipeline that will only match "insert" events

// specify the MaxAwaitTimeOption to have each attempt wait two seconds for new documents

matchStage := bson.D{{"$match", bson.D{{"operationType", "insert"}}}}

opts := options.ChangeStream().SetMaxAwaitTime(2 * time.Second)

changeStream, err := collection.Watch(context.TODO(), mongo.Pipeline{matchStage}, opts)

if err != nil {

    log.Fatal(err)

}


// print out all change stream events in the order they're received

// see the mongo.ChangeStream documentation for more examples of using change streams

for changeStream.Next(context.TODO()) {

    fmt.Println(changeStream.Current)

    // NewConsumer

}

然后創(chuàng)建一個(gè)新的消費(fèi)者或者.SubscribeTopics()在你更新你的集合并且它符合你的標(biāo)準(zhǔn)時(shí)調(diào)用


查看完整回答
反對(duì) 回復(fù) 2022-06-01
?
江戶川亂折騰

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊

如果需要,消費(fèi)者可以使用來自動(dòng)態(tài)主題的消息。我認(rèn)為您可能使用 Redis PubSub 而不是 Kafka。

因?yàn)楫?dāng)您需要從最近創(chuàng)建的主題中消費(fèi)時(shí),消費(fèi)者必須重新連接到代理,并且在頻繁添加新主題時(shí)成本很高。

我假設(shè)新主題描述了一個(gè)聊天室/組。如果正確,Redis PubSub Subscription 比 Kafka Consumer 輕。您可以將頻道用作聊天室/群組。

或者您可以同時(shí)使用 Kafka 和 Redis PubSub,在從 Kafka 消費(fèi)創(chuàng)建的房間/組事件后,將其設(shè)置為 Redis PubSub 的頻道,您就可以開始訂閱了。



查看完整回答
反對(duì) 回復(fù) 2022-06-01
  • 3 回答
  • 0 關(guān)注
  • 232 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)