SpringXD - File Splitter - Rabbit传输速度慢,文件内容不使用新的line属性

时间:2015-09-02 18:15:39

标签: spring spring-integration spring-xd

我们有一个用例将10 M行的文件分成每个10000的小文件。我们计划使用SpringXD。我们正面临以下问题:

  1. 备份输入文件
  2. FileName必须基于inputFile Name和Counter生成,如refdata-1.txt,refdata-2.txt等。
  3. 文件内容不是用新行写的,而是与“,”连接。
  4. 分割过程大约需要45分钟,使用兔子作为单节点的传输,但在单节点的本地传输中使用4分钟。
  5. stream create --name fileTestDirExp --definition "file --outputType=text/plain --dir=/Documents --pattern=createdTest.txt --mode=lines --maxMessages=5000 | aggregator --aggregation=#this.![payload] --count=10000 --release='#this.size() eq 10000' |sink:file --dirExpression='''/Documents/splitter/''+new java.text.SimpleDateFormat(''yyyyMMdd'').format(new java.util.Date()).toString()' --nameExpression='headers[''id'']+''.txt'''" --deploy

    对于解决上述问题的任何帮助表示赞赏。

    此致 KARTHIK

1 个答案:

答案 0 :(得分:0)

您通过rabbitmq发送每一行。考虑将file | aggregator组合成一个组合模块,以便它们位于同一位置,只有聚合数据通过Rabbit传输。

聚合器发出List<String>;所以我不知道如何将其写入文件接收器;它只接受Stringbyte[]File类型的有效负载。

您需要一个自定义转换器将列表转换为单个字符串,或添加另一个拆分器(由文件接收器组成)并使用追加模式。