阿里云kafka出现的问题主要是内网外的映射问题
“No entry found for connection 1” 和 Connection to node 1
配置kafka的config/server.properties
一种版本的配置文件:
port=9092
host.name=阿里云内网地址
advertised.host.name=阿里云外网映射地址
有的版本需要的配置如下:
listeners=PLAINTEXT://内网ip:9092 (写内网ip即可,在终端输入ifconfig ,一般是eth0中的inet地址)
advertised.listeners=PLAINTEXT://外网ip:9092 (写外网ip,进入阿里云控制台可以看到)
linux测试:
在kafak的bin下:
开启消费者
./kafka-console-consumer.sh --bootstrap-server 外网ip:9092 --topic d --from-beginning
开启生产者
./kafka-console-producer.sh --broker-list 外网ip:9092 --topic d
Java测试:
在main函数中:注意填入外网ip,运行程序,在linux终端控制台
./kafka-console-consumer.sh --bootstrap-server 外网ip:9092 --topic d --from-beginning
中可以看到Hello
public static void main(String[] args) {
String topic = "d"; Properties props = new Properties(); props.put("bootstrap.servers", "外网ip:9092"); props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); props.setProperty("group.id", "0"); props.setProperty("enable.auto.commit", "true"); props.setProperty("auto.offset.reset", "earliest"); KafkaConsumer<String, String> consumer = new KafkaConsumer<String, String>(props); consumer.subscribe(Arrays.asList(topic)); for (int i = 0; i < 2; i++) { ConsumerRecords<String, String> records = consumer.poll(1000); System.out.println(records.count()); for (ConsumerRecord<String, String> record : records) { System.out.println(record); }
}