如下图,在docker中启动了kafka和zookeeper的服务,并且做了端口映射,
分别9192->9092 2281->2181
生产者:kafka-console-producer.sh --broker-list localhost:9092 --topic t01
消费者:kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic t01 --from-beginning
在docker中使用命令启动一个生产者和消费者可以正常工作。
但是在宿主主机中,使用java编程创建一个生产者,代码如下:
public class demo {
public static void main(String[] args) {
Properties conf = new Properties();
conf.put("zookeeper.connect", "localhost:2281");
conf.put("bootstrap.servers", "localhost:9192");
conf.put("serializer.class", StringEncoder.class.getName());
conf.put("key.serializer", StringSerializer.class.getName());
conf.put("value.serializer", StringSerializer.class.getName());
conf.put("acks", "all");
KafkaProducer<String, String> kp = new KafkaProducer(conf);
kp.send(new ProducerRecord<String, String>("t01", "he--h22"));
kp.close();
}
}
运行代码,没报错,但是在docker中创建的那个消费者也无法收到消息。
kafka-console-consumer.sh --bootstrap-server localhost:2181 --topic topic01 --from-beginning
--bootstrap-server localhost:2181 改成Kafka的端口