/// <summary> /// Abandons a message by returning it to the queue. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="message">The message we want to abandon.</param> /// <param name="propertiesToModify">The message properties to modify on abandon.</param> /// <returns>The async <see cref="T:System.Threading.Tasks.Task" /> wrapper.</returns> public async Task Abandon <T>(T message, KeyValuePair <string, object>[] propertiesToModify) where T : class { var msg = (MessageEntity <T>)Messages[message]; await ReceiverQueue.UpdateMessageAsync(msg.OriginalMessage, TimeSpan.FromSeconds(10), MessageUpdateFields.Content | MessageUpdateFields.Visibility); Messages.TryRemove(message, out _); }
/// <summary> /// Completes the specified message. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="message">The message.</param> /// <returns>Task.</returns> /// <inheritdoc /> public async Task Complete <T>(T message) where T : class { var sourceMessage = (MessageEntity <T>)Messages[message]; await ReceiverQueue.DeleteMessageAsync(sourceMessage.OriginalMessage); Messages.TryRemove(message, out _); }
/// <summary> /// Abandons the specified message. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="message">The message.</param> /// <returns>Task.</returns> public async Task Abandon <T>(T message) where T : class { var msg = (MessageEntity <T>)Messages[message]; await ReceiverQueue.UpdateMessageAsync(msg.OriginalMessage, TimeSpan.FromSeconds(10), MessageUpdateFields.Content | MessageUpdateFields.Visibility); Messages.TryRemove(message, out _); }
/// <summary> /// Get a signed access url using supplied permissions and expiry /// </summary> /// <param name="signedAccessConfig">Config object with required access permissions and expiry</param> /// <returns></returns> public string GetSignedAccessUrl(ISignedAccessConfig signedAccessConfig) { var queuePolicyPermissions = GetAzureAccessQueuePolicyPermissions(signedAccessConfig.AccessPermissions); var accessPolicy = new SharedAccessQueuePolicy { Permissions = queuePolicyPermissions, SharedAccessExpiryTime = signedAccessConfig.AccessExpiry }; var queueSignature = ReceiverQueue.GetSharedAccessSignature(accessPolicy); var queueAccessUrl = ReceiverQueue.Uri + queueSignature; return(queueAccessUrl); }
private async Task <IEnumerable <MessageEntity <T> > > GetMessages <T>(int batchSize = 10) where T : class { var messages = (await ReceiverQueue.GetMessagesAsync(batchSize)).ToList(); var msgItems = new List <MessageEntity <T> >(); if (messages.Count > 0) { foreach (var message in messages) { var result = GetMessageBody <T>(message); if (!Messages.ContainsKey(result.Body)) { Messages[result.Body] = result; msgItems.Add(result); } } } return(msgItems); }