Compartir a través de


Notificaciones

A menudo resulta conveniente tener la capacidad de reaccionar ante los cambios de estado. Todas las devoluciones de llamadas están sujetas a las garantías basadas en turnos de Orleans; consulte también la sección sobre garantías de simultaneidad.

Seguimiento del estado confirmado

Para recibir una notificación de cualquier cambio en el estado confirmado, las subclases JournaledGrain<TGrainState,TEventBase> pueden invalidar este método:

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

Se llama a OnStateChanged cada vez que se actualiza el estado confirmado, es decir, el número de versión aumenta. Esto puede suceder cuando

  1. Se cargó una versión más reciente del estado desde el almacenamiento.
  2. Un evento que ha generado esta instancia se ha escrito correctamente en el almacenamiento.
  3. Se recibió un mensaje de notificación de otra instancia.

Tenga en cuenta que, dado que todos los granos tienen inicialmente la versión cero, hasta que se completa la carga inicial desde el almacenamiento, esto significa que se llama a OnStateChanged() cada vez que la carga inicial se completa con una versión mayor que cero.

Seguimiento del estado provisional

Para recibir una notificación de cualquier cambio en el estado provisional, las subclases JournaledGrain pueden invalidar este método:

protected override void OnTentativeStateChanged()
{
   // read state and/or events and take appropriate action
}

Se llama a OnTentativeStateChanged() cada vez que cambia el estado provisional, es decir, si cambia la secuencia combinada (ConfirmedEvents + UnconfirmedEvents). En concreto, una devolución de llamada a OnTentativeStateChanged() siempre se produce durante RaiseEvent.