Kafka制作人在放不同的钥匙时会放慢速度

oyt4ldly  于 2021-06-06  发布在  Kafka
关注(0)|答案(1)|浏览(328)

我有一个将数据发送到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);
}

由于消息和密钥是静态的,因此代码以低延迟(10k记录不到1秒)将数据发送到kafka,但如果使用动态密钥,性能会降低(10k记录几乎55秒)。代码将是

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

sf6xfgos1#

对于每个迭代, Key+i 包括示例化、初始化新的stringbuilder对象并调用其 append 以及 toString 方法确实可以减慢整个过程。

相关问题