有没有办法在现有文件中使用mule的文件出站连接器追加行?具有处理数百万条消息的要求,并在文件中为每条消息附加新的数据行。在Mule中使用文件出站实现此目的的最优化方法是什么。
答案 0 :(得分:1)
每当您想要将行附加到现有文件时,您可以将'outputAppend'属性设置为true。
<file:connector name="File" autoDelete="true"
outputAppend="true" streaming="true" validateConnections="true"
doc:name="File" />
此外,您可以使用批处理模块处理数百万条消息。有关详细信息,请查看:http://www.mulesoft.org/documentation/display/current/Batch+Processing
答案 1 :(得分:1)
Clare所说的关于outputAppend="true"
的内容是正确的,但请注意,当您使用它时,最大活跃的调度员数量会下降到1,这可能会严重影响性能。
另一方面,我假设您想要的是获取文件并在最后添加一些内容,因此您需要一个文件输入源。在这种情况下,您可以执行的操作是在文件连接器中配置“工作目录”,并使用与文件出站端点的输出路径相同的目录。
这样,文件由文件入站端点获取并移动,然后由文件出站端点获取以在末尾添加有效负载。
因此,永远不会使用文件内容,只需在文件末尾添加配置的有效内容即可。
这是一个示例配置:
<file:connector name="File" autoDelete="false" outputAppend="true" streaming="true" validateConnections="true"/>
<flow name="appendPayloadToFile">
<file:inbound-endpoint path="/source-dir/" connector-ref="File" responseTimeout="10000" />
<set-payload value="ADDED-CONTENT"/>
<file:outbound-endpoint path="/target-dir/" connector-ref="File" responseTimeout="10000"/>
</flow>
如果此解决方案性能不够,您可以尝试创建一个自定义Java组件,该组件从入站端点获取文件,关闭它,再次打开它以输出并附加所需内容。
如果您有一些流程可以使用,请分享。
HTH, 马科斯