2017-07-25 39 views
0

我是奥尔良的新手。我想知道如何使用奥尔良的谷物储存功能。我应该像使用消息队列一样使用它吗?它是否暂时保存我的状态 并保持数据可用,即使它引发异常或 服务器崩溃。我应该如何使用奥尔良的存储提供商

谢谢!

+0

你有看过文档吗? http://dotnet.github.io/orleans/Documentation/Getting-Started-With-Orleans/Grain-Persistence.html – BozoJoe

回答

0

扩展Grain<T>类并用[StorageProvider]属性注释的谷物将在您拨打base.WriteStateAsync()时将其当前状态写入指定的提供程序。

如果谷物由于任何原因(包括服务器崩溃)而被停用,那么在重新激活时谷物将被最后保存的状态初始化。

我喜欢把它看作缓存而不是队列。希望有所帮助,并且像之前的海报说的那样,阅读文档,这很有用。

0

我写了几篇文章来引导你一步一步变成习惯的存储提供API和设置持久性存储:

奥尔良基本上给你一个非常简单的API(图片来自上面的第一篇文章):

enter image description here

您的谷物将从Grain<T>继承,其中T是您自己的类,包含您想要坚持的状态。来自Grain<T>State属性允许您访问它并读取/修改状态。其余的async方法可让您保存对持久性存储的更改,读取它们或清除状态。你通常不需要阅读状态;它在谷物被激活时自动完成。

没有消息队列参与。当您调用这三种方法之一时,他们将使用底层存储提供程序与您正在使用的任何数据库进行通信。由于特定于存储区的错误(例如死锁),或由于乐观并发控制检查失败导致的InconsistentStateException,这可能会失败。

无论您决定使用哪种存储(例如SQL Server,Azure表存储,内存等),都必须通过XML配置或代码进行配置,并给出名称。此名称随后用于覆盖粮食类的[StorageProvider]属性中;通过这种方式,谷物知道在执行持久性工作时要使用什么存储提供程序(您的系统中可能有多种存储提供程序)。

所有这些都是如何完成的细节有点冗长(这就是为什么我写这篇文章的原因)。您可以在我上面链接的文章或Grain Persistence文档中找到关于此的更多信息。