【发布时间】:2018-10-26 23:25:11
【问题描述】:
我正在尝试使用 librdkafka(c 代码库)编写一个 Kafka 生产者。我不希望我的应用程序必须通过主题上的分区数手动循环。在 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 中启用的功能吗?
【问题讨论】:
-
在librdkafka中发布的定义为: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);跨度>
-
只是好奇:你想用什么做什么来分区?注意在produce方法中,可以手动分配分区,不需要单独的分区函数
-
我想要循环,但我不希望发布者必须知道分区数。
-
自动分区将计算哈希,然后根据分区计数进行修改,因此无论如何它都不会暴露给生产者
标签: apache-kafka