Exemple #1
0
        /// <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);
        }