我应该如何使用奥尔良的存储提供商

时间:2017-07-25 03:48:29

标签: storage orleans

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

谢谢!

2 个答案:

答案 0 :(得分:0)

扩展Grain<T>类并使用[StorageProvider]属性进行注释的粒子会在您调用base.WriteStateAsync()时将其当前状态写入指定的提供程序。

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

我喜欢将其视为缓存,而不是队列。希望有所帮助,并且像前面的海报所说,阅读文档,它很有用。

答案 1 :(得分:0)

我写了几篇文章来指导您逐步熟悉Storage Provider API并设置持久性存储:

基本上,Orleans为您提供了一个非常简单的API(图片来自上面的第一篇文章):

enter image description here

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

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

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

所有这些完成的细节有点冗长,包括在这里(这就是为什么我写了关于这个主题的文章)。您可以在我上面链接的文章或Grain Persistence文档中找到有关此内容的更多信息。