Как назначить идентификатор клиента конкретному производителю или теме кафки?

Я знаю, что квоты основаны на идентификаторе клиента

В основном я хочу запустить kafka-producer-perf-test с определенным идентификатором клиента, чтобы проверить, правильно ли работают квоты.

Мой вопрос: как я могу назначить идентификатор клиента для определенного производителя (или) раздела?


person brokendreams    schedule 31.03.2017    source источник


Ответы (2)


при создании производителя вы можете присвоить уникальное значение свойству 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);
person Vinod    schedule 03.04.2017
comment
Большое спасибо. Ваш пост помог решить проблему с компонентом производителя Kafka в Pentaho. - person karan arora; 05.04.2019

Вы можете использовать ProducerRecord, чтобы указать, в какой раздел вы хотите отправить сообщение. Скажем, раздел 0. Создайте KafkaConsumer и назначьте потребителя определенному разделу (в данном случае разделу 0). Это гарантирует, что производитель и потребитель (с заданным идентификатором клиента) работают с одним и тем же идентификатором раздела темы.

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));

Надеюсь, это поможет.

person Kaushal    schedule 31.03.2017