【发布时间】:2022-04-03 17:23:05
【问题描述】:
我知道配额基于client-id。基本上我想用特定的客户端 ID 运行 kafka-producer-perf-test 来测试配额是否正常工作。
如何为特定的生产者(或)分区分配client-id?
【问题讨论】:
标签: apache-kafka kafka-producer-api
我知道配额基于client-id。基本上我想用特定的客户端 ID 运行 kafka-producer-perf-test 来测试配额是否正常工作。
如何为特定的生产者(或)分区分配client-id?
【问题讨论】:
标签: apache-kafka kafka-producer-api
创建生产者时,可以为client.id属性分配唯一值
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("client.id", "testclient001");
//set any additional properties.
Producer<String, GenericRecord> producer = new KafkaProducer<String, GenericRecord>(props);
【讨论】:
您可以使用ProducerRecord 指定要发送消息的分区。说分区 0。创建KafkaConsumer 并将消费者分配给特定分区(在本例中为分区 0)。这将确保生产者和消费者(具有给定的客户端 ID)都在使用相同的主题分区 ID。
ProducerRecord(java.lang.String topic, ava.lang.Integer partition, K key, V value)
生成消息到分区 0
ProducerRecord<byte[],byte[]> record = new ProducerRecord<byte[],byte[]>("PerftestTopic", 0, key, value)
producer.send(record);
消费者从特定分区读取
TopicPartition partition0 = new TopicPartition("PerftestTopic", 0);
consumer.assign(Arrays.asList(partition0));
【讨论】: