Kafka Producer Замедляет при нажатии разных клавиш - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть код, который будет отправлять данные в тему Кафки.

public void sendMessage(String message, String key){
   if (isAsync) { // Send asynchronously
       producer.send(new ProducerRecord<String, String>(topic,key,message), new ProducerCallback(key, message));
   } else { // Send synchronously
       try {
           producer.send(new ProducerRecord(topic,key, message)).get();
       } catch (Exception e) {
           e.printStackTrace();
           // handle the exception
       }

   }

}

Я передаю данные методу, используя следующий код:

String Message ="Text message,Text message,Text message,Text message,Text message,Text message,Text message,Text message,Text message,Text message";
String Key = "0123456789";

for(int i =0; i < 10000; i++)
{
   publish.sendMessage(Message, Key);
}

Поскольку сообщение и ключ статичны, код отправляет данные в Kafka с низкой задержкой (менее 1 секунды для записей 10K), но если у меня будет динамический ключ, производительность замедляется (почти 55 секунд для записей 10K) , Код будет

for(int i =0; i < 10000; i++)
{
   publish.sendMessage(Message, Key+i);
}

1 Ответ

0 голосов
/ 06 сентября 2018

Для каждой итерации Key+i включает создание экземпляров, инициализацию нового объекта StringBuilder и вызов его методов append и toString, которые действительно могут замедлить весь процесс.

...