Ich habe einen Kafka Producer, den ich in Java geschrieben habe. Es scheint nicht richtig zu funktionieren, obwohl es im Grunde ein Schnitt und eine Vergangenheit von Beispielcode ist. Ich würde erwarten, dass die Ausgabe 10 Nachrichten an meinen Cluster sein wird. Stattdessen erhalte ich die Meldung Erfolgreich ausgegeben, aber nichts geht wirklich an meinen Cluster. Ich bin mir nicht sicher, wo ich mit der Fehlersuche beginnen soll.Kafka Producer scheint nicht richtig zu funktionieren
import java.util.Properties;
import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;
public class SimpleProducer {
public static void main(String[] args) throws Exception{
String topicName = "test_topic";
Properties props = new Properties();
props.put("bootstrap.servers", "skynet.local:6667");
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");
Producer<String, String> producer = new KafkaProducer<String, String>(props);
for(int i = 0; i < 10; i++)
producer.send(new ProducerRecord<String, String>(topicName, Integer.toString(i), Integer.toString(i)));
System.out.println("Message sent successfully");
producer.close();
}
}
Senden ist ein asynchroner Anruf. Versuchen Sie also, auf die zurückgegebene Zukunft zu warten, bevor Sie Ihre Nachricht drucken. Noch besser, Sie können die Zukunft für Debugging-Zwecke drucken. Ich empfehle auch acks gleich 1 zum Testen. – dawsaw
Also habe ich acks auf 1 gesetzt und die Bildschirmausgabe komplett auskommentiert. Es dauert immer noch sehr lange und scheint keine Nachrichten zu senden. –
Ich führe das innerhalb von Eclipse. Spielt das eine Rolle? –