我在使用 nservicebus 实施工作流程过程中遇到问题,我使用版本2.0.1329.2
并且我尝试实施的工作流程非常简单:
我有一个需要计算的文章列表,工作流程从发布的第一个列表开始。之后,用户可以进行其他发布,从原始列表中添加或删除一些文章。每个列表都有一个代码标识符。
我已经使用列表代码标识的编排服务实现了它。在传奇数据中,也有列出列表的所有文章的引用。
问题是:当用户发布文章列表而同一列表的另一个发布正在进行时,没有任何进程状态锁定,因此没有并发控制,但稍后将完成的处理程序将具有它自己的数据仍然存在。
例如:
- 列出要添加的 10 篇文章在时间 [t] 到达,编排服务从数据库中加载 saga 数据,在时间 [t + 5] 对其进行修改并存储它
- 有 1 项添加的列表在时间 [t+1] 到达,编排服务从数据库中加载 saga 数据,在时间 [t+4] 对其进行修改并存储它
在时间 [t+6] 我应该添加 6 个元素,但我只添加了 5 个元素..
我认为行为应该是这样的:如果与同一列表相关,第二条消息应该找到进程状态锁定,直到第一个完成。否则如果与另一个列表相关,则应该并行处理。
为此,我想知道编排服务是否没有正确地支持工作流流程实现,除非将工作线程的数量设置为只有一个会失去并行效率。