public void DequeueAndUpdate() { // Get a connection string to our Azure Storage account. string connectionString = ConnectionString; // Get a reference to a queue named "sample-queue" and then create it QueueClient queue = new QueueClient(connectionString, Randomize("sample-queue")); queue.Create(); try { // Add several messages to the queue queue.EnqueueMessage("first"); queue.EnqueueMessage("second"); queue.EnqueueMessage("third"); // Get the messages from the queue with a short visibility timeout List <DequeuedMessage> messages = new List <DequeuedMessage>(); foreach (DequeuedMessage message in queue.DequeueMessages(10, TimeSpan.FromSeconds(1)).Value) { // Tell the service we need a little more time to process the message UpdatedMessage changedMessage = queue.UpdateMessage( message.MessageText, message.MessageId, message.PopReceipt, TimeSpan.FromSeconds(5)); messages.Add(message.Update(changedMessage)); } // Wait until the visibility window times out Thread.Sleep(TimeSpan.FromSeconds(1.5)); // Ensure the messages aren't visible yet Assert.AreEqual(0, queue.DequeueMessages(10).Value.Count()); // Finish processing the messages foreach (DequeuedMessage message in messages) { // Tell the service we need a little more time to process the message queue.DeleteMessage(message.MessageId, message.PopReceipt); } } finally { // Clean up after the test when we're finished queue.Delete(); } }
public void Dequeue() { // Get a connection string to our Azure Storage account. string connectionString = ConnectionString; // Get a reference to a queue named "sample-queue" and then create it QueueClient queue = new QueueClient(connectionString, Randomize("sample-queue")); queue.Create(); try { // Add several messages to the queue queue.EnqueueMessage("first"); queue.EnqueueMessage("second"); queue.EnqueueMessage("third"); queue.EnqueueMessage("fourth"); queue.EnqueueMessage("fifth"); // Get the next 10 messages from the queue List <string> messages = new List <string>(); foreach (DequeuedMessage message in queue.DequeueMessages(maxMessages: 10).Value) { // "Process" the message messages.Add(message.MessageText); // Let the service know we finished with the message and // it can be safely deleted. queue.DeleteMessage(message.MessageId, message.PopReceipt); } // Verify the messages Assert.AreEqual(5, messages.Count); Assert.Contains("first", messages); Assert.Contains("second", messages); Assert.Contains("third", messages); Assert.Contains("fourth", messages); Assert.Contains("fifth", messages); } finally { // Clean up after the test when we're finished queue.Delete(); } }
static void Main(string[] args) { Console.WriteLine("Message reader"); var count = 0; var cert = GetCert("sugarsus-receiver"); var cred = new ClientCertificateCredential(_tenantId, _clientId, cert); var queue = new QueueClient(new Uri(_queueUri), cred); while (true) { try { var resp = queue.DequeueMessages(); foreach (var msg in resp.Value) { if (msg.DequeueCount > 3) { Console.WriteLine("Bad msg. Moving to dead letter queue"); // move the message to somewhere else where you can investigate it } else { Console.WriteLine($"Processing: {msg.MessageText}"); } ++count; queue.DeleteMessage(msg.MessageId, msg.PopReceipt); } } catch (StorageRequestFailedException ex) { Console.WriteLine(""); break; } } Console.WriteLine($"Processed {count} message(s)."); Console.ReadLine(); }