NServiceBus - 如何确保SagaData在工作服务器之间保持同步?

时间:2018-05-23 14:17:23

标签: synchronization nservicebus nservicebus-sagas

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

我在Sagas中有一些数据可以检测出商业讯息不同步。该数据存储在Oracle数据库中。

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

我一直在阅读this和NServiceBus 4.6.5我正在实现ISagaPersister接口并将所有内容保存到Oracle数据库。

由于

1 个答案:

答案 0 :(得分:3)

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

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