Мы хотим, чтобы актер остановился сам после некоторого периода бездействия (то есть после того, как он не получил определенного вида сообщения в течение x минут). Я не вижу встроенной поддержки для этого, поэтому я решил использовать планировщик.
Актер сам назначает себе запланированное сообщение, как показано ниже:
Context
.System
.Scheduler
.ScheduleTellRepeatedly(_expiryInterval, _expiryInterval, Self, new ExpiryCheckMessage(), Self);
При получении этого сообщения:
Receive<ExpiryCheckMessage>(x => {
if(IsExpired())
{
Context.Stop(Self);
}
});
Но после истечения срока действия и остановки актера отправка запланированных сообщений приводит к возникновению тупиков.
Каков наилучший способ остановить запланированное сообщение в это дело?