gpt4 book ai didi

java - 指定 Kafka 生产者的分区数

转载 作者:行者123 更新时间:2023-12-04 05:07:42 30 4
gpt4 key购买 nike

我有来自网页的以下代码 https://cwiki.apache.org/confluence/display/KAFKA/0.8.0+Producer+Example
似乎缺少的是如何配置分区数。我想指定 4 个分区,但总是以 2 个分区的默认值结束。如何将代码更改为具有 4 个分区(不更改默认值)。

    Properties props = new Properties();

props.put("metadata.broker.list", "localhost:9092,broker2:9092");
props.put("serializer.class", "kafka.serializer.StringEncoder");
props.put("partitioner.class", "com.gnip.kafka.SimplePartitioner");
props.put("request.required.acks", "1");
props.put("num.partitions", 4);

ProducerConfig config = new ProducerConfig(props);
Producer<String, String> producer = new Producer<String, String>(config);

Random rnd = new Random();
for (long nEvents = 0; nEvents < 1000; nEvents++) {
long runtime = new Date().getTime();
String ip = "192.168.2." + rnd.nextInt(255);
String msg = runtime + ",www.example.com," + ip;
KeyedMessage<String, String> data = new KeyedMessage<String, String>("page_visits2", ip, msg);
producer.send(data);
}

producer.close();

最佳答案

Kafka producer api 不允许您创建自定义分区,如果您尝试向不存在的主题生成一些数据,如果auto.create.topics.enable 它将首先创建主题。属性(property)在BrokerConfig设置为 并开始在相同的位置发布数据,但为此主题创建的分区数量将基于 num.partitions配置文件中定义的参数(默认设置为 1)。
可以增加现有主题的分区数,但不会将任何现有数据移动到这些分区中。
要创建具有不同分区数的主题,您需要先创建主题,并且可以使用 Kafka 发行版附带的控制台脚本完成相同的操作。以下命令将允许您创建一个具有 2 个分区的主题(由 --partition 标志指定)

    bin/kafka-create-topic.sh --zookeeper localhost:2181 --replica 3 --partition 2 --topic my-custom-topic
不幸的是,就我的理解而言,目前没有直接的替代方法可以实现这一目标。

关于java - 指定 Kafka 生产者的分区数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22152269/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com