所以,就像标题所说,我正在使用Talend ESB来处理骆驼消息。在我的情况下,我将文件的内容作为邮件正文发送到子Talend作业。在某些情况下,文件的内容可能有2行以上。我所需要的只是能够在子作业本身内独立地遍历每一行。
我猜我的问题是2折。 1.如果可能,我该怎么做? 2.迭代过程更适合路由级别,或路由调用的子作业。
现在,我正在处理的文件是|
分隔的。为了处理这个问题,我让tRouteInput_1直接转到tExtractDelimtedFields并使用这些值来全局设置变量,如此。
这个问题,是它只读取文件的第一行,然后继续。我需要能够迭代文件/ camel消息中的每一行。
谢谢, 亚历
答案 0 :(得分:0)
首先,您需要使用tNormalize
在行分隔符上拆分文件
在我的示例中,我使用tRouteInput
模拟您的tFixedFlowInput
,其中包含整个文件作为单行,行以\n
分隔。然后,对于tNormalize
返回的每个结果行,提取所需的字段(在tExtractDelimitedFields
中,创建与行结构对应的模式):
结果:
.--------+--------.
| tLogRow_1 |
|=-------+-------=|
|field1 |field2 |
|=-------+-------=|
|field1.1|field1.2|
|field2.1|field2.2|
|field3.1|field3.2|
'--------+--------'
你需要逃避" |
"使用" \\|
"在tExtractDelimitedFields
内部,因为组件接受正则表达式,并且管道具有特殊含义。
关于你的第二个问题,我认为在子工作中而不是路由更好,因为路由视角中没有专用的组件。