public void UnsubscribeFrom(string stream, string subscriberId)
        {
            lock (_synchroot)
            {
                Log.Info(_log, "Unsubscribing from {0}|{1}", stream, subscriberId ?? "default");
                _subscriptionTimerManager.Remove(stream, subscriberId);
                Log.Info(_log, "Unsubscribed from {0}|{1}", stream, subscriberId);

                StreamSubscriberMonitor.RemoveEventStreamMonitor(stream, subscriberId);
                Log.Info(_log, "Stream ticks monitor removed from {0}|{1}", stream, subscriberId ?? "default");
            }
        }
 public void SubscribeTo(string stream, string subscriberId, TimeSpan?pollInterval = null)
 {
     lock (_synchroot)
     {
         var interval = pollInterval ?? _defaultPollingInterval;
         Log.Info(_log, "Subscribing to {0}|{1} with an interval of {2}", stream, subscriberId ?? "default", interval);
         _subscriptionTimerManager.Add(stream, subscriberId, interval, async() => await PollAsync(stream, subscriberId).ConfigureAwait(false), () => StreamSubscriberMonitor.UpdateEventStreamSubscriberIntervalMonitor(stream, interval, subscriberId));
         Log.Info(_log, "Subscribed to {0}|{1} with an interval of {2}", stream, subscriberId ?? "default", interval);
     }
 }