在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/人工智能  C++  GO/ kafka多個(gè)消費(fèi)者只有一個(gè)消費(fèi)

kafka多個(gè)消費(fèi)者只有一個(gè)消費(fèi)

使用goalng "github.com/Shopify/sarama"這個(gè)庫(kù)

我現(xiàn)在有兩個(gè)消費(fèi)者,兩個(gè)topic,kafka分區(qū)設(shè)定是50個(gè),但是在實(shí)際運(yùn)行過(guò)程中只有一個(gè)消費(fèi)者在消費(fèi),關(guān)閉當(dāng)前能消費(fèi)的消費(fèi)者,另外一個(gè)也可以消費(fèi),但是同時(shí)運(yùn)行是就不行

看網(wǎng)上的文檔說(shuō)的是因?yàn)榉謪^(qū)不夠的原因,但是我現(xiàn)在設(shè)定了50個(gè)分區(qū),只有兩個(gè)消費(fèi)者
代碼1

    producerConfig := sarama.NewConfig()
    producerConfig.Producer.Partitioner = sarama.NewHashPartitioner
    producerConfig.Producer.Return.Successes = true
    producerConfig.Producer.Timeout = 5 * time.Second
    producer, err = sarama.NewSyncProducer([broker實(shí)例地址], producerConfig)


    kafka_msg := &sarama.ProducerMessage{
        Topic:topic,
        Key:sarama.StringEncoder(key),
        Value: sarama.StringEncoder(value),
    }
    partition, offset, err := producer.SendMessage(kafka_msg)

這樣,投遞成功之后返回的分區(qū)id永遠(yuǎn)是0,我懷疑是不是因?yàn)槲曳謪^(qū)設(shè)置值沒(méi)有生效,

,但是因?yàn)槭堑谝淮斡胟afka,所以不確定,

于是使用下一個(gè)方式
代碼2

    producerConfig := sarama.NewConfig()
    // producerConfig.Producer.Partitioner = sarama.NewHashPartitioner
    producerConfig.Producer.Return.Successes = true
    producerConfig.Producer.Timeout = 5 * time.Second
    producer, err = sarama.NewSyncProducer([broker實(shí)例地址], producerConfig)


    kafka_msg := &sarama.ProducerMessage{
        Topic:topic,
        Key:sarama.StringEncoder(key),
        Value: sarama.StringEncoder(value),
        Partition: 7 ,
    }
    partition, offset, err := producer.SendMessage(kafka_msg)

這樣設(shè)置后投遞成功分區(qū)返回也是0。

我想確認(rèn)的是,在分區(qū)設(shè)置生效的前提先,如果我用代碼2來(lái)寫(xiě),最終投遞到的分區(qū)是不是7 ?

我現(xiàn)在懷疑是因?yàn)榉謪^(qū)配置沒(méi)有生效
請(qǐng)大神解答

回答
編輯回答
任她鬧

kafka里面有單播和廣播的區(qū)別,對(duì)一條消息來(lái)說(shuō),同一個(gè)消費(fèi)組內(nèi)的消費(fèi)者有競(jìng)態(tài)關(guān)系,只有一個(gè)消費(fèi)者能消費(fèi),這個(gè)是單播;同樣,對(duì)一條消息,不同消費(fèi)組的消費(fèi)者都可以同時(shí)消費(fèi),這是多播。假如你想讓兩個(gè)消費(fèi)者都能同時(shí)消費(fèi)到消息,你可以將這兩個(gè)消費(fèi)者放在不同的消費(fèi)組,這個(gè)需要消費(fèi)端的groupId屬性來(lái)設(shè)置。

2017年6月3日 09:34
編輯回答
初心

一個(gè)分區(qū)只能被消費(fèi)者組中的一個(gè)消費(fèi)者消費(fèi),我猜你這里是因?yàn)槊看伟l(fā)送的消息都發(fā)送到了同一個(gè)分區(qū)

2017年3月31日 15:03
編輯回答
祉小皓

你的兩個(gè)消費(fèi)者應(yīng)該是在同一個(gè)分組中,在kafka中,一條消息可以被多個(gè)分組消費(fèi),但是只能被一個(gè)分組中的一個(gè)消費(fèi)者消費(fèi)。

2018年1月10日 22:11