Partilhar via


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:

  1. Uma versão mais recente do estado foi carregada do armazenamento.
  2. Um evento que foi gerado por esta instância foi gravado com êxito no armazenamento.
  3. 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() .