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.