我知道配额是基于客户端ID的
基本上我想用特定的客户端id运行kafka-producer-perf-test来测试配额是否正常工作
我的问题是如何为特定的 生产环境 者(或)分区分配客户端ID?
在创建生成器时,可以为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));
希望这有帮助 .
2 回答
在创建生成器时,可以为client.id属性分配唯一值 .
您可以使用ProducerRecord指定要发送消息的分区 . 说分区0.创建KafkaConsumer并将使用者分配给特定分区(在本例中为分区0) . 这将确保 生产环境 者和消费者(具有给定的客户端ID)都在处理相同的主题分区ID .
生成分区0的消息
消费者从特定分区读取
希望这有帮助 .