/// <summary> /// Removes an item from the queue provided the lock has not timed out /// </summary> /// <param name="queueName"></param> /// <param name="queueModel"></param> /// <returns></returns> public bool DeleteItem(string queueName, Model.Queue.QueueModel queueModel) { if (queueModel.LockExpirationInUTC < DateTime.UtcNow) { AzureQueueHelper azureQueueHelper = new AzureQueueHelper(); azureQueueHelper.DeleteQueueItem(queueName, queueModel.Id, queueModel.PopReceipt); return(true); } else { return(false); } }
/// <summary> /// Grabs an item from the queue locking it for a specified timespan (you need to call DeleteItem to remove /// it from the queue) /// </summary> /// <param name="queueName"></param> /// <param name="timeSpan"></param> /// <returns></returns> public Model.Queue.QueueModel Dequeue(string queueName, TimeSpan timeSpan) { AzureQueueHelper azureQueueHelper = new AzureQueueHelper(); DateTime expirationDate = DateTime.UtcNow.Add(timeSpan); Microsoft.WindowsAzure.Storage.Queue.CloudQueueMessage item = azureQueueHelper.GetQueueItem(queueName.ToLower()); if (item == null) { return(null); } else { Model.Queue.QueueModel queueModel = new Model.Queue.QueueModel(); queueModel.Id = item.Id; queueModel.PopReceipt = item.PopReceipt; queueModel.Item = item.AsString; queueModel.LockExpirationInUTC = expirationDate; return(queueModel); } }
/// <summary> /// Ands an item to the queue /// The queue data should be JSON or other strucuted data. /// When passing a lot of data to a queue, you should place a file in blob storage instead /// </summary> /// <param name="queueName"></param> /// <param name="queueData"></param> public void Enqueue(string queueName, string queueData) { AzureQueueHelper azureQueueHelper = new AzureQueueHelper(); azureQueueHelper.PutQueueItem(queueName.ToLower(), queueData); }