Partager via


Notifications

Il est souvent pratique de pouvoir réagir aux changements d’état. Tous les rappels sont soumis aux garanties du tour par tour d’Orleans. Consultez également la section sur les garanties de concurrence.

Effectuer le suivi de l’état confirmé

Pour être notifié en cas de changement apporté à l’état confirmé, les sous-classes de JournaledGrain<TGrainState,TEventBase> peuvent remplacer cette méthode :

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

OnStateChanged est appelé chaque fois que l’état confirmé est mis à jour, c’est-à-dire que le numéro de version augmente. Cela peut se produire quand

  1. Une version plus récente de l’état a été chargée à partir du stockage.
  2. Un événement déclenché par cette instance a été correctement écrit dans le stockage.
  3. Un message de notification a été reçu de la part d’une autre instance.

Notez que tous les grains ont initialement la version zéro tant que le chargement initial à partir du stockage ne s’est pas effectué. Cela signifie donc que OnStateChanged() est appelé chaque fois que le chargement initial s’est effectué avec une version supérieure à zéro.

Effectuer le suivi de l’état provisoire

Pour être notifié en cas de changement apporté à l’état provisoire, les sous-classes de JournaledGrain peuvent remplacer cette méthode :

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

OnTentativeStateChanged() est appelé chaque fois que l’état provisoire change, c’est-à-dire que la séquence combinée (ConfirmedEvents + UnconfirmedEvents) change. En particulier, un rappel de OnTentativeStateChanged() se produit toujours durant RaiseEvent.