Konfigurace event sourcingu
V tomto článku se dozvíte o různých možnostech konfigurace zdroje událostí pro .NET Orleans.
Konfigurace odkazů na projekt
Rozhraní zrnitosti
Stejně jako dříve závisí rozhraní pouze na Microsoft.Orleans.Core
balíčku, protože rozhraní agregace je nezávislé na implementaci.
Implementace agregačních intervalů
JournaledGrains musí odvozovat nebo JournaledGrain<TGrainState,TEventBase> JournaledGrain<TGrainState>, který je definován v Microsoft.Orleans.EventSourcing
balíčku.
Zprostředkovatelé konzistence protokolů
V současné době zahrnujeme tři zprostředkovatele konzistence protokolů (pro úložiště stavu, úložiště protokolů a vlastní úložiště). Všechny tři jsou také obsaženy Microsoft.Orleans.EventSourcing
v balíčku. Proto k těmto již mají přístup všichni žurnárna. Popis toho, co tito poskytovatelé dělají a jak se liší, najdete v tématu Zahrnuté zprostředkovatele konzistence protokolů.
Konfigurace clusteru
Zprostředkovatelé konzistence protokolů jsou nakonfigurovaní stejně jako ostatní Orleans zprostředkovatelé. Pokud například chcete zahrnout všechny tři zprostředkovatele (samozřejmě nebudete potřebovat všechny tři), přidejte ho do <Globals>
prvku konfiguračního souboru:
<LogConsistencyProviders>
<Provider Name="StateStorage"
Type="Orleans.EventSourcing.StateStorage.LogConsistencyProvider" />
<Provider Name="LogStorage"
Type="Orleans.EventSourcing.LogStorage.LogConsistencyProvider" />
<Provider Name="CustomStorage"
Type="Orleans.EventSourcing.CustomStorage.LogConsistencyProvider" />
</LogConsistencyProviders>
Totéž lze dosáhnout programově. Přechod na stabilní verzi 2.0.0, ClientConfiguration a ClusterConfiguration již neexistují! Nahradil ho znak a ClientBuilder ( SiloBuilder
všimněte si, že neexistuje žádný tvůrce clusteru).
builder.AddLogStorageBasedLogConsistencyProvider("LogStorage")
Atributy třídy grain
Každá třída žurnálu musí mít LogConsistencyProviderAttribute k určení zprostředkovatele konzistence protokolu. Někteří poskytovatelé navíc vyžadují StorageProviderAttributenapříklad:
[StorageProvider(ProviderName = "OrleansLocalStorage")]
[LogConsistencyProvider(ProviderName = "LogStorage")]
public class EventSourcedBankAccountGrain :
JournaledGrain<BankAccountState>, IEventSourcedBankAccountGrain
{
//...
}
Tady "OrleansLocalStorage"
se tedy používá k ukládání stavu agregace, kde byl "LogStorage"
zprostředkovatelem úložiště v paměti pro události EventSourcing.
LogConsistencyProvider
Atributy
Pokud chcete určit zprostředkovatele konzistence protokolu, přidejte [LogConsistencyProvider(ProviderName=...)]
do třídy agregace atribut a zadejte název poskytovatele podle konfigurace clusteru, například:
[LogConsistencyProvider(ProviderName = "CustomStorage")]
public class ChatGrain :
JournaledGrain<XDocument, IChatEvent>, IChatGrain, ICustomStorage
{
// ...
}
StorageProvider
Atributy
Někteří poskytovatelé konzistence protokolů (včetně LogStorage
a StateStorage
) používají ke komunikaci s úložištěm standardní storageProvider. Tento zprostředkovatel je zadán pomocí samostatného StorageProvider
atributu následujícím způsobem:
[LogConsistencyProvider(ProviderName = "LogStorage")]
[StorageProvider(ProviderName = "AzureBlobStorage")]
public class ChatGrain :
JournaledGrain<XDocument, IChatEvent>, IChatGrain
{
// ...
}
Výchozí zprostředkovatelé
Pokud je v konfiguraci zadána výchozí hodnota, je možné vynechat LogConsistencyProvider
a/nebo StorageProvider
atributy. To se provádí pomocí speciálního názvu Default
příslušného poskytovatele. Příklad:
<LogConsistencyProviders>
<Provider Name="Default"
Type="Orleans.EventSourcing.LogStorage.LogConsistencyProvider"/>
</LogConsistencyProviders>
<StorageProviders>
<Provider Name="Default"
Type="Orleans.Storage.MemoryStorage" />
</StorageProviders>