KafkaProducer not successfully sending message into the queue

被刻印的时光 ゝ 提交于 2019-12-22 05:27:12

问题


I have built a small testing environment on my Windows PC and write down the following code for testing kafka (using kafka_2.10:0.9.0.1 from org.apache.kafka).

package iii.functiontesting;

import java.text.ParseException;
import java.util.Properties;

import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;


/**
 * Hello world!
 *
 */
public class test4
{
    public static void main( String[] args ) throws ParseException
    {
        Properties producerProps=new Properties();
        producerProps.put("bootstrap.servers", "localhost:9092");
        producerProps.put("serializer.class",org.apache.kafka.common.serialization.StringSerializer.class.getName());
        producerProps.put("key.serializer",org.apache.kafka.common.serialization.StringSerializer.class.getName());
        producerProps.put("value.serializer",org.apache.kafka.common.serialization.StringSerializer.class.getName());
        producerProps.put("request.required.acks","1");
        KafkaProducer<String,String> kafkawriter= new KafkaProducer<String,String>(producerProps);
        ProducerRecord<String,String> msg=new ProducerRecord<>("TEST3","ImKey","teststring1");
        kafkawriter.send(msg);
    }
}

I use the following command to check whether the message is correctly written into the queue

D:\Work\kafkaenv\kafka_2.10-0.9.0.1\bin\windows>.\kafka-console-consumer.bat --zookeeper localhost:2181 --topic TEST3 --from-beginning

However, I found that the kafka-console-consumer shows nothing.

I have doubted that my kafka server doesn't run properly, so I use console-producer to test.

D:\Work\kafkaenv\kafka_2.10-0.9.0.1\bin\windows>.\kafka-console-producer.bat --broker-list localhost:9092 --topic TEST3

aaaaa

This time I can see the aaaaa is clearly shown under the console-consumer. I cannot figure out what happens. Can anyone help me?


回答1:


You have to call either KafkaProducer#flush [or] KafkaProducer#close method before terminating the program.

Actually, the producer buffers the records before sending it to the broker. See buffer.memory and batch.size in the Kafka Producer configuration

kafkawriter.send(msg);
kafkawriter.close();


来源:https://stackoverflow.com/questions/37410405/kafkaproducer-not-successfully-sending-message-into-the-queue

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!