void CreateSubscriberActor(CreateSubscriber createSubscriber)
{
if (createSubscriber == null)
throw new ArgumentNullException(nameof(createSubscriber));
IActorRef subscriberManager;
if (!_subscriberManagers.TryGetValue(createSubscriber.BaseMessageType, out subscriberManager))
{
subscriberManager = Context.ActorOf(
SubscriberManagerProps(createSubscriber.BaseMessageType)
);
_subscriberManagers.Add(createSubscriber.BaseMessageType, subscriberManager);
_subscriberManagerReverseLookup.Add(subscriberManager, createSubscriber.BaseMessageType);
Context.Watch(subscriberManager);
}
// Forward the message to the typed subscriber manager; they'll know what to do with it.
subscriberManager.Forward(createSubscriber);
}