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 卡夫卡主题分割函数-配置问题_Apache Kafka - Fatal编程技术网

Apache kafka 卡夫卡主题分割函数-配置问题

Apache kafka 卡夫卡主题分割函数-配置问题,apache-kafka,Apache Kafka,我正在尝试使用librdkafka(c代码库)编写一个卡夫卡制作人。我不希望我的应用程序必须手动循环一个主题上的分区数。在Kafka Producer的Java版本中,这可以通过不指定分区或密钥来实现。librdkafka中的文档说明如下: * \p partition is the target partition, either: * - RD_KAFKA_PARTITION_UA (unassigned) for * automatic partitioning usin

我正在尝试使用librdkafka(c代码库)编写一个卡夫卡制作人。我不希望我的应用程序必须手动循环一个主题上的分区数。在Kafka Producer的Java版本中,这可以通过不指定分区或密钥来实现。librdkafka中的文档说明如下:

 * \p partition is the target partition, either:
 *   - RD_KAFKA_PARTITION_UA (unassigned) for
 *     automatic partitioning using the topic's partitioner function, or
 *   - a fixed partition (0..N)
RD_EXPORT
int rd_kafka_produce(rd_kafka_topic_t *rkt, int32_t partition,
              int msgflags,
              void *payload, size_t len,
              const void *key, size_t keylen,
              void *msg_opaque);

那么,主题的分割函数是什么?我在任何地方都找不到这方面的文档。这是默认的循环吗?这是我需要在Zookeeper中启用的吗?

如果在生成时没有明确指定分区,则通过使用
RD_KAFKA_partition_UA
,librdkafka将使用分区器自动确定分区。该策略由名为
partitioner
的设置定义,默认设置为
consistent\u random
并使用

CRC32密钥散列(空密钥和空密钥随机分区)

有关详细信息,请参阅。还请注意,如果您想要与Java完全相同的行为,则需要将
partitioner
设置为
murruse2\u random


最后,您还可以编写自己的分区器逻辑。在这种情况下,需要将librdkafka中发布的
partitioner\u cb
rd\u kafka\u topic\u conf\u set\u partitioner\u cb()

定义为:int rd\u kafka\u product(rd_kafka_topic_t*rkt、int32_t分区、int msgflags、void*有效载荷、size_t len、const void*key、size_t keylen、void*msg\u不透明);只是好奇:你想用什么划分分区?注意,在product方法中,你可以手动分配一个分区,所以你不需要单独的分区函数。我想要循环,但我不想让发布者知道分区的数量。自动划分是计算散列,然后由分区共同修改unt,所以它不会暴露给制作人