2016-05-26 2 views
2

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

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

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

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

ответ

1

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

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

2

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

`` `

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

` ``

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