/// <summary>
 /// Finds listeners that are not running and replaces them with new, running ones
 /// </summary>
 private void ListenerHealthCheck()
 {
     while (true)
     {
         try
         {
             if (ShutdownEvent.IsSet)
             {
                 return;
             }
             _actorManager.ReplaceInactiveListeners(_listenerConfigurations, _dependencyResolver);
             if (ListenerSubscriptionEnded.IsSet)
             {
                 // If our composer's subscription to listener reports has fallen over, stand it back up
                 SubscribeToListenerReports();
             }
             // Dumb minute long sleep
             Thread.Sleep(60 * 1000);
         }
         catch (Exception ex)
         {
             OnErrorAction(ex);
         }
     }
 }