private void Blocked() { Receive <DoSomeWork>(m => { Stash.Stash(); log.Info($"Blocked Stashing WorkId {m.WorkID} at {DateTime.Now.ToLongTimeString()}"); }); Receive <DoCurrentWork>(m => { DoSomeWork work = m.Work; DoTheWork(work); log.Info($"WorkerActor finished processing DoSomeWork {work.WorkID} at {DateTime.Now.ToLongTimeString()}"); Become(Ready);//unblock and process first stashed request Stash.Unstash(); }); log.Info($"Blocked returning at {DateTime.Now.ToLongTimeString()}"); return; }
private void DoTheWork(DoSomeWork m) { log.Info($"DoTheWork WorkId {m.WorkID}"); System.Threading.Thread.Sleep(2500); //simulate i/o latency }