2

我有 2 个流程来处理节点.流程和关系.流程,最终这两个流程都写入数据库。

节点和关系从单独的 tsv 文件中读取并通过文件连接器端点读取

我想同步流,这样nodes.tsv 应该总是在relationships.tsv 之前得到处理。像这样的东西:

  • 如果只存在 nodes.tsv - 处理它..
  • 如果只存在关系.tsv 等到nodes.tsv 出现在磁盘上并在关系.tsv 之前处理nodes.tsv ..

有任何想法吗?

谢谢

4

2 回答 2

1

阅读您的规范,您需要的唯一文件入站端点是等待 nodes.tsv 文件的端点。

当这个文件被拾取时,按预期处理它。

然后,在流程中进一步使用:

    <scripting:component>
        <scripting:script engine="groovy"><![CDATA[
          muleContext.client.request('file:///....../relationships.tsv', eventContext.timeout)
        ]]></scripting:script>
    </scripting:component>

    <message-filter throwOnUnaccepted="false">
        <not-filter>
            <payload-type-filter expectedType="org.mule.transport.NullPayload" />
        </not-filter>
    </message-filter>

拿起关系文件。如果它不存在,过滤器将在那里停止流动。如果它存在,那么流程中的后续内容将能够处理它。

于 2013-09-06T17:50:25.187 回答
1

默认情况下,文件端点将在文件出现在目标目录中时进行处理,因此我将省去其中一个端点,而在您的主节点中,只需将从文件拉入,如下所示:

muleClient.request('file://D:/foo/in', -1);

或者,在从属流上设置一个文件名过滤器,然后让您的主流重命名从属目录中的文件以匹配文件过滤器。

于 2013-09-05T21:08:35.707 回答