private SendMessageResponseModel <T> ConstructSendResponseModel <T>(List <SendMessageBatchRequestEntry> sendMessageBatchRequestEntries, SendMessageBatchResponse sendMessageBatchResponse) { SendMessageResponseModel <T> sendMessageBatchResponseModel = new SendMessageResponseModel <T>(); sendMessageBatchResponseModel.SendMessagesSuccessfully .AddRange(sendMessageBatchRequestEntries.Where(entry => sendMessageBatchResponse.Successful .Select(re => re.Id).Contains(entry.Id)).Select(entry => JsonConvert.DeserializeObject <T>(entry.MessageBody))); sendMessageBatchResponseModel.UnprocessedMessages .AddRange(sendMessageBatchRequestEntries.Where(entry => sendMessageBatchResponse.Failed .Select(re => re.Id).Contains(entry.Id)).Select(entry => JsonConvert.DeserializeObject <T>(entry.MessageBody))); return(sendMessageBatchResponseModel); }
public IActionResult SendMessage([FromBody] SendMessageResponseModel responseModel) { //MessageDTO message = new MessageDTO //{ // Date = model.Date, // Port = model.PortId, // ReceiverId = model.StudentId, // Type = model.TypeId //}; //_mailingClient.PostMessage(message); return(RedirectToAction("Index", "Home")); }
public SendMessageResponseModel <T> Save(IEnumerable <T> messages) { List <SendMessageBatchRequestEntry> sendMessageBatchRequestEntries = new List <SendMessageBatchRequestEntry>(); int i = 0; foreach (T message in messages) { i++; SendMessageBatchRequestEntry sendMessageBatchRequestEntry = new SendMessageBatchRequestEntry(i.ToString(), JsonConvert.SerializeObject(message)); sendMessageBatchRequestEntries.Add(sendMessageBatchRequestEntry); } SendMessageBatchRequest sendMessageBatchRequest = new SendMessageBatchRequest(this.queueUrl, sendMessageBatchRequestEntries); SendMessageBatchResponse sendMessageBatchResponse = this.sqsClient.SendMessageBatch(sendMessageBatchRequest); SendMessageResponseModel <T> sendMessageBatchResponseModel = ConstructSendResponseModel <T>(sendMessageBatchRequestEntries, sendMessageBatchResponse); return(sendMessageBatchResponseModel); }
/// <summary> /// Saves the messages of type T to the current SQS queue in batches of ten. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="messages"></param> /// <returns></returns> public SendMessageResponseModel <T> SaveMessages(IEnumerable <T> messages) { IEnumerable <T> messagesBatch = new List <T>(10); SendMessageResponseModel <T> globalBatchResponse = new SendMessageResponseModel <T>(); int skipNumber = 0; int batchSize = 10; do { messagesBatch = messages.Skip(skipNumber).Take(batchSize); SendMessageResponseModel <T> response = this.unitOfWork.Save(messagesBatch); globalBatchResponse.SendMessagesSuccessfully.AddRange(response.SendMessagesSuccessfully); globalBatchResponse.UnprocessedMessages.AddRange(response.UnprocessedMessages); skipNumber += batchSize; }while(skipNumber < messages.Count()); return(globalBatchResponse); }