清理IIB中的文件输出节点的mqsitransit目录(IBM Integration Bus)

时间:2016-01-06 07:23:13

标签: ibm-mq messagebroker

我正在处理文件输出节点,并在完成文件之前将文件暂存到mqsitransit目录。当我在LocalEnvironment中传递文件名来完成文件终端时,mqsitransit目录中的文件被移动到输出目录。 现在如果在我将控制权传递给文件终端之前发生异常,则流程退出。在这种情况下,文件仍然存在于mqsitransit目录中,但我不希望那些文件出现在那里。如何从mqsitransit目录中删除这些文件?

一个解决方案可以通过使用FileRead节点来读取和删除文件,但是这个解决方案并不好,因为我们必须为此节点指定输入目录,这将是mqsitransit,并且因为IIB使用mqsitransit,我们不应该指定此路径指向任何节点。

任何解决方案?

1 个答案:

答案 0 :(得分:1)

FileOutput节点本身没有这样做的功能,因为这样做会导致数据丢失。

如果您要暂存文件,通常是将单个记录写入文件,这些记录可能来自多个单独的事务,因此删除该文件将删除这些事务的结果。

如果您在整个文件模式下运行,并且在这种情况下会出现异常,则该文件将被删除。

当你说流程退出时,我假设流程被回滚到输入节点,在这种情况下,可能输入消息可用于重新处理,在这种情况下,如果你生成一个具有相同文件名的输出文件,将“Action if file exists”属性设置为替换旧文件,或将其存档为可选时间戳。

我不建议将其他文件节点指向mqsitransit目录,因为它们会尝试在相同的文件上创建锁,并可能影响原始流。

如果您需要一种方法来自动清理永远不会成功处理的文件,那么您需要在以下URI处为此功能提出RFE:

https://www.ibm.com/developerworks/rfe/?PROD_ID=532