簡體   English   中英

反復調用Apache駱駝處理器

[英]apache camel-processor being called repetedly

我寫了一段代碼,將一個csv文件從一個文件夾轉移到另一個文件夾,並在轉移文件時刪除了最后一列,但是當我運行它時,完成操作會多次出現在控制台上,但路由工作正常。這是由於Threading模型Apache駱駝分配多個線程?

from("file:///home/Laptop/Desktop/java/DemoFeed/1?
antInclude=*.gz&move=processed").unmarshal().gzip().process(new 
Processor() {

public void process(Exchange exchange) throws Exception 
StringBuilder builder = new StringBuilder();
String body=exchange.getIn().getBody(String.class);
String row[]=body.split("\n");
for(int rowIndex=0;rowIndex<row.length-1;rowIndex++)
{
  String rowIterator=row[rowIndex];
  String rowEntries[]=rowIterator.split(",");
  for(int index=0;index<rowEntries.length-1;index++)
  {
    builder.append(rowEntries[index]);
    if(index!=rowEntries.length-2)
    builder.append(",");
  }
   builder.append("\n");
   exchange.getOut().setBody(builder.toString());
   System.out.println("done");
  }
  }
}).setHeader(Exchange.FILE_NAME,constant("name.csv")).marshal().zipFile().to("file:2?fileName=name.csv.zip");                 

就像@ james-netherton所說的那樣:只需走兩行

exchange.getOut().setBody(builder.toString());
System.out.println("done");

走出外部循環。 您覆蓋您的郵件正文,並打印出來done每處理一行之后。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM