2017-06-08 3 views
0

Ich folgte ein Beispiel aus einem Buch Kamel in Aktion. wie man das csv-datenformat marshale und entmarshale. Allerdings möchte ich eine CSV-Datei mit (Komma getrennter Trennzeichen) und Split-Körper entpacken. Dann verwende ich den Inhalt basierend auf .choice, um Nachrichten entsprechend den erforderlichen Aufgaben zu verteilen. In der Tat, das erste und einfache Beispiel funktionierte nicht für mich. Ich benutzen Kamel 2.15.6 (Kamel-Kern, Kamel-Kontext, Kamel-csv, commons-csv) und Java 7.Parsing CSV-Datenformat in Apache Camel

public void configure() 
      { 
       CsvDataFormat csv = new CsvDataFormat(); 
       csv.setDelimiter(","); 

       from("file:test?noop=true") 
      .unmarshal().csv() 
       .split(body()) 
       .to("file:out"); 
      } 

Bitte unter dem Stack-Trace zu finden.
enter image description here

+0

die Stacktrace nicht anzeigt, etwas. Wenn du sagst, dass es für dich nicht funktioniert hat. Was ist los. – pvpkiran

+0

Das Programm wurde beendet, ohne eine Datei zu kopieren .to ("file: out"); –

+0

wo ist dein Dateitest? Überprüfen Sie, ob der Pfad korrekt ist. – pvpkiran

Antwort

0

Können Sie versuchen, indem Sie noop = true entfernen? Wenn noop wahr ist, wird die Datei in keiner Weise verschoben oder gelöscht. Diese Option eignet sich nur für schreibgeschützte Daten oder für ETL-Anforderungen.

0

Pass csv als Parameter wie folgt aus:

public void configure()throws Exception 
     { 
      CsvDataFormat csv = new CsvDataFormat(); 
      csv.setDelimiter(","); 

      from("file:test?noop=true") 
      .unmarshal(csv) 
      .split(body()) 
      .to("file:out"); 
     } 

Oder es wird Sie based Routing enthalten einstellen helfen: I nach Header CSV-Filter:

//Route 1 for filter CSV based on header 
     from("file:/home/r2/Desktop/csvFile?noop=true") 
      .choice().when(body().contains("partyName")) 
       .to("direct:partyNameCSV") 
      .when(body().contains("\"stuffName\"")) 
       .to("direct:stuffNameCSV") 
      .otherwise().endChoice(); 

     //Route 2 partyNameCSV 
     from("direct:partyNameCSV") 
      .unmarshal(csv) 
      .process(new PartyNameCSVProcessor()) 
      .end(); 

     //Route 3 stuffNameCSV 
     from("direct:stuffNameCSV") 
      .unmarshal(csv) 
      .process(new StuffCSVProcessor()) 
      .end();