/// <summary>
        /// Sends a collection of new messages to an existing queue
        /// </summary>
        /// <param name="messages">The messages.</param>
        /// <returns></returns>
        public IQueueOutputMessages Send(List <QueueMessage <IMessage, IAdditionalMessageData> > messages)
        {
            IQueueOutputMessages result = null;

            if (_policy == null)
            {
                _policies.Registry.TryGet(_policies.Definition.SendMessage, out _policy);
            }

            if (_policy != null)
            {
                _policy.Execute(() => result = _handler.Send(messages));
            }
            else //no policy found
            {
                result = _handler.Send(messages);
            }
            return(result);
        }
        /// <summary>
        /// Sends a collection of new messages to an existing queue
        /// </summary>
        /// <param name="messages">The messages.</param>
        /// <returns></returns>
        public async Task <IQueueOutputMessages> SendAsync(List <QueueMessage <IMessage, IAdditionalMessageData> > messages)
        {
            IQueueOutputMessages result = null;

            if (_policyAsync == null)
            {
                _policies.Registry.TryGet(_policies.Definition.SendMessageAsync, out _policyAsync);
            }

            if (_policyAsync != null)
            {
                await _policyAsync.ExecuteAsync(async() => result = await _handler.SendAsync(messages).ConfigureAwait(false)).ConfigureAwait(false);
            }
            else //no policy found
            {
                result = await _handler.SendAsync(messages).ConfigureAwait(false);
            }

            return(result);
        }