// TODO: Attributes internal SqsRequest ToParams() { var parameters = new SqsRequest { { "Action", "SendMessage" }, { "MessageBody", MessageBody } }; // Defaults to the queue visibility timeout if (Delay != null) { parameters.Add("DelaySeconds", (int)Delay.Value.TotalSeconds); } if (MessageDeduplicationId != null) { parameters.Add("MessageDeduplicationId", MessageDeduplicationId); } if (MessageGroupId != null) { parameters.Add("MessageGroupId", MessageGroupId); } return(parameters); }
public async Task <CreateQueueResult> CreateQueueAsync(string queueName, int defaultVisibilityTimeout = 30) { #region Preconditions if (queueName == null) { throw new ArgumentNullException(nameof(queueName)); } #endregion var parameters = new SqsRequest { { "Action", "CreateQueue" }, { "QueueName", queueName }, { "DefaultVisibilityTimeout", defaultVisibilityTimeout } /* in seconds */ }; var httpRequest = new HttpRequestMessage(HttpMethod.Post, Endpoint) { Content = GetPostContent(parameters) }; var responseText = await SendAsync(httpRequest).ConfigureAwait(false); return(CreateQueueResult.Parse(responseText)); }
internal SqsRequest ToParams() { var parameters = new SqsRequest { { "Action", "ChangeMessageVisibility" }, { "ReceiptHandle", ReceiptHandle }, { "VisibilityTimeout", (int)VisibilityTimeout.TotalSeconds } }; return parameters; }
public async Task <string> DeleteMessageAsync(Uri queueUrl, string recieptHandle) { var parameters = new SqsRequest { { "Action", "DeleteMessage" }, { "ReceiptHandle", recieptHandle } }; var httpRequest = new HttpRequestMessage(HttpMethod.Post, queueUrl) { Content = GetPostContent(parameters) }; return(await SendAsync(httpRequest).ConfigureAwait(false)); }
internal SqsRequest GetParameters() { var parameters = new SqsRequest { { "Action", "SendMessage" }, { "MessageBody", MessageBody } }; // Defaults to the queue visibility timeout if (Delay != null) { parameters.Add("DelaySeconds", (int)Delay.Value.TotalSeconds); } if (MessageDeduplicationId != null) { parameters.Add("MessageDeduplicationId", MessageDeduplicationId); } if (MessageGroupId != null) { parameters.Add("MessageGroupId", MessageGroupId); } if (MessageAttributes != null) { for (int i = 0; i < MessageAttributes.Length; i++) { ref MessageAttribute attr = ref MessageAttributes[i]; string prefix = "MessageAttribute." + (i + 1).ToString() + "."; parameters.Add(prefix + "Name", attr.Name); if (attr.Value.DataType == MessageAttributeDataType.Binary) { parameters.Add(prefix + "Value.BinaryValue", attr.Value.Value); } else { parameters.Add(prefix + "Value.StringValue", attr.Value.Value); } parameters.Add(prefix + "Value.DataType", attr.Value.DataType.ToString()); } }
public async Task <DeleteMessageBatchResultEntry[]> DeleteMessageBatchAsync(Uri queueUrl, string[] recieptHandles) { #region Preconditions if (recieptHandles == null) { throw new ArgumentNullException(nameof(recieptHandles)); } if (recieptHandles.Length > 10) { throw new ArgumentException("Must contain 10 or fewer items.", nameof(recieptHandles)); } // Max payload = 64KB (65,536 bytes) #endregion var parameters = new SqsRequest { { "Action", "DeleteMessageBatch" } }; for (int i = 0; i < recieptHandles.Length; i++) { var handle = recieptHandles[i]; var prefix = "DeleteMessageBatchRequestEntry." + (i + 1) + "."; parameters.Add(prefix + "Id", i); // DeleteMessageBatchRequestEntry.n.Id parameters.Add(prefix + "ReceiptHandle", handle); // DeleteMessageBatchRequestEntry.n.ReceiptHandle Required } var httpRequest = new HttpRequestMessage(HttpMethod.Post, queueUrl) { Content = GetPostContent(parameters) }; var responseText = await SendAsync(httpRequest).ConfigureAwait(false); // Because the batch request can result in a combination of successful and unsuccessful actions, // you should check for batch errors even when the call returns an HTTP status code of 200. return(DeleteMessageBatchResponse.Parse(responseText).DeleteMessageBatchResult.Items); }
/* * public Task DeleteQueue(string queueName) * { * throw new NotImplementedException(); * } */ public async Task <List <SendMessageBatchResultEntry> > SendMessageBatchAsync(Uri queueUrl, string[] messages) { #region Preconditions if (messages == null) { throw new ArgumentNullException(nameof(messages)); } if (messages.Length > 10) { throw new ArgumentException("Must be 10 or fewer.", nameof(messages)); } // Max payload = 256KB (262,144 bytes) #endregion var parameters = new SqsRequest { { "Action", "SendMessageBatch" } }; for (int i = 0; i < messages.Length; i++) { var message = messages[i]; var prefix = "SendMessageBatchRequestEntry." + (i + 1) + "."; parameters.Add(prefix + "Id", i); // .Id Required parameters.Add(prefix + "MessageBody", message); // .MessageBody Required // .DelaySeconds Optional, Max 900(15min) } var httpRequest = new HttpRequestMessage(HttpMethod.Post, queueUrl) { Content = GetPostContent(parameters) }; var responseText = await SendAsync(httpRequest).ConfigureAwait(false); return(SendMessageBatchResult.Parse(responseText)); }
public SqsRequest ToParams() { var parameters = new SqsRequest { { "Action", "ReceiveMessage" }, { "MaxNumberOfMessages", take }, }; if (lockTime != null) // Defaults to the queue visibility timeout { parameters.Add("VisibilityTimeout", (int)lockTime.Value.TotalSeconds); } // Default: The ReceiveMessageWaitTimeSeconds of the queue. if (waitTime != null) { parameters.Add("WaitTimeSeconds", (int)waitTime.Value.TotalSeconds); } return(parameters); }
internal SqsRequest ToParams() { var parameters = new SqsRequest { { "Action", "ReceiveMessage" } }; if (take > 1) // default is 1 { parameters.Add("MaxNumberOfMessages", take); } if (AttributeNames != null) { for (int i = 0; i < AttributeNames.Length; i++) { parameters.Add("AttributeName." + (i + 1), AttributeNames[i]); } } if (MessageAttributeNames != null) { for (int i = 0; i < MessageAttributeNames.Length; i++) { parameters.Add("MessageAttributeName." + (i + 1), MessageAttributeNames[i]); } } if (lockTime != null) // Defaults to the queue visibility timeout { parameters.Add("VisibilityTimeout", (int)lockTime.Value.TotalSeconds); } if (waitTime != null) // Defaults to queue default { parameters.Add("WaitTimeSeconds", (int)waitTime.Value.TotalSeconds); } return(parameters); }
private static FormUrlEncodedContent GetPostContent(SqsRequest request) { request.Add("Version", Version); return(new FormUrlEncodedContent(request.Parameters)); }