我正在使用kafka_2.11-0.10.2.1,zookeeper是kafka软件包中的一个。配置是一个代理,一个分区,没有复制。首先,我在我自己的机器上测试我的代码,测试没问题,生产者和消费者都能很好地工作,但是当我在服务器上部署kafka(27.57.100。**),以及我在机器上运行代码时(27.57。 101. *),局域网中的所有机器,可以互相访问。我的代码与kafka网站上的示例相同:
public class MyProducer {
private static Properties props = new Properties();
private static String topic = "test11";
static {
props.put("bootstrap.servers", "localhost:9092");
props.put("acks", "all");
props.put("retries", 0);
props.put("batch.size", 16384);
props.put("linger.ms", 1);
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");
}
public void produceMessage() throws InterruptedException {
Producer<String, String> producer = new KafkaProducer<>(props);
for (int i=0; i<1000; i++){
producer.send(new ProducerRecord<String, String>(
topic, Integer.toString(i), Integer.toString(i)));
System.out.println(i);
Thread.sleep(100);
}
producer.close();
}
public static void main(String[] args) throws InterruptedException {
MyProducer myProducer = new MyProducer();
myProducer.produceMessage();
}
}
问题很奇怪,没有错误消息,当我第一次启动生产者程序时,代理可以创建主题目录,但.log文件的大小始终为0,输出需要30-40秒打印每一个我的价值;当我第二次启动生产者程序时,输出正常打印i的值,但不存储该值。 我可以在shell中创建主题,发送消息和消费消息。防火墙已关闭。 我需要你的帮助。非常感谢你!