【发布时间】:2020-09-24 23:11:10
【问题描述】:
组织Reminders + Timers 工作的最佳方式是什么?
我想在一秒钟内精确地运行一项任务。
据我了解,我需要以一定的间隔运行提醒。并且间隔的每个开始都会触发一个计时器以达到特定的时间。 但是我应该指定哪个提醒间隔来实现两个目标:
- 制定一个非常持久的解决方案(缓解突然的筒仓缩减、筒仓故障等)
- 增加实现所需精度的可能性。
- 最大限度地减少计时器和提醒开销
【问题讨论】:
组织Reminders + Timers 工作的最佳方式是什么?
我想在一秒钟内精确地运行一项任务。
据我了解,我需要以一定的间隔运行提醒。并且间隔的每个开始都会触发一个计时器以达到特定的时间。 但是我应该指定哪个提醒间隔来实现两个目标:
【问题讨论】:
提醒用于大致时间(分钟),计时器用于精确时间。您可以通过将两者结合起来创建一个强大的解决方案。
很明显,您将需要一些最初能产生颗粒的东西。您还需要持久存储提醒。然后在OnActivateAsync() 中创建提醒和计时器。
在提醒回调中检查定时器是否存在,必要时重新创建。
在定时器回调中,确保调用grain方法
private async Task SnapshotTimerFired()
{
var me = this.AsReference<IScoobyDoGrain>();
await me.DoSomethingForAScoobySnack();
}
通过调用grain,运行时会知道grain是活着的并且try不会因为内存压力而停用
【讨论】: