嗨,如果你们可以帮我解决这个问题,我会对SFTP组件进行以下查询:
1)我们可以获取SFTP组件获取的文件的文件大小吗?我需要根据文件的大小限制传输。 2)我可以获取SFTP组件获取的文件数和文件名吗? 3)理解是否正确:SFTP组件从服务器获取所有文件并保留在内存中并逐个进行处理,直到完成所有文件为止? 4)如果服务器有5个文件,SFTP组件可以并行处理所有5个文件而不是1个1吗?
答案 0 :(得分:1)
1-Mule不会像填充FILE一样填充SFTP的文件大小字段。在此问题上有Jira门票,但MuleSoft称其为增强版,而不是优先考虑。我不同意。也许ping MuleSoft,如果有足够的用户可能会提高优先级并解决它。它们在内部使用大小,它们根本不像FILE连接器那样将它暴露在外面。
2 - 不,不是真的。它一次一个地给它们,而不是列表。
3& 4 - 它只是将整个文件加载到内存中,如果你告诉它不要流或做其他事情,比如强制内存加载的onject-to-string转换器。文件或文件流将逐个传回,但除非您限制线程并使您的流同步,否则它将转至asych和多线程并并行处理多个文件。流默认为asych,子流是同步的。
您可以使用SFTP端点检索文件,然后使用Java或脚本调用来获取文件的属性并过滤以仅处理您实际感兴趣的文件,例如大于最小大小的文件。这似乎更符合您在第1点中所寻求的内容。还有其他选择,但这可以更直接,我可以很快想到的其他选择。
答案 1 :(得分:0)
我找到了1种获取文件大小的方法,如果我们提供transformer-refs =“Object_to_Byte_Array”然后执行#[payload.size()]来获取字节大小的文件?这会引起任何问题吗?