我是卡夫卡新手,我有一個問題,我無法解決。卡夫卡生產商很慢
我在我自己的計算機中安裝了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
是的,我編輯了我的帖子。非常感謝 –