Example #1
0
        /// <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 _);
        }
Example #2
0
        /// <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 _);
        }
Example #3
0
        /// <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 _);
        }
Example #4
0
        /// <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);
        }
Example #5
0
        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);
        }