/// <summary>
        /// Start replay listeners
        /// </summary>
        public void StartReplay()
        {
            if (IsReplaying)
            {
                throw new BusConfigurationException("Attempted to replay the MicroserviceHost, but it is already replaying.");
            }

            Logger.LogInformation($"Starting replay with {ReplayListeners.Count()} replay listeners");

            IsReplaying = true;

            foreach (MicroserviceReplayListener callback in ReplayListeners.Append(StartListener).Append(EndListener))
            {
                if (callback == null)
                {
                    continue;
                }

                Logger.LogInformation($"Registering replay queue {callback.Queue} with expressions: {string.Join(", ", callback.TopicExpressions)}");

                IMessageReceiver receiver = Context.CreateMessageReceiver(callback.Queue, callback.TopicExpressions);
                receiver.StartReceivingMessages();
                receiver.StartHandlingMessages(callback.Callback);
                ReplayMessageReceivers.Add(receiver);
            }
        }