RD_KAFKA_PARTITION_UA 在 librdkafka 中如何工作?
How does RD_KAFKA_PARTITION_UA work in librdkafka?
我在 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 个分区。大多数情况下,当生成新消息时,它会进入与之前相同的分区,该分区由单个消费者使用,因此其他消费者闲置。
是否有任何其他分区程序分配我可以在生成消息时使用的东西?
https://github.com/arnaud-lb/php-rdkafka uses librdkafka underneath 这是一个基于 C 的 Kafka 库。
根据 docs RD_KAFKA_PARTITION_UA 用于使用 automatic partitioning using the topic's partitioner function
或者您可以传递确切的分区号而不是 RD_KAFKA_PARTITION_UA 来强制分区。
或者您调用$conf->setPartitioner(RD_KAFKA_MSG_PARTITIONER_RANDOM);
启用随机分区功能。 Here's setPartitioner
的可能常量列表
我在 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 个分区。大多数情况下,当生成新消息时,它会进入与之前相同的分区,该分区由单个消费者使用,因此其他消费者闲置。
是否有任何其他分区程序分配我可以在生成消息时使用的东西?
https://github.com/arnaud-lb/php-rdkafka uses librdkafka underneath 这是一个基于 C 的 Kafka 库。
根据 docs RD_KAFKA_PARTITION_UA 用于使用 automatic partitioning using the topic's partitioner function
或者您可以传递确切的分区号而不是 RD_KAFKA_PARTITION_UA 来强制分区。
或者您调用$conf->setPartitioner(RD_KAFKA_MSG_PARTITIONER_RANDOM);
启用随机分区功能。 Here's setPartitioner