Kafkajava制作人一直在制作消息

wqlqzqxt  于 2021-06-07  发布在  Kafka
关注(0)|答案(4)|浏览(340)

我正在使用javaapi实现apachekafka生产者。apache kafka安装在本地主机上。zookeeper也在运行,但producer.send()函数仍停留在发送消息中,消息未发布。
我已经创建了“快速消息”主题。
下面是代码。

package com.hsahu.kafka.producer;

import java.util.Properties;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;

public class KafkaProducerExample {
public static void main(String[] args) {

    Properties props = new Properties();

    props.put("bootstrap.servers", "localhost:9092");
    props.put("acks", "all");
    props.put("retries", 0);
    props.put("batch.size", 16384);
    props.put("linger.ms", 0);
    props.put("buffer.memory", 33554432);
    props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
    props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

    KafkaProducer<String, String> producer = new KafkaProducer<>(props);

    try {
        producer.send(new ProducerRecord<String, String>("fast-messages", "This is a dummy message"));
    } catch(Exception ex) {
        System.out.println(ex);
    }

    System.out.println("message publisher");

    producer.close();
}

}
我该怎么办?我的代码是错误的还是任何属性设置不正确或丢失?

rryofs0p

rryofs0p1#

你能试试producer.flush()而不是producer.close()吗。flush()阻塞直到消息被发送到kafka代理???除此之外我没有看到任何奇怪的东西。。

cedebl8k

cedebl8k2#

下面的测试
如果版本高于0.9,则需要在代理中配置“adverted.host.name”

9jyewag0

9jyewag03#

在我的例子中,这是因为没有创建主题。我把producer的引导服务器配置搞砸了(使用的是不同的env,这里没有这样的主题)。修好后,它工作了。

krcsximq

krcsximq4#

代码中没有任何问题。只有api版本和kafka服务器版本不匹配。所以我只修改了api版本,现在producer正在工作。

相关问题