【发布时间】:2013-04-27 19:54:48
【问题描述】:
我有 2 个处理程序删除和重新排序图片的运行订单,并希望获得一些最佳解决方案的建议。
在 UI 上一些图片被删除,用户点击删除按钮。整个流程,删除命令直到实际删除物理文件的事件处理程序被启动。
然后用户立即对剩余的图片进行排序。从重新排序命令到文件系统的重新排序事件处理程序的新流程再次触发。
已经存在并发问题。如果没有完成删除,则无法正确应用重新排序。目前这个问题是用某种锁来处理的。创建一个临时文件,然后在删除流程结束时将其删除。当该文件存在时,另一个线程(根据用户操作重新排序或删除)等待。
这不是一个理想的解决方案,希望对其进行更改。 潜在的解决方案也必须非常快(当然当前的解决方案不是很快的),因为 UI 在订购结束时通过 JSON 调用进行更新。
在稍后的实现中,我们正在考虑使用事件队列,但目前我们陷入了困境。
任何想法将不胜感激! 谢谢你,摩苏!
编辑: 通过在客户端使用 Javascript 数据管理器解决了我们遇到的其他最终一致性问题。基本上是乐观主义者并欺骗用户! :) 我开始相信这也是去这里的方式。但是我怎么知道文件系统中的数据何时更改?
【问题讨论】:
-
您正在使用 CQRS 和一个以事件为中心的架构,并为图片库提供最终一致性?我相信你有你的理由,我真的很好奇它们是什么。 CQRS 并不适合一切。仍然应该使用 KISS。
-
并非如此。图片库只是车辆管理网站的一部分。到目前为止,我们还没有在这样的并发上下文中使用某些资源的情况。此外,到目前为止,CQRS 对我们来说效果很好。我们仍在学习,也希望向其他用户学习!