コード例 #1
0
        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);
        }
コード例 #2
0
        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"));
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        /// <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);
        }