Apache Kafka - KafkaStream on topic/partition

前端 未结 3 1914
夕颜
夕颜 2021-02-06 04:23

I am writing Kafka Consumer for high volume high velocity distributed application. I have only one topic but rate incoming messages is very high. Having multiple partition that

3条回答
  •  太阳男子
    2021-02-06 05:10

    Would like to share what I found from mailing list:

    The number that you pass in the topic map controls how many streams a topic is divided into. In your case, if you pass in 1, all 10 partitions's data will be fed into 1 stream. If you pass in 2, each of the 2 streams will get data from 5 partitions. If you pass in 11, 10 of them will each get data from 1 partition and 1 stream will get nothing.

    Typically, you need to iterate each stream in its own thread. This is because each stream can block forever if there is no new event.

    Sample snippet:

    topicCount.put(msgTopic, new Integer(partitionCount));
    Map>> consumerStreams = connector.createMessageStreams(topicCount);
    List> streams = consumerStreams.get(msgTopic);
    
    for (final KafkaStream stream : streams) {
        ReadTask task = new ReadTask(stream, msgTopic);
        task.addObserver(this.msgObserver);
        tasks.add(task); executor.submit(task);
    }
    

    Reference: http://mail-archives.apache.org/mod_mbox/incubator-kafka-users/201201.mbox/%3CCA+sHyy_Z903dOmnjp7_yYR_aE2sRW-x7XpAnqkmWaP66GOqf6w@mail.gmail.com%3E

提交回复
热议问题