Mar*_*oxx 5 c# reminders azure azure-service-fabric
文档说:
提醒是一种在指定时间触发参与者持久回调的机制。它们的功能类似于计时器。但与计时器不同的是,在所有情况下都会触发提醒,直到参与者明确取消注册它们或明确删除参与者为止。具体来说,由于 Actor 运行时会保留有关 Actor 提醒的信息,因此在 Actor 停用和故障转移期间会触发提醒。
假设我们将提醒设置为在 1 小时后运行,但 Actor 的空闲超时为 10 分钟,扫描间隔为 2 分钟(在 actor 中设置ActorGarbageCollectionSettings)。
前 15 分钟后会发生什么情况,Actor 处于空闲状态,因此被 GC 并停用。那么它如何知道 45 分钟后重新创建 Actor?它如何知道使用什么 Actor ID 来创建 Actor?
问这个问题是因为我想知道这些模式是如何工作的:
https://www.codit.eu/blog/2016/08/25/how-to-enable-automatic-scheduling-in-service-fabric-actors/
假设我们将提醒设置为在 1 小时后运行,但 Actor 的空闲超时为 10 分钟,扫描间隔为 2 分钟(在 Actor 的 ActorGarbageCollectionSettings 中设置)。
前 15 分钟后会发生什么情况,Actor 处于空闲状态,因此被 GC 并停用。
所发生的情况是,当 Azure Service Fabric 需要时,Actor 会自动激活,并执行提醒代码。使用参与者框架(OnActivateAsync / OnDeactivateAsync)提供的事件和虚拟方法,这很容易跟踪。事实上,我有一个回购协议,它准确地显示了使用基于 EventSource 的日志记录机制。
至于 ASF 实际上是如何跟踪计时器和提醒的,我们只能猜测,他们正在开源该项目,所以也许你已经可以在源代码中查找它了。
编辑:我看到它在内部使用计时器,请参阅https://github.com/Azure/service-fabric-services-and-actors-dotnet/blob/develop/src/Microsoft.ServiceFabric.Actors/Runtime/ActorReminder.cs
有一个ActorManager可以跟踪.ActorIdConcurrentDictionary
编辑2:您在问题中添加的文档中明确说明了这一点:
提醒是一种在指定时间触发参与者持久回调的机制。它们的功能类似于计时器。但与计时器不同的是,在所有情况下都会触发提醒,直到参与者明确取消注册它们或明确删除参与者为止。具体来说,由于 Actor 运行时会保留有关 Actor 提醒的信息,因此在 Actor 停用和故障转移期间会触发提醒。
| 归档时间: | 
 | 
| 查看次数: | 2697 次 | 
| 最近记录: |