通知
通常情况下,提供相应功能来针对状态变化做出反应很有用处。 所有回调均遵从 Orleans 基于回合的保证;另请参阅“并发性保证”部分。
跟踪已确认状态
要想针对已确认状态的任何更改收到通知,JournaledGrain<TGrainState,TEventBase> 子类可以重写以下方法:
protected override void OnStateChanged()
{
// read state and/or event log and take appropriate action
}
每当已确认状态被更新时都会调用 OnStateChanged
,即版本号增大。 在以下情况下,可能会发生此行为:
- 从存储中加载了较新版本的状态。
- 此实例引发的事件已成功写入到存储。
- 从其他实例收到了通知消息。
请注意,由于所有粒度最初都具有版本零,直到从存储完成初始加载,这意味着每当初始加载以大于零的版本完成时,都会调用 OnStateChanged()。
跟踪暂时性状态
要想针对暂时性状态的任何更改收到通知,JournaledGrain
子类可以重写以下方法:
protected override void OnTentativeStateChanged()
{
// read state and/or events and take appropriate action
}
每当暂时性状态发生更改,即组合序列 (ConfirmedEvents + UnconfirmedEvents) 发生更改时,都会调用 OnTentativeStateChanged()。 特别需要指出的是,在 RaiseEvent 过程中始终会回调 OnTentativeStateChanged()
。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈