public void sendMessage(){
Properties props = new Properties();
props.put("bootstrap.servers", "192.168.31.96: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");
KafkaProducer<String,String> producer = new KafkaProducer<>(props);
for (int i = 0; i <10 ; i++) {
String mesg = Integer.toString(i);
ProducerRecord<String, String> records = new ProducerRecord<String,String>("test4",mesg);
producer.send(records);
}
producer.close();
}
昵称
0 声望
这家伙太懒,什么都没留下
这一行改成
producer.send(records).get();
试试。好的,谢谢,我试一下
加上
.get()
方法会报异常ProducerRecord<String, String> records = new ProducerRecord<String,String>("test4", "+++++++++++" + mesg); Future<RecordMetadata> future = producer.send(records); System.out.println(future);
我这样写,在kafka服务可以查询到创建 topic =test4
启动
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test4
执行java代码,发送好多次,也看不到kafak控制台输出我发送的消息
是的,加上.get,就是阻塞式发送,可以看到为什么发送失败。异常就是原因呢。
这是异常,我不太能看懂..............
这个是超时异常,是网络问题。
你telnet 192.168.31.96 9092 看看通不通。
如果不通,则在服务器
server.properteis
增加linstener
。可以通的,我在zookeeper 还可以查到创建的broker节点
你把kafka配置内容贴一下。主要是listeners和advertised.listeners。
####################### Socket Server Settings ############################# # The address the socket server listens on. It will get the value returned from # java.net.InetAddress.getCanonicalHostName() if not configured. # FORMAT: # listeners = listener_name://host_name:port # EXAMPLE: # listeners = PLAINTEXT://your.host.name:9092 #listeners=PLAINTEXT://:9092
我单机版的,没有集群,这里都没配置
listeners=PLAINTEXT://192.168.31.96:9092
放开这个,重启kafka,在试试。
好
嘿嘿,这次没异常了,这个lisreners的作用是什么呢?
kafka的控制台没看到发送的信息,我应该怎么才能知道发送成功了。
我启动consumer可以接收到消息了,太感谢你了,谢谢!
要么在开个消费者,要么用命令直接进行消费。
命令大全:https://www.orchome.com/454
不要用localhost,全部用ip。
listeners监听对应的ip和端口。否则只能用localhost。
好的,万分感谢。我先看你的教程,有难题了再继续请教,嘿嘿。
你的答案