【问题标题】:NServiceBus - How to make sure SagaData is in sync between the Worker Servers?NServiceBus - 如何确保 SagaData 在工作服务器之间同步?
【发布时间】:2018-05-23 14:17:23
【问题描述】:

在 NServiceBus 4.6.5 中,消息使用 Round-Robin 算法发送到 Worker 服务器。

我在 Sagas 中有一些数据来检测不同步的业务消息。该数据存储在 Oracle 数据库中。

如何确保所有服务器始终共享相同的 SagaData(同步),这样如果一台服务器对该 SagaData 进行更改,其他服务器的 SagaData 就会失效并自动更新?

我一直在阅读 this 并在 NServiceBus 4.6.5 中实现 ISagaPersister 接口并将所有内容持久化到 Oracle 数据库。

谢谢

【问题讨论】:

    标签: synchronization nservicebus nservicebus-sagas


    【解决方案1】:

    这完全由您的数据库处理。每次您的 saga 访问时,它的状态都会从数据库中检索,这不会被 NServiceBus 缓存。数据库中的这种状态要么使用乐观并发控制乐观地锁定,要么使用数据库事务管理的数据库锁悲观地锁定。

    如果您自定义 NHibernate 配置,那么您可以在 NHibernate 中配置二级缓存,但如果您使用多个服务器,则应避免这种情况,除非您使用分布式缓存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-20
      • 1970-01-01
      • 2018-04-06
      • 1970-01-01
      相关资源
      最近更新 更多