编排服务是否不适合实施工作流程?

时间:2012-09-17 09:53:50

标签: nservicebus saga

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

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

我使用列表代码标识的业务流程服务实现了它。在传奇数据中,还列出了列表的所有文章的参考文献。

问题在于:当用户发布文章列表而另一个同一列表的发布正在进行时,没有任何锁定进程状态,并且这样就没有并发控制但是处理程序将完成以后会保留自己的数据。

例如:

  1. 列出要添加的10篇文章到时间[t],业务流程服务从数据库加载saga数据,修改它并在时间[t + 5]存储
  2. 列出要添加的1个项目到达时间[t + 1],业务流程服务从数据库加载saga数据,修改并在时间[t + 4]
  3. 存储

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

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

    对于这一点,我想知道是否没有正确地编写业务流程服务以支持工作流程流程实现,除非将工作线程数设置为只有一个失去并行效率的工作线程。

2 个答案:

答案 0 :(得分:1)

您使用的是非常旧版本的NServiceBus,应该进行升级。从那时起,修复了很多错误,确实不值得你花时间去处理这些问题。

答案 1 :(得分:0)

您需要设计您的传奇/长时间运行的进程来解决所有并发问题。很难说或推荐别的东西。

发布文章需要花费很长时间才能遇到并发问题吗? 或者,它们是否经常重新发布?

首次发布文章列表时,如果尚未生成文章列表,其他人如何修改或重新发布文章?

相关问题