依赖实体处理的库或框架推荐
Posted
技术标签:
【中文标题】依赖实体处理的库或框架推荐【英文标题】:Library or Framework recommendation for dependent entity processing 【发布时间】:2021-09-24 10:19:00 【问题描述】:我有一批来自服务的数据。数据需要按照它们相互依赖的顺序进行处理。我想了解在 Java 中处理此问题的最佳实践和方法。
例子:
进入系统的管理器批次(M1、M2...)。同时我们还得到了一批员工(E1,E2...)和他们的地址(A1,A2..)。 地址只有在其链接到的员工已被处理后才能被处理。同样,只有在处理了与其关联的经理后,才能处理员工。 地址 A1、员工 E1 和经理 M1 的一般处理顺序为 M1 -> E1 -> A1 ────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬────┬──────────
│ │ │ │ │ │ │ │ │
xx xx xx│ M1 │ M2 │ M3 │ M4 │ M5 │ M6 │ M7 │ M8│ xx xx xx
│ │ │ │ │ │ │ │ │
─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴────┴───────────
─────────┬──────┬─────┬─────┬────┬─────┬────┬────┬────────
│ │ │ │ │ │ │ │
xx xx xx│ E1 │ E2 │ E3 │ E4 │ E5 │ E6 │ E7 │xx xx xx
│ │ │ │ │ │ │ │
─────────┴──────┴─────┴─────┴────┴─────┴────┴────┴────────
───────┬─────┬────┬────┬────┬────┬────┬────┬────┬────┬──────
│ │ │ │ │ │ │ │ │ │
xx xx xx│ A1 │ A2 │ A3 │ A4 │ A5 │ A6 │ A7 │ A7 │ A8 │xx xx xx
│ │ │ │ │ │ │ │ │ │
───────┴─────┴────┴────┴────┴────┴────┴────┴────┴────┴──────
【问题讨论】:
你应该试试 Reactive Streams 的实现,比如 RxJava 或 Spring Reactor... 感谢@RafaelGuillen。这就是我现在所拥有的。正在寻找是否有更好的解决方案/框架等。 【参考方案1】:如果可以(并且几乎在所有情况下都可以),我会考虑"eventual consistency"。
也就是说,我认为:
数据需要按照相互依赖的顺序进行处理。
这不是真的。您应该与您的团队一起质疑这一说法,直到它落空为止(在非常非常罕见的情况下,这是正确的)。
如果您的数据不以“硬”的方式相互依赖,这将使您的生活更轻松。
按照您描述域的方式,无论如何您都必须有一个连接属性(id 或其他东西)。所以:
随时导入经理、员工和地址 在观察时刻(每当需要访问数据时)仅考虑提供经理、员工和地址的数据集或 编写一个作业,将数据集从最终一致性复制到一致的数据结构中,您只需忽略尚未完成的所有内容 如果您非常整洁,请编写一个作业,清空所有尚无父条目的依赖结构(地址、员工)。【讨论】:
感谢您的评论。这将是一个理想的用例,您可以控制所有处理数据的系统。当您的中间件使用现有的内部和外部 API 来保存这些数据时,这是一个困难的提议。此类系统的任何客户端都必须遵循设置的流程,了解如何调用以保存数据。以上是关于依赖实体处理的库或框架推荐的主要内容,如果未能解决你的问题,请参考以下文章