繁体   English   中英

Kafka Consumer-Java客户端

[英]Kafka Consumer - Java Client

我在kafka消费者文档中看到了此注释-

由于存在许多分区,因此仍然可以平衡许多使用者实例上的负载。 但是请注意,使用者实例不能超过分区。

一个主题有50个分区。 如果我给a_numThreads值设置为50,则从每个分区中提取1条消息? 以上消息是否表示我在任何时候都不能创建超过50个线程?

public void run(int a_numThreads) {
    Map<String, Integer> topicCountMap = new HashMap<String, Integer>();
    topicCountMap.put(topic, new Integer(a_numThreads));
    Map<String, List<KafkaStream<byte[], byte[]>>> consumerMap = consumer.createMessageStreams(topicCountMap);
    List<KafkaStream<byte[], byte[]>> streams = consumerMap.get(topic);

    // now launch all the threads
    //
    executor = Executors.newFixedThreadPool(a_numThreads);

    // now create an object to consume the messages
    //
    int threadNumber = 0;
    for (final KafkaStream stream : streams) {
        executor.submit(new ConsumerTest(stream, threadNumber));
        threadNumber++;
    }
}

您正在执行a_numThreads = 50然后Executors.newFixedThreadPool(a_numThreads); 是的,这意味着您至少在任何时候都不能使用该执行器创建超过50个线程。

什么是文件的意思是,一个分区只能分配给1流,如果你不是创建50流创建51流后者会得到什么作为解释这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM