通知

多くの場合、状態の変化に対応する機能を持つことは便利です。 すべてのコールバックは、Orleans のターンベースの保証の対象となります。コンカレンシーの保証に関するセクションも参照してください。

確認済みの状態を追跡する

確認済みの状態に対する変更通知を受け取るために、JournaledGrain<TGrainState,TEventBase> サブクラスはこのメソッドをオーバーライドできます。

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

OnStateChanged は、確認済みの状態が更新されるたびに呼び出されます。つまり、バージョン番号が大きくなります。 これは次の場合に発生します。

  1. 新しいバージョンの状態がストレージから読み込まれた。
  2. このインスタンスによって発生したイベントが、ストレージに正常に書き込まれた。
  3. 他のインスタンスから通知メッセージを受信した。

ストレージからの最初の読み込みが完了するまで、すべてのグレインのバージョンは最初は 0 になるため、これは、最初の読み込みが 0 より大きいバージョンで完了するたびに OnStateChanged() が呼び出されることを意味します。

仮の状態を追跡する

仮の状態に対する変更通知を受け取るために、JournaledGrain サブクラスはこのメソッドをオーバーライドできます。

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

OnTentativeStateChanged() は、仮の状態が変更されるたびに呼び出されます。つまり、結合シーケンス (ConfirmedEvents + UnconfirmedEvents) が変更された場合です。 特に、OnTentativeStateChanged() のコールバックは常に RaiseEvent の間に行われます。