Partilhar via


Notificações

Muitas vezes, é conveniente 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 as subclasses podem substituir este método:

protected override void OnStateChanged()
{
   // read state and/or event log and take appropriate action
}

OnStateChanged é invocado sempre que o estado confirmado é atualizado, ou seja, o número da versão aumenta. Este problema pode ocorrer quando:

  1. Uma versão mais recente do estado foi carregada a partir do armazenamento.
  2. Um evento 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, OnStateChanged é chamado sempre que a carga inicial do armazenamento é 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 especial, um retorno de chamada para OnTentativeStateChanged() sempre acontece durante RaiseEvent.