Я запускаю локальный кластер для работы с 5 узлами.
Чтобы иметь более тонкий контроль над длинными действующими актерами, я хочу удалить актеров, когда это необходимо.
Обращаясь к документации deleting actors и enumerating actors я придумал следующий код
Общие сведения об удалении актера службы ткани
//create actor ID, get instance and call a method on the actor
ActorId id = ActorId.CreateRandom();
IActor1 myActor = ActorProxy.Create<IActor1>(id, new Uri(URI));
Console.WriteLine(myActor.GetCountAsync().GetAwaiter().GetResult() + "ActorID:" + id.GetPartitionKey());
IActorService myActorServiceProxy = ActorServiceProxy.Create(new Uri(URI), id);
//delete actor from Actor service
myActorServiceProxy.DeleteActorAsync(id, new CancellationToken()).GetAwaiter().GetResult();
//enumerate actors
IActorService actorServiceProxy = ActorServiceProxy.Create(new Uri(URI), id.GetPartitionKey());
ContinuationToken continuationToken = null;
List<ActorInformation> activeActors = new List<ActorInformation>();
do
{
PagedResult<ActorInformation> page = actorServiceProxy
.GetActorsAsync(continuationToken, new CancellationToken()).GetAwaiter().GetResult();
activeActors.AddRange(page.Items.Where(x => x.IsActive));
continuationToken = page.ContinuationToken;
}
while (continuationToken != null);
foreach(ActorInformation info in activeActors)
{
Console.WriteLine("INFO:" + info.ActorId + ":" + info.IsActive);
}
//call the method again
Console.WriteLine(myActor.GetCountAsync().GetAwaiter().GetResult() + "ActorID:" + id.GetLongId());
И вывод, который я получаю
0ActorID:1952475710829467062 0ActorID:1952475710829467062
где 0 является возвращаемое значение метода.
Я понимаю, что актер был удален из службы, поскольку ничего не было напечатано в цикле foreach, но как мой второй вызов метода актера прошел успешно, если актер был удален? Был ли он воссоздан? Пожалуйста, помогите мне в понимании этого.
Пункт 2 был полезным напоминанием о том, что ActorProxy только создает канал связи и не активирует актера, как указано здесь https://azure.microsoft.com/en-us/documentation/articles/service-fabric- надежные-актёры введение/# _ актер-прокси. Спасибо! – raghav710