0

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

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

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

我一直在阅读这篇文章,在 NServiceBus 4.6.5 中,我正在实现 ISagaPersister 接口并将所有内容保存到 Oracle 数据库中。

谢谢

4

1 回答 1

3

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

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

于 2018-05-23T16:26:04.757 回答