RD_KAFKA_PARTITION_UA在librdkafka中如何工作?

问题描述 投票:2回答:1

我在php中有一个生产者,它可以发布到队列中。我使用的是 php-rdkafka 的库。

以下是代码。

        $conf->set('log_level', LOG_DEBUG);
        $conf->set('debug', 'all');
        $rk = new RdKafka\Producer($conf);
        $rk->addBrokers("34.93.118.165:9092");
        $topic = $rk->newTopic("download_first");
        $topic->produce(RD_KAFKA_PARTITION_UA, 0, utf8_encode($message));
        $rk->flush(100);

我有2个Python消费者从队列中消费。

这个主题有10个分区。大多数情况下,当一个新的消息被产生时,它被转到和之前一样的分区,而这个分区被一个消费者消费,结果另一个消费者闲置了。

有什么其他的分区分配方法可以让我在生产消息的时候使用吗?

apache-kafka kafka-producer-api librdkafka
1个回答
2
投票

https:/github.comarnaud-lbphp-rdkafka。 使用librdkafka 在...下面 是一个基于C语言的Kafka库。

根据 文件 RD_KAFKA_PARTITION_UA用于使用 automatic partitioning using the topic's partitioner function 或者你可以通过精确的分区号代替RD_KAFKA_PARTITION_UA来强制分区。

或者你可以调用 $conf->setPartitioner(RD_KAFKA_MSG_PARTITIONER_RANDOM); 用于启用随机分区器功能。下面是 的可能常量列表。setPartitioner

© www.soinside.com 2019 - 2024. All rights reserved.