Notifications
Muitas vezes é conveniente ter a capacidade de reagir a mudanças de estado. Todos os retornos de chamada estão sujeitos a Orleansgarantias baseadas em turnos, veja também a seção sobre Garantias de Simultaneidade.
Estado confirmado da pista
Para ser notificado de quaisquer alterações no estado confirmado, JournaledGrain<TGrainState,TEventBase> as subclasses podem substituir este método:
protected override void OnStateChanged()
{
// read state and/or event log and take appropriate action
}
OnStateChanged
é chamado sempre que o estado confirmado é atualizado, ou seja, o número da versão aumenta. Isto pode acontecer quando:
- Uma versão mais recente do estado foi carregada do armazenamento.
- Um evento que foi gerado por esta instância foi gravado com êxito no armazenamento.
- Uma mensagem de notificação foi recebida de alguma outra instância.
Observe que, como todos os grãos inicialmente têm a versão zero, até que a carga inicial do armazenamento seja concluída, isso significa que é chamado sempre que OnStateChanged() a carga inicial é concluída com uma versão maior que zero.
Rastrear estado provisório
Para ser notificado de quaisquer alterações no estado provisório, JournaledGrain
as subclasses podem substituir este método:
protected override void OnTentativeStateChanged()
{
// read state and/or events and take appropriate action
}
OnTentativeStateChanged() é chamado sempre que o estado provisório muda, ou seja, se a sequência combinada (ConfirmedEvents + UnconfirmedEvents) muda. Em particular, um retorno de chamada para sempre acontece durante RaiseEvento OnTentativeStateChanged()
.