Mule:根据文件可用性同步mule流

时间:2013-09-04 23:35:18

标签: mule mule-studio

我有2个流处理nodes.flow和relationships.flow,最后两个流都写入数据库。

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

读取

我想同步流,以便在relationships.tsv之前始终处理nodes.tsv。像这样:

  • 如果只存在nodes.tsv - 处理它..
  • 如果只存在relationships.tsv,请等待,直到在磁盘上显示nodes.tsv,并在relationships.tsv之前处理nodes.tsv ..

任何想法?

感谢

2 个答案:

答案 0 :(得分:1)

默认情况下,当文件出现在目标目录中时,文件端点将处理,因此我将省去其中一个端点,而在主端点中只需拉出从属文件:

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

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

答案 1 :(得分: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>

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