2016-07-08 1 views
0

카프카를 사용하고 있습니다. 이것은 내 코드입니다, 나는 카프카 서버에 메시지를 보내고 싶습니다. 토픽 이름은 "message1"이라는 메시지가있는 "west"입니다. 주제에 내 보낸 메시지를 보지 못했지만 오류가 없습니다. 잘못된 것이 있습니다. 이리?자바 코드를 통해 카프카에 메시지를 보낼 수 없습니다.

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

브로커에 쓰여지고 커밋 된 메시지를 어떻게 확인하고 있습니까? –

+0

현재 특정 주제에 대한 메시지를 보내고 아래 명령을 사용하여 확인합니다. - bin/kafka-console-consumer.sh - 사육사 localhost : 2181 - 토픽 topic-name --from- 맨 위로 – Sagar

+0

Java에서 주제로 메시지를 보내려면 사용자 지정 제작자를 쓰고 있습니다. 표시된 메인을 호출해도 카프카 주제에 대한 메시지가 나타나지 않으며 오류 메시지가 인쇄되지 않습니다. 메시지가 내 주제에 도착하지 않는 이유는 누구나 알 수 있습니까? – Sagar

답변

0

메시지를 보내는 데 사용한 API가 비동기입니다. 두 개의 인수가있는 send() 형식을 사용하십시오. 두 번째 인수는 보내기가 실제로 작동했는지 또는 어딘가에 오류가 있는지 확인하는 데 사용할 수있는 콜백입니다.

관련 문제