/// <summary>
        /// Initialises an instance of the publisher.
        /// </summary>
        /// <param name="connection">
        /// The AMQP connection to use.
        /// </param>
        /// <param name="topicName">
        /// The topic name to publish to.
        /// </param>
        /// <param name="name">
        /// The unique name to associate with the link used to receive messages on.
        /// </param>
        /// <param name="handler">
        /// Processes incoming messages from the AMQP server.
        /// </param>
        public AmqpMessageSubscriber(ILogger logger, AmqpConnection connection, string topicName, string name, IMessageHandler handler, int windowSize = 20)
        {
            connection.ShouldNotBeNull();
            topicName.ShouldNotBeEmpty();
            handler.ShouldNotBeNull();
            name.ShouldNotBeEmpty();
            logger.ShouldNotBeNull();

            m_Logger = logger;
            m_Connection = connection;
            m_ConnectionId = string.Empty;
            m_TopicName = topicName;
            m_MessageHandler = handler;
            m_WindowSize = windowSize;
            m_Name = name;
        }