nservicebus并发访问saga数据

时间:2012-09-11 13:03:52

标签: c# concurrency nservicebus saga

我使用NServiceBus作为企业服务总线,在我正在开发的解决方案中,我有一个编排服务,它从所有客户端应用程序接收多达10k条消息。我想提高架构性能,从而增强所提供的解决方案。

我使用Saga Data类,我想在所有工作线程之间共享对它的访问权限(到目前为止我只设置一个线程,但我想设置至少10个),当多个线程尝试时会发生什么访问相同的传奇? NSB是否已经提供了这样的并发功能?我必须自己实施吗?如果后者有任何提示?

提前致谢

2 个答案:

答案 0 :(得分:6)

如果我理解你的话,你会问如果有多个线程同时访问同一个saga实例会发生什么。 NServiceBus正在使用底层存储来确保只有一个线程可以同时创建/更新给定的saga实例。其他人将回滚并且NServiceBus支持重试将确保重试该消息,从而为您解决竞争条件。你可以在这里阅读更多内容:

http://andreasohlund.net/2012/09/19/nservicebus-sagas-and-concurrency/

答案 1 :(得分:1)

你不可能有多个传奇共享相同的实例数据,而不是它们的设计工作方式。传奇是一个长期运行过程的实例。 saga数据类只是一种结构,允许您存储有关该实例的信息,以帮助管理其生命周期内的状态。如果您想提高性能,我建议您考虑分发您的工作端点(http://docs.particular.net/samples/scaleout/)。