Memorizzazione della cronologia in un modello di attore

0

Essendo un noob completo per il modo di fare del modello attore, ho difficoltà a capire come memorizzare la cronologia delle transazioni in un modello di attore. Nell'esempio tratto da ProtoActor Persistence ( link ) l'attore bambino produce un gruppo di nomi casuali come questo:

public Task ReceiveAsync(IContext context)
{
    switch(context.Message)
    {
        case Started _:
            context.Self.Tell(new LoopParentMessage());
            break;
        case LoopParentMessage msg:
            Task.Run(async () => {
                context.Parent.Tell(new RenameCommand { Name = GeneratePronounceableName(5) });
                await Task.Delay(TimeSpan.FromSeconds(2));
                context.Self.Tell(new LoopParentMessage());
            });
            break;
    }

    return Actor.Done;
}

E il genitore aggiorna quindi lo stato in questo modo:

private async Task Handle(RenameCommand message)
{
    Console.WriteLine("MyPersistenceActor - RenameCommand");
    _state.Name = message.Name;
    await _persistence.PersistEventAsync(new RenameEvent { Name = message.Name });
}

La domanda è, in un modello di attore, come dovrei archiviare e recuperare un elenco di nomi precedentemente generati da mostrare all'utente.

Li ho appena archiviati in una tabella di database separata? Sembra un po 'dispendioso perché ho già memorizzato gli eventi nel negozio degli eventi. Allora, dovrei usare l'Event Store come giornale? Mi sembra anche di mescolare le preoccupazioni per gli eventi.

Un altro modo per chiederglielo: se ho un conto bancario modellato come attore, come devo archiviare la cronologia delle transazioni in modo che possa mostrarla nell'interfaccia utente e non solo nel bilancio corrente?

    
posta Geoff 03.08.2017 - 15:51
fonte

1 risposta

0

Utilizza una tabella per ogni relazione:

Tosimulatetheworkingsofonestore,wecreatedeightStoreSectionactors.Foreach,weloadedtheinventoryrelationwith10,000itemsandthepurchasehistoryrelationwith300entriesperitemforatotalof3,000,000entries,simulatingahistoryof120dayswhere500customersonaveragevisitthestoreperdayandbuy50itemseach.WefixthenumberofGroupManageractorsto10andvarythenumberofCartactorsdependingontheexperiment.ThenumberofCustomeractorsissetto30timesthenumberofcarts.

Riferimenti

  • Sistemi di database relatore-attore: un manifesto (pdf)
risposta data 12.09.2018 - 19:28
fonte

Leggi altre domande sui tag