public MessageList PopMessages(string queueName, int maxMessages = 1)
        {
            if (maxMessages <= 0 || maxMessages > Queue.MaxMessagesPerPop) {
                throw new ArgumentOutOfRangeException("maxMessages");
            }

            MessageList messages = new MessageList();

            MessagingRequest request = new MessagingRequest("queues/{queueName}/messages", Method.GET);
            request.AddUrlSegment("queueName", queueName);
            request.AddParameter("batch", maxMessages, ParameterType.GetOrPost);
            request.HttpStatusSuccessCodes.Add(200);
            request.HttpStatusExceptionMap.Add(404, typeof(QueueNotFoundException));

            MessageListResponse response = client.Execute<MessageListResponse>(request);

            response.items.ForEach(delegate(MessageResponse tmpMessage)
            {
                Message message = new Message();
                message.ID = tmpMessage.id;
                message.Body = tmpMessage.body;
                message.SetInitialEntryTime(tmpMessage.initial_entry_time);
                message.VisibilityDelay = tmpMessage.visibility_delay;
                message.VisibilityInterval = tmpMessage.visibility_interval;

                if (tmpMessage.fields != null) {
                    message.Fields = new FieldList(tmpMessage.fields);
                }

                messages.Add(message);
            });

            return messages;
        }
        public MessageList PublishToTopic(string topicName, MessageList messages)
        {
            MessageList responses = new MessageList();
            foreach (Message tmpMessage in messages) {
                responses.Add(PublishToTopic(topicName, tmpMessage));
            }

            return responses;
        }
        public MessageList PublishToQueue(string queueName, MessageList messages)
        {
            MessageList responses = new MessageList();
            foreach (Message tmpMessage in messages) {
                responses.Add(PublishToQueue(queueName, tmpMessage));
            }

            return responses;
        }
 public MessageList PublishToTopic(Topic topic, MessageList messages)
 {
     return PublishToTopic(topic.Name, messages);
 }
 public MessageList PublishToQueue(Queue queue, MessageList messages)
 {
     return PublishToQueue(queue.Name, messages);
 }