对Talend ESB来说是全新的

时间:2017-12-13 17:03:29

标签: esb talend

我对Talend ESB完全陌生(不是Talend用于数据集成,而是ESB完全。)

话虽这么说,我试图构建一条简单的路由来监视特定的文件路径,并获取掉入其中的任何文件的文件名。然后它会将该文件名传递给childjob(cTalendJob),子作业将对该文件执行某些操作。

我能够查看目录,获取文件名本身和System.out.println文件名。但我似乎无法通过'它归功于孩子的工作。当它运行时,路线进入无限循环。enter image description here

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您必须将上下文参数添加到Talend作业,然后通过将文件名分配给参数,将路径中的文件名传递给作业。 在我的例子中,我在我的工作中添加了一个名为“Param”的参数。在cTalendJob的Context Param视图中,单击+按钮并从可用参数列表中选择它,并为其指定值。

enter image description here

然后,您可以在子作业中执行context.Param以使用文件名。

答案 1 :(得分:0)

我认为你这比你需要的更难......

我认为你不需要你的cProcessor或cSetBody步骤。

如果您想要文件名,请在tRouteInput中,然后将"${header.CamelFileName}"映射到架构中的字段,您将获得文件名。映射"${in.body}"会为您提供文件内容,但如果您不需要,您只需映射所需的标题即可。如果您的作业将整个文件读取,您可以跳过该步骤并只映射邮件正文。

此外,检查camel文件组件的默认行为 - 它旨在将文件的内容放入消息中,一旦完成将文件移动到.camel子目录。如果你的工作写入cFile监控的目录,它将无限期地继续运行,因为它一直在寻找一个新的" file - 您希望将任何更新的文件写入不同的目录,或者不被cFile组件监视的文件名掩码。