/// <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);
            }
        }
        /// <summary>
        /// Stop replay listeners
        /// </summary>
        public void StopReplay()
        {
            if (!IsReplaying)
            {
                throw new BusConfigurationException("Attempted to stop replaying the MicroserviceHost, but it is not replaying.");
            }

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

            IsReplaying = false;

            using IModel model = Context.Connection.CreateModel();

            foreach (MicroserviceReplayListener microserviceReplayListener in ReplayListeners)
            {
                model.QueueDelete(microserviceReplayListener.Queue);
            }

            ReplayMessageReceivers.ForEach(e => e.Dispose());
        }