Azure Service Fabric 参与者提醒更新?
Azure Service Fabric actor reminder update?
假设我有一个可靠的演员在 OnActivateAsync
中注册了一个提醒。此提醒有一个 period
,它是从某个持久存储中检索到的。一段时间后,演员被垃圾收集。
再过一段时间,演员被调用或提醒触发,OnActivateAsync
被运行时调用。与此同时,我更新了持久存储中的提醒 period
。
现在发生了什么?我尝试再次注册提醒,但使用了不同的 period
。提醒会更新为新的 period
吗?
另一种情况是演员的更新。假设 period
是硬编码的,但新版本的 actor 使用不同的 period
。当调用 OnActivateAsync
并再次注册提醒时会发生什么?
因此,当您的提醒第一次触发时,您需要检查周期是否已更新并取消注册现有提醒并注册新提醒。
您无法更新现有提醒 - 使用 GetReminder
查看它是否存在,然后取消注册并创建一个新提醒。
```
var reminder = GetReminder(reminderName);
if (reminder != null)
{
// do something with it...
}
```
如果升级了 actor 代码,并且您在代码中有一个硬编码周期(已更改),使用守卫,您不会 register/update 现有提醒。
当您再次尝试注册现有的提醒时,它会被更新。来自 RegisterReminderAsync
文档 (https://docs.microsoft.com/en-us/dotnet/api/microsoft.servicefabric.actors.runtime.actorbase.registerreminderasync?view=azure-dotnet):
Existing reminders can also be updated by calling this method again.
假设我有一个可靠的演员在 OnActivateAsync
中注册了一个提醒。此提醒有一个 period
,它是从某个持久存储中检索到的。一段时间后,演员被垃圾收集。
再过一段时间,演员被调用或提醒触发,OnActivateAsync
被运行时调用。与此同时,我更新了持久存储中的提醒 period
。
现在发生了什么?我尝试再次注册提醒,但使用了不同的 period
。提醒会更新为新的 period
吗?
另一种情况是演员的更新。假设 period
是硬编码的,但新版本的 actor 使用不同的 period
。当调用 OnActivateAsync
并再次注册提醒时会发生什么?
因此,当您的提醒第一次触发时,您需要检查周期是否已更新并取消注册现有提醒并注册新提醒。
您无法更新现有提醒 - 使用 GetReminder
查看它是否存在,然后取消注册并创建一个新提醒。
```
var reminder = GetReminder(reminderName);
if (reminder != null)
{
// do something with it...
}
```
如果升级了 actor 代码,并且您在代码中有一个硬编码周期(已更改),使用守卫,您不会 register/update 现有提醒。
当您再次尝试注册现有的提醒时,它会被更新。来自 RegisterReminderAsync
文档 (https://docs.microsoft.com/en-us/dotnet/api/microsoft.servicefabric.actors.runtime.actorbase.registerreminderasync?view=azure-dotnet):
Existing reminders can also be updated by calling this method again.