private static async Task ProcessMessages(MessageReceiver receiver, MessageSender senderCleanUp) { ConsoleWindows.Clear(2); ConsoleWindows.WriteLine("Message Receiver", 2); do { var message = await receiver.ReceiveAsync(TimeSpan.FromSeconds(1)); if (message == null) { break; } ConsoleWindows.WriteLine(string.Format("Message Received{0}", message.MessageId), 2); var deferredSequenceNumber = message.SystemProperties.SequenceNumber; await PostInCleanUpQueue(senderCleanUp, deferredSequenceNumber); await receiver.DeferAsync(message.SystemProperties.LockToken); int choice = 1; if (processing_choice != 3) { ConsoleWindows.WriteLine("Processing Options:", 2); ConsoleWindows.WriteLine(" 1: Sucessful Processing \n 2: Simulate Crash \n 3: Random Mode(for all messages) ", 2); ConsoleWindows.WriteLine("Enter choice: ", 2); var input = Console.ReadLine(); Int32.TryParse(input, out choice); if (choice == 3) { processing_choice = 3; } } if (processing_choice == 3) { choice = random.Next(0, 2); } if (choice == 1) { await CleanUpAfterProcessing(receiver, deferredSequenceNumber, 2); } else { ConsoleWindows.WriteLine("Crashed", 2); } } while (true); }
private static async Task CleanUp(MessageReceiver receiverCleanUpQueue, MessageReceiver receiver) { ConsoleWindows.Clear(1); ConsoleWindows.WriteLine("Message Clean up ...", 1); do { var message = await receiverCleanUpQueue.ReceiveAsync(TimeSpan.FromSeconds(1)); if (message != null) { if (long.TryParse(message.MessageId, out long deferredSequenceNumber)) { await CleanUpAfterProcessing(receiver, deferredSequenceNumber, 1); } ConsoleWindows.WriteLine(string.Format("Cleaning up Message: {0}", message.MessageId), 1); await receiverCleanUpQueue.CompleteAsync(message.SystemProperties.LockToken); } else { break; } } while (true); }