public StockActor(string stockSymbol) { _stockSymbol = stockSymbol; _subscribers = new HashSet<IActorRef>(); _priceLookupChild = Context.ActorOf(Context.DI().Props<StockPriceLookupActor>()); Receive<SubscribeToNewStockPricesMessage>(message => _subscribers.Add(message.Subscriber)); Receive<UnSubscribeFromNewStockPricesMessage>(message => _subscribers.Remove(message.Subscriber)); Receive<RefreshStockPriceMessage>(message => _priceLookupChild.Tell(message)); Receive<UpdatedStockPriceMessage>(message => { _stockPrice = message.Price; var stockPriceMessage = new StockPriceMessage(_stockSymbol, _stockPrice, message.Date); foreach (var subscriber in _subscribers) { subscriber.Tell(stockPriceMessage); } }); }