Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 是否可以使用Kafka Simple Consumer从多个分区读取数据?_Apache Kafka_Kafka Consumer Api - Fatal编程技术网

Apache kafka 是否可以使用Kafka Simple Consumer从多个分区读取数据?

Apache kafka 是否可以使用Kafka Simple Consumer从多个分区读取数据?,apache-kafka,kafka-consumer-api,Apache Kafka,Kafka Consumer Api,是否可以使用Kafka Simple Consumer从多个分区读取数据? 简单使用者在以下情况下使用分区: PartitionMetadata metadata = findLeader(brokers, port, topic, partition); SimpleConsumer consumer = new SimpleConsumer(leadBroker, port, 100000, 64 * 1024, clientName); leadBroker = findNewLeader

是否可以使用Kafka Simple Consumer从多个分区读取数据? 简单使用者在以下情况下使用分区:

PartitionMetadata metadata = findLeader(brokers, port, topic, partition);
SimpleConsumer consumer = new SimpleConsumer(leadBroker, port, 100000, 64 * 1024, clientName);
leadBroker = findNewLeader(leadBroker, topic, partition, port);

SimpleConsumer的一个实例从单个分区读取。尽管您可以轻松地创建多个SimpleConsumer实例,并按顺序或并行(从不同线程)读取不同分区


棘手的部分是不同机器上的读卡器之间的协调,这样它们就不会从同一分区读取(假设所有消息只需要处理一次)。您需要使用高级使用者或编写类似的自定义代码来完成此任务。

一个线程只能从一个分区读取。要从多个分区读取,您需要生成多个线程,每个线程将从单个分区读取。您必须在不同的线程中运行它,否则您将失去分区的好处,您的性能将受到影响

对于starter,您可以在一台机器上运行所有用户。但最终你将不得不开始使用不同的机器进行消费。此时,您需要确保一个分区只处理一次。具体地说,您需要解决的问题是,两个线程(来自不同的)正试图从同一分区读取数据。在任何时候,您都必须只允许一个人处理它

此外,还需要管理偏移。你需要定期在zookeeper中冲洗它们


我建议你使用。它比简单的消费者更容易使用。它提供了访问同一分区的不同线程之间的协调,并管理自己的偏移量

为什么这么棘手?散列等。。都是定制的,不是吗?