php - RD_KAFKA_PARTITION_UA 在 librdkafka 中是如何工作的?

标签 php apache-kafka kafka-producer-api 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使用 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 - RD_KAFKA_PARTITION_UA 在 librdkafka 中是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62304074/

相关文章:

javascript - 根据数据库中的订单号更改行

apache-kafka - 代理复制错误 "Not authorized to access topics: [Topic authorization failed.] "

apache-kafka - 如何通过控制台/命令行/cli 使用 Confluence KSQLDB 在 KAFKA 中创建表?

apache-kafka - 如果 ISR 小于复制因子并且生产者确认设置为全部,生产者将等待多少个确认?

php - xampp无法加载imagick-不兼容的库版本

php - OpenAI GPT-3 API 错误 : "You didn' t provide an API key. 您需要使用 Bearer auth 在授权 header 中提供您的 API key ”

php - 如何在数组中查找某些 XML 项?

apache-spark - 如何将流数据集写入Kafka?

apache-kafka - Kafka 是否保证具有任何配置参数值的单个分区内的消息排序?

apache-kafka - 卡夫卡领导人选举何时举行?