0

我在使用 nservicebus 实施工作流程过程中遇到问题,我使用版本2.0.1329.2并且我尝试实施的工作流程非常简单:

我有一个需要计算的文章列表,工作流程从发布的第一个列表开始。之后,用户可以进行其他发布,从原始列表中添加或删除一些文章。每个列表都有一个代码标识符。

我已经使用列表代码标识的编排服务实现了它。在传奇数据中,也有列出列表的所有文章的引用。

问题是:当用户发布文章列表而同一列表的另一个发布正在进行时,没有任何进程状态锁定,因此没有并发控制,但稍后将完成的处理程序将具有它自己的数据仍然存在。

例如:

  1. 列出要添加的 10 篇文章在时间 [t] 到达,编排服务从数据库中加载 saga 数据,在时间 [t + 5] 对其进行修改并存储它
  2. 有 1 项添加的列表在时间 [t+1] 到达,编排服务从数据库中加载 saga 数据,在时间 [t+4] 对其进行修改并存储它

在时间 [t+6] 我应该添加 6 个元素,但我只添加了 5 个元素..

我认为行为应该是这样的:如果与同一列表相关,第二条消息应该找到进程状态锁定,直到第一个完成。否则如果与另一个列表相关,则应该并行处理。

为此,我想知道编排服务是否没有正确地支持工作流流程实现,除非将工作线程的数量设置为只有一个会失去并行效率。

4

2 回答 2

1

您使用的是非常旧的 NServiceBus 版本,应该升级。从那以后修复了很多错误,因此真的不值得您花时间尝试处理这些问题。

于 2012-09-18T14:06:11.800 回答
0

你需要设计你的传奇/长期运行的进程来解决所有的并发问题。很难说或推荐其他任何东西。

发表文章是否需要很长时间以致遇到并发问题?
或者,它们是否如此频繁地重新发布?

当一个文章列表首次发布时,其他人如何修改或重新发布它,而它还没有生成呢?

于 2012-09-18T11:49:26.293 回答