我使用 NServiceBus 作为企业服务总线,在我正在开发的解决方案中,我有一个编排服务,它接收来自所有客户端应用程序的多达 10k 条消息。我想提高架构性能,从而增强所提供的解决方案。
我使用一个 Saga Data 类,我想在所有工作线程之间共享对它的访问(到目前为止,我只设置一个线程,但我想至少设置为 10),当多个线程尝试访问时会发生什么同样的传奇故事?NSB 是否已经提供了这样的并发特性?我必须自己实施吗?如果后者有任何提示?
提前致谢
我使用 NServiceBus 作为企业服务总线,在我正在开发的解决方案中,我有一个编排服务,它接收来自所有客户端应用程序的多达 10k 条消息。我想提高架构性能,从而增强所提供的解决方案。
我使用一个 Saga Data 类,我想在所有工作线程之间共享对它的访问(到目前为止,我只设置一个线程,但我想至少设置为 10),当多个线程尝试访问时会发生什么同样的传奇故事?NSB 是否已经提供了这样的并发特性?我必须自己实施吗?如果后者有任何提示?
提前致谢
如果我理解正确,您会问如果您有多个线程同时访问同一个 saga 实例会发生什么。NServiceBus 使用底层存储来确保只有一个线程可以同时创建/更新给定的 saga 实例。其他人将回滚,NServiceBus 对重试的支持将确保消息被重试,从而为您解决竞争条件。你可以在这里阅读更多:
http://andreasohlund.net/2012/09/19/nservicebus-sagas-and-concurrency/
您不太可能有多个 sagas 共享相同的实例数据,只是它们的设计方式不同。saga 是一个长时间运行的进程的实例。saga 数据类只是一个构造,它允许您存储有关该实例的信息,这有助于在其生命周期内管理其状态。如果你想提高性能,我建议你看看分发你的工作端点(http://docs.particular.net/samples/scaleout/)。