/// <summary> /// PutOnQueue: Sends in batch all jobs, returns list of all job.id confirmed /// </summary> /// <param name="jobs"></param> /// <returns></returns> public List <Guid> PutOnQueue(SubmitJobMessage[] jobs) { int i = 0; var entries = new List <SendMessageBatchRequestEntry>(); var d = new Dictionary <String, SubmitJobMessage>(); for (i = 0; i < jobs.Count(); i++) { var job = jobs[i]; var entry = new SendMessageBatchRequestEntry() .WithId(Guid.NewGuid().ToString()) .WithMessageBody(JsonConvert.SerializeObject(job)); d.Add(entry.Id, job); } var l = new List <Guid>(); if (entries.Count == 0) { return(l); } var sendResponse = queue.SendMessageBatch(new SendMessageBatchRequest() .WithEntries(entries.ToArray <SendMessageBatchRequestEntry>()) .WithQueueUrl(submitQueueUrl)); if (sendResponse.IsSetSendMessageBatchResult() == false) { Debug.WriteLine("SendResponse missing result", GetType().Name + ".PutOnQueue"); throw new Exception("SendResponse missing result"); } if (sendResponse.SendMessageBatchResult.IsSetSendMessageBatchResultEntry()) { foreach (var e in sendResponse.SendMessageBatchResult.BatchResultErrorEntry) { var job = d[e.Id]; l.Add(job.Id); } } if (sendResponse.SendMessageBatchResult.IsSetBatchResultErrorEntry()) { Debug.WriteLine("SendResponse received error entry", GetType().Name + ".PutOnQueue"); foreach (var b in sendResponse.SendMessageBatchResult.BatchResultErrorEntry) { var job = d[b.Id]; string s = String.Format("BatchResultErrorEntry (Job ID {0}): {1} {2} {3} {4}", job.Id, b.Id, b.Code, b.SenderFault, b.Message); Debug.WriteLine(s, GetType().Name + ".PutOnQueue"); } } return(l); }