Orleans 2.0 官方文档 —— 4.9.6 Grains -> 事件溯源 -> 事件溯源的配置

配置

配置项目引用

grain的接口

和之前一样,接口仅依赖于Microsoft.Orleans.Core包,因为grain接口独立于实现。

grain的实现

JournaledGrains需要继承自JournaledGrain<S,E>JournaledGrain<S>,它们在Microsoft.Orleans.EventSourcing包中定义。

日志一致性提供者

我们目前包括三个日志一致性提供程序(用于状态存储,日志存储和自定义存储)。这三个都包含在Microsoft.Orleans.EventSourcing包中。因此,所有的Journaled Grains都可以访问这三个提供程序。有关这些提供程序的功能及其区别的说明,请参阅包含的日志一致性提供程序

群集配置

日志一致性提供程序的配置与任何其他Orleans提供程序一样。例如,要包含全部的三个提供程序(当然,您可能不需要全部三个),请将其添加到配置文件的<Globals>元素中:

<LogConsistencyProviders>
  <Provider Type="Orleans.EventSourcing.StateStorage.LogConsistencyProvider" Name="StateStorage" />
  <Provider Type="Orleans.EventSourcing.LogStorage.LogConsistencyProvider" Name="LogStorage" />
  <Provider Type="Orleans.EventSourcing.CustomStorage.LogConsistencyProvider" Name="CustomStorage" />
</LogConsistencyProviders>

可以通过编程方式实现同​​样的目的。假设项目包含Microsoft.Orleans.EventSourcing包,并且config是一个ClusterConfiguration对象:

using Orleans.Runtime.Configuration; // pick up the necessary extension methods

config.AddLogStorageBasedLogConsistencyProvider("LogStorage");
config.AddStateStorageBasedLogConsistencyProvider("StateStorage");
config.AddCustomStorageBasedLogConsistencyProvider("CustomStorage");

grain类的属性

每个journaled grain 类必须具有一个LogConsistencyProvider属性,来指定日志一致性提供者。某些提供程序还要求一个StorageProvider属性。

LogConsistencyProvider属性

要指定日志一致性提供程序,请向grain类添加一个[LogConsistencyProvider(ProviderName=...)]属性,并根据Cluster的配置,给出提供程序的名称。例如:

[LogConsistencyProvider(ProviderName = "CustomStorage")]
public class ChatGrain : JournaledGrain<XDocument, IChatEvent>, IChatGrain, ICustomStorage { ... }

StorageProvider属性

一些日志一致性提供程序(包括LogStorageStateStorage)使用标准StorageProvider与存储进行通信。使用单独的StorageProvider属性,来指定此提供程序,如下所示:

[LogConsistencyProvider(ProviderName = "LogStorage")]
[StorageProvider(ProviderName = "AzureBlobStorage")]
public class ChatGrain : JournaledGrain<XDocument, IChatEvent>, IChatGrain { ... }

默认的提供程序

如果在配置中指定了默认值,则可以省略LogConsistencyProvider和/或StorageProvider属性。这是通过使用各自的提供程序的特殊名称Default来完成的。例如:

<LogConsistencyProviders>
  <Provider Type="Orleans.EventSourcing.LogStorage.LogConsistencyProvider" Name="Default" />
</LogConsistencyProviders>
<StorageProviders>
  <Provider Type="Orleans.Storage.MemoryStorage" Name="Default" />
</StorageProviders>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值