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

配置

配置项目引用

grain的接口

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

grain的实现

JournaledGrains需要继承自JournaledGrainJournaledGrain,它们在Microsoft.Orleans.EventSourcing包中定义。

日志一致性提供者

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

群集配置

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

<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>

你可能感兴趣的:(Orleans)