Apache kafka 卡夫卡主题分割函数-配置问题
我正在尝试使用librdkafka(c代码库)编写一个卡夫卡制作人。我不希望我的应用程序必须手动循环一个主题上的分区数。在Kafka Producer的Java版本中,这可以通过不指定分区或密钥来实现。librdkafka中的文档说明如下: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
* \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,所以它不会暴露给制作人