簡體   English   中英

在 kafka 主題中創建多個分區並使用 kafka-node 向所有分區發布消息

[英]Create multiple partitions in kafka topic and publish message to all of them using kafka-node

我是 kafka 的新手,並使用 kafka-node 在 nodeJS 中實現它。 我想在一個主題中創建 3 個分區並同時向所有主題發布消息。 我嘗試了以下代碼,但這里只有一個分區正在創建,所有消息都將發送到該分區。 誰能告訴我哪里出錯了。 太感謝了。

Abc.abcData = async() => {
    try 
    {
        var client = new kafka.KafkaClient();
        var topic = 'newTopic';
        var topicsToCreate = [
        {
            topic: topic,
            partitions: 3,
            replicationFactor: 2,
            replicaAssignment: [
            {
              partition: 0,
              replicas: [0]
            },
            {
                partition: 1,
                replicas: [1]
            },
            {
                partition: 2,
                replicas: [2]
            }
          ]
        },
        ]
        client.createTopics(topicsToCreate, (error, result) => {
        console.log(result);
        });
        var HighLevelProducer = kafka.HighLevelProducer;
        var producer = new HighLevelProducer(client);
        var payloads = [
        { topic: topic, messages: 'this is partition 1!!', partitions: 0},
        { topic: topic, messages: 'this is partition 2!!', partitions: 1},
        { topic: topic, messages: 'this is partition 3!!', partitions: 2}
        ];
        producer.on('ready', function () {
            producer.send(payloads, function (err, result) {
                if (err)
                    console.log(err);
                console.log(result);

            });
        });
        
    } 
    catch (err) 
    {
        console.error(err.message);
    }
};

我收到如下回復-

[ { topic: 'newTopic', error: "Topic 'newTopic' already exists." } ]
{"newTopic":{"0":6}}

在這里,您在 kafka 服務器上使用了createTopics() ,它僅在 Kafka 服務器上的auto.create.topics.enable設置為 true 時才有效。 客戶端只需向服務器發送元數據請求,服務器將自動創建主題。 當 async 設置為 false 時,該方法在所有主題創建完成后才返回,否則立即返回。 因此,這里默認創建一個帶有一個分區的主題。 要創建多個分區或使其自定義,您必須在server.property文件中添加以下行 -

auto.create.topics.enable=false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM