这是我应该将这些文件中的任何一个保留在内存中并通过迭代继续查看的唯一方法。
我计划在dataMapper中使用Batch。有没有办法我们可以将第一个文件保存在Datamapper userDefined表中或类似的东西。并获取新文件以查看它。(我没有提供外部数据库)
如果文件中的任何一个有5000或10k行,那么我可以将其保留在内存中并使80k文件可以查看。我不习惯将80或90k文件保存在内存中。
请参考此链接:Mule ESB - design a multi file processing flow when files are dependent on each other。
能否请您向我推荐最佳解决方案。 也有任何想法处理文件需要多长时间,提前谢谢。
Mule studio:5.3.1和Runtime:3.7.2
答案 0 :(得分:1)
我认为这个问题是Mule的两个截然不同的事件,并计划将状态与第一个数据库中的状态保持在一起#34;某种。这不一定是Oracle集群或其他任何东西,您可以在进程中运行H2或在与Mule相同的服务器上运行Redis。
我认为你在Batch的想法中走在了正确的轨道上。收到第一个文件后,我会在批处理作业中为每个文件创建一条记录。然后,当收到第二个文件时,我运行第二个批处理作业,从数据库中查找相关信息,并生成所需的CSV文件。它还可以删除在后续批处理步骤中与数据库匹配的记录。
对于转换,我建议尝试DataWeave而不是DataMapper。这是编写转换逻辑的更好方法,Mulesoft已弃用DataMapper,从Mule 4.0开始删除。