2016-07-14 4 views
1

私はラクダを使ってカフカのメッセージを消費しようとしています。ラクダルートでは、コードコントロールがprocess()メソッドの中に入ることができません

以下のコード:

public class Main { 

private static CamelContext context = new DefaultCamelContext(); 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    try { 
     context.start(); 
     context.addRoutes(new RouteBuilder() { 

      @Override 
      public void configure() throws Exception { 

       System.out.println("Configuring Routes"); 

       from("kafka:172.16.30.5:9093?topic=reddy&groupId=testing&autoOffsetReset=earliest&consumersCount=1")     
       .process(new Processor(){ 

        @Override 
        public void process(Exchange exchange) throws Exception { 


         /*System.out.println("Processing.."); 
         System.out.println("Messages:"); 
         System.out.println(exchange.getIn());*/ 

         String messageKey = ""; 
         if (exchange.getIn() != null) { 
          Message message = exchange.getIn(); 
          Integer partitionId = (Integer) message 
            .getHeader(KafkaConstants.PARTITION); 
          String topicName = (String) message 
            .getHeader(KafkaConstants.TOPIC); 
          if (message.getHeader(KafkaConstants.KEY) != null) 
           messageKey = (String) message 
             .getHeader(KafkaConstants.KEY); 
          Object data = message.getBody(); 


          System.out.println("topicName :: " 
            + topicName + " partitionId :: " 
            + partitionId + " messageKey :: " 
            + messageKey + " message :: " 
            + data + "\n"); 
         } 

         } 

       }); 

      } 
     }); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 

} 

OUTPUT:

java -jar camelKafka-0.0.1-SNAPSHOT-jar-with-dependencies.jar 
log4j:WARN No appenders could be found for logger  (org.apache.camel.impl.DefaultCamelContext). 
log4j:WARN Please initialize the log4j system properly. 
Configuring Routes 

、コード制御が全く処理方法につもりはないです。

+0

を()ことをログに記録されていますか? –

答えて

2
あなたはキャメルの実行を維持する必要があり

は、このドキュメントを参照してください。あなたがからではなく、プロセスの前後にログを()を追加した場合http://camel.apache.org/running-camel-standalone-and-have-it-keep-running.html

+0

この文書は、ある場所から別の場所にファイルを転送するためにラクダを使用しようとしたときに便利ですが、カフカがメッセージを消費するのを助けませんでした。何とかしても、コードcontrollはprocess()内には入っていません!! – Nilotpal

関連する問題