我是卡夫卡新手,我有一个问题,我无法解决。卡夫卡生产商很慢
我在我自己的计算机中安装了Kafka和Zookeeper(不在Linux中),并且我创建了一个包含多个分区(在6和12分区之间播放)的主题的代理。
当我创建消费者时,他们完美地工作并且以良好的速度阅读,但是提到生产者,我创建了许多网站中可以看到的简单生产者。生产者在一个循环内并发送很多短消息(大约2000个非常短的消息)。
我可以看到消费者非常quicly地读取2000条消息,但生产者以每秒140条或150条消息的速度向代理发送消息。正如我之前所说的,我正在自己的笔记本电脑上工作(只有1个磁盘),但是当我每秒钟读取数百万条消息时,我认为我忘记了一些东西,因为我距离光年远。
如果我使用更多的生产者,结果会更糟。
是在同一个节点或类似的更多经纪人的问题?这个问题在我的工作中已经强加于我,我没有更好的计算机的可能性。
创建生产者的代码是
public class Producer {
public void publica(String topic, String strKey, String strValue) {
Properties configProperties = new Properties();
configProperties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
configProperties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, LongSerializer.class.getName());
configProperties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
KafkaProducer<String, String> producer = new KafkaProducer<String, String>(configProperties);
ProducerRecord<String, String> rec = new ProducerRecord<String, String>(topic, strValue);
producer.send(rec);
}
}
和发送消息的代码是(部分):
Producer prod = new Producer();
for (int i = 0; i < 2000; i++)
{
key = String.valueOf(i);
prod.publica("TopicName", key, texto + " - " + key);
// System.out.println(i + " - " + System.currentTimeMillis());
}
你可以发布你的代码用于生产吗? 我会假设你正在同步生产 - 你应该异步生产。磁盘应该不是问题(刷新到磁盘是在后台完成) – Treziac
是的,我编辑了我的帖子。非常感谢 –