卡夫卡制片人放下不同的琴键时速度变慢

时间:2018-09-06 09:24:05

标签: apache-kafka kafka-producer-api

我有一个代码,可以将数据发送到Kafka主题。

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的延迟时间很短(10K记录不到1秒),但是如果我拥有动态密钥,则性能会降低(10K记录将近55秒) 。代码将是

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

1 个答案:

答案 0 :(得分:0)

对于每次迭代,Key+i涉及实例化,初始化一个新的StringBuilder对象并调用其appendtoString方法,这实际上会减慢整个过程。

相关问题