2016-07-08 8 views
0

Ich benutze Kafka. Dies ist mein Code, wo ich Nachrichten an kafka server senden möchte. Der Name des Themas ist "west" mit der Nachricht "message1". Ich erhalte keinen Fehler, obwohl ich meine gesendeten Nachrichten im Thema nicht gesehen habe Hier?Nicht in der Lage, Nachrichten zu kafka Thema über Java-Code senden

class SimpleProducer { 

    public static void main(String[] args) throws Exception{  
    Properties props = new Properties(); 
    props.put("bootstrap.servers","172.xxxxxxxxx:9092"); 
    props.put("serializer.class", "kafka.serializer.DefaultEncoder"); 
    props.put("acks", "1"); 
    props.put("retries", 1); 
    props.put("batch.size", 16384); 
    props.put("linger.ms", 0); 
    props.put("client.id", "foo"); 
    props.put("buffer.memory", 33554432); 
    props.put("timeout.ms", "500"); 
    props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); 
    props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); 
    props.setProperty(ProducerConfig.MAX_BLOCK_MS_CONFIG, "500"); 
    props.setProperty(ProducerConfig.RETRY_BACKOFF_MS_CONFIG, "100"); 

    System.out.println("ready to send msg"); 

    try { 
     Producer<String, String> producer = new KafkaProducer<String, String>(props); 

     producer.send(new ProducerRecord<String, String>("west","message1")); 

     System.out.println("Message sent successfully"); 
     producer.close(); 
    } 
    catch(Exception e) 
    { 
     System.out.println("Messgae doesn't sent successfully"); 
     e.printStackTrace(); 

    } 
    } 
} 
+0

Wie suchen Sie nach Nachrichten, die dem Broker geschrieben und übergeben wurden? –

+0

Ab jetzt sende ich die Nachricht zu einem bestimmten Thema und überprüfen Sie es mit dem folgenden Befehl: - bin/kafka-console-consumer.sh --zookeeper localhost: 2181 - topic topic-name --from- Anfang – Sagar

+0

Ich schreibe einen benutzerdefinierten Produzenten, um meine Nachrichten von Java zum Thema zu bekommen. Das Aufrufen der angezeigten Hauptnachricht führt weder zu einer Nachricht im Kafka-Thema noch zu einer Fehlermeldung. Hat jemand eine Idee, warum die Nachricht in meinem Thema nicht ankommt? – Sagar

Antwort

0

Die API, die Sie zum Senden der Nachricht verwendet haben, ist asynchron. Verwenden Sie die Form von send() mit zwei Argumenten. Das zweite Argument ist ein Callback, mit dem Sie sehen können, ob der Sendevorgang wirklich funktioniert hat oder ob irgendwo ein Fehler aufgetreten ist.