我有 2 个流程来处理节点.流程和关系.流程,最终这两个流程都写入数据库。
节点和关系从单独的 tsv 文件中读取并通过文件连接器端点读取
我想同步流,这样nodes.tsv 应该总是在relationships.tsv 之前得到处理。像这样的东西:
- 如果只存在 nodes.tsv - 处理它..
- 如果只存在关系.tsv 等到nodes.tsv 出现在磁盘上并在关系.tsv 之前处理nodes.tsv ..
有任何想法吗?
谢谢
我有 2 个流程来处理节点.流程和关系.流程,最终这两个流程都写入数据库。
节点和关系从单独的 tsv 文件中读取并通过文件连接器端点读取
我想同步流,这样nodes.tsv 应该总是在relationships.tsv 之前得到处理。像这样的东西:
有任何想法吗?
谢谢
阅读您的规范,您需要的唯一文件入站端点是等待 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>
拿起关系文件。如果它不存在,过滤器将在那里停止流动。如果它存在,那么流程中的后续内容将能够处理它。
默认情况下,文件端点将在文件出现在目标目录中时进行处理,因此我将省去其中一个端点,而在您的主节点中,只需将从文件拉入,如下所示:
muleClient.request('file://D:/foo/in', -1);
或者,在从属流上设置一个文件名过滤器,然后让您的主流重命名从属目录中的文件以匹配文件过滤器。