Обновление напоминания субъекта Azure Service Fabric?

Предположим, у меня есть надежный актор, который регистрирует напоминание в OnActivateAsync. Это напоминание имеет period, полученное из некоторого постоянного хранилища. Через некоторое время актера вывозят.

Еще через некоторое время вызывается актер или срабатывает напоминание, и среда выполнения вызывает OnActivateAsync. Тем временем я обновил напоминание period в постоянном хранилище.

Что происходит? Я снова пытаюсь зарегистрировать напоминание, но с другим period. Будет ли напоминание обновлено новым period?

Другой случай — обновление актора. Предположим, что period жестко запрограммировано, но новая версия актора использует другой period. Что происходит теперь, когда вызывается OnActivateAsync и снова регистрируется напоминание?


person Ronald Wildenberg    schedule 26.05.2016    source источник


Ответы (2)


При повторной попытке зарегистрировать существующее напоминание оно будет обновлено. Из RegisterReminderAsync документации (https://docs.microsoft.com/en-us/dotnet/api/microsoft.servicefabric.actors.runtime.actorbase.registerreminderasync?view=azure-dotnet):

Существующие напоминания также можно обновить, снова вызвав этот метод.

person user2970445    schedule 28.08.2017

Поэтому, когда ваше напоминание срабатывает в первый раз, вы должны проверить, был ли обновлен период, отменить регистрацию существующего напоминания и зарегистрировать новое. Вы не можете обновить существующее напоминание. Используйте GetReminder, чтобы узнать, существует ли оно, а затем отмените его регистрацию и создайте новое.

```

 var reminder = GetReminder(reminderName);       
  if (reminder != null)                           
  {                                               
      // do something with it...    
  }         

```

В случае, когда код актора обновляется и у вас есть жестко запрограммированный период в коде (который изменился), с охраной вы не будете регистрировать/обновлять существующее напоминание.

person Raghu    schedule 30.05.2016