有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java处理器被重复调用

我编写了一个代码,将csv文件从一个文件夹传输到另一个文件夹,并在传输时删除最后一列,但在我运行它时,控制台多次显示“完成”,但路由正常。这是因为Apache camel的线程模型分配了多个线程吗

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");                 

共 (1) 个答案

  1. # 1 楼答案

    正如@james netherton已经评论过的那样:只需要两条线

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

    从外部为循环。覆盖消息正文,并在处理的每一行之后打印出done