我在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.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