java - 卡夫卡生产者非常慢

标签 java apache-kafka kafka-producer-api

我是 Kafka 的新手,我有一个我无法解决的问题。

我在自己的 Windows 计算机(不是 Linux)中安装了 Kafka 和 Zookeeper,并且创建了一个带有多个分区主题的代理(在 6 到 12 个分区之间播放)。

当我创建消费者时,他们可以完美地工作并且读取速度很快,但是引用生产者,我创建了可以在许多网站上看到的简单生产者。生产者在一个循环中并正在发送许多短消息(大约 2000 条非常短的消息)。

我可以看到消费者非常快速地阅读了 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());
}

最佳答案

您可以创建一次 Kafka 生产者,并在每次需要发送消息时使用它:

public class Producer {
    private final KafkaProducer<String, String> producer; // initialize in constructor

    public void publica(String topic, String strKey, String strValue) {
        ProducerRecord<String, String> rec = new ProducerRecord<String, String>(topic, strValue);
        producer.send(rec);
    }
}

另请查看可用的生产者和代理配置 here 。您可以根据应用程序的需要调整多个选项。

关于java - 卡夫卡生产者非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46605565/

相关文章:

java - 在 Android 中实现搜索的最佳方式是什么?

java - 我通过kafka- Producer多线程发送消息,但出现消息丢失

apache-kafka - Kafka block.on.buffer.full 默认值

Java/Scala Kafka Producer 不向主题发送消息

java - JHipster ldap 认证

java - 如何修复 'javax.xml.parsers.FactoryConfigurationError on every second server startup'

java - RxJava 中的 n 元笛卡尔积

elasticsearch - Confluent 5.4.0 ElasticSearch Sink连接器中没有连接器类型错误

c# confluence.kafka 无法使用 Protobuf-net 反序列化 protobuf 消息

java - org.apache.kafka.common.errors.TimeoutException : Topic not present in metadata after 60000 ms