如何将骆驼消息体拆分成行,以便在Talend ESB中迭代它们

时间:2018-01-09 13:08:32

标签: esb talend

所以,就像标题所说,我正在使用Talend ESB来处理骆驼消息。在我的情况下,我将文件的内容作为邮件正文发送到子Talend作业。在某些情况下,文件的内容可能有2行以上。我所需要的只是能够在子作业本身内独立地遍历每一行。

我猜我的问题是2折。 1.如果可能,我该怎么做? 2.迭代过程更适合路由级别,或路由调用的子作业。

现在,我正在处理的文件是|分隔的。为了处理这个问题,我让tRouteInput_1直接转到tExtractDelimtedFields并使用这些值来全局设置变量,如此。The beginning of child ESB job.

这个问题,是它只读取文件的第一行,然后继续。我需要能够迭代文件/ camel消息中的每一行。

谢谢, 亚历

1 个答案:

答案 0 :(得分:0)

首先,您需要使用tNormalize在行分隔符上拆分文件 在我的示例中,我使用tRouteInput模拟您的tFixedFlowInput,其中包含整个文件作为单行,行以\n分隔。然后,对于tNormalize返回的每个结果行,提取所需的字段(在tExtractDelimitedFields中,创建与行结构对应的模式):

enter image description here

结果:

.--------+--------.
|    tLogRow_1    |
|=-------+-------=|
|field1  |field2  |
|=-------+-------=|
|field1.1|field1.2|
|field2.1|field2.2|
|field3.1|field3.2|
'--------+--------'

你需要逃避" |"使用" \\|"在tExtractDelimitedFields内部,因为组件接受正则表达式,并且管道具有特殊含义。

关于你的第二个问题,我认为在子工作中而不是路由更好,因为路由视角中没有专用的组件。