Ejemplo n.º 1
0
        private static Task PushMessage(ISenderClient client, DeadLetterQueueMessage model)
        {
            var eventName = model.EventName;
            var body      = Encoding.UTF8.GetBytes(model.JsonResponse);

            var message = new Message
            {
                MessageId = model.Id,
                Body      = body,
                Label     = eventName
            };

            return(client.SendAsync(message));
        }
Ejemplo n.º 2
0
        private async Task <List <DeadLetterQueueMessage> > GetMessages(string entityPath)
        {
            var dlqMessages = new List <DeadLetterQueueMessage>();
            var client      = new MessageReceiver(_serviceBusPersisterConnection.ServiceBusConnectionString, entityPath);

            var queueStillHasMessages = true;

            while (queueStillHasMessages)
            {
                var tokens = new List <string>(MaxMessageCount);

                var messages = await client.ReceiveAsync(MaxMessageCount);

                if (messages == null || !messages.Any())
                {
                    queueStillHasMessages = false;
                    continue;
                }

                foreach (var msg in messages)
                {
                    using (var reader = new StreamReader(msg.GetBody <Stream>(), Encoding.UTF8))
                    {
                        var deadLetterQueueMessage = new DeadLetterQueueMessage
                        {
                            Id           = msg.MessageId,
                            Created      = msg.ScheduledEnqueueTimeUtc,
                            EventName    = msg.Label,
                            JsonResponse = await reader.ReadToEndAsync()
                        };
                        dlqMessages.Add(deadLetterQueueMessage);
                    }

                    tokens.Add(msg.SystemProperties.LockToken);
                }
                await client.CompleteAsync(tokens);
            }
            return(dlqMessages);
        }
Ejemplo n.º 3
0
 public Task RepublishQueueMessage(DeadLetterQueueMessage model)
 {
     return(PushMessage(_serviceBusPersisterConnection.QueueConnection.QueueClient, model));
 }