【问题标题】:Mule ESB - design a multi file processing flow when files are dependent on each otherMule ESB - 当文件相互依赖时设计多文件处理流程
【发布时间】:2015-04-08 05:55:58
【问题描述】:

Okie...我知道 File 入站元素中的 Datamappers、Batch 和流式支持。我想知道的是在以下情况下的集成设计模式:

  • 您有多个文件(csv 或 xml)要处理,例如:1 个名为 products.csv 的文件包含有关产品的所有详细信息。另一个文件 images.csv 包含 products.csv 文件中列出的每个产品的图像的 URL。另一个文件可以说 price.csv 包含每种产品价格的详细信息。
  • 所有文件都使用 PK 类型相互链接,例如:产品 SKU 或产品 ID。所以 products.csv 中的每一行在 images.csv 中都有多个链接之一,在 price.csv 中具有一行。
  • 您需要处理所有文件并保存在 DB 中或合并到单个 XML 或 JSON 中。我的意思是制作一个 VO 或一个实体,其中产品具有图像列表并具有价格。所有“具有”关系都可以从产品对象/实体中导航。

你们建议如何使用 Mule ESB 进行设计。我了解单个 CSV 的设计。使用批处理流,您使用流文件连接器读取文件,然后使用流数据映射器提取数据,然后将数据转换为 VO 并放入 DB。这是直截了当的。在数据库插入级别或整个设置中添加批处理提交也可以提高性能。但是当你有多个文件时该怎么办,正如我在我的场景中所说的那样?

【问题讨论】:

  • 你对这三个文件的创建顺序有任何控制吗? Mule 需要多久加载一次?
  • 可以管理订单。相关文件可能会放在一起,我可以选择它们的阅读顺序。频率仍有待商榷。一组中的所有文件至少需要在 2 小时左右处理一次。

标签: java mule batch-processing esb


【解决方案1】:

这已经在 StackOverflow 上多次询问过,但措辞不同。通常答案是让文件入站端点从众多文件中挑选一个,然后与请求者一起在流程中挑选其他文件。

见:https://github.com/mulesoft/mule-module-requester

在您的情况下,主文件将作为输入流提供,而图像和价格查找文件将加载到内存中(例如在地图中),因此您可以在处理主要流时快速访问它们。

【讨论】:

  • 是的,大卫我知道。但这基本上是按顺序处理它们。我一直在寻找的是让事物流式传输、分块和并行。也正弦后面的文件都依赖于第一个文件,第一个文件的数据保存在哪里?在数据库中?在记忆中?从所有文件构造整个实体对象,然后持久化到数据库?
  • 我已经扩展了我的答案。
  • 对。说得通。谢谢大卫。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-09
  • 1970-01-01
  • 1970-01-01
  • 2015-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多