/// <summary> /// Show the messages in a queue /// </summary> /// <param name="queueName">queue name</param> /// <param name="sbq">service bus queue</param> /// <returns>show messages task</returns> public async Task ShowMessages(string queueName, ServiceBusQueue sbq) { Console.WriteLine($"Messages in {queueName} queue:"); int messageCount = (int)await sbq.MessageCount(); Console.WriteLine($"Number of queued messages = {messageCount}"); var msgList = await sbq.PeekBatchAsync(messageCount); var remaining = messageCount - msgList.Count; // Because our queues are partitioned, peek will not see all messages // on the first attempt. So we call peek repeatedly until all messages are seen. while (remaining > 0) { var newMsgList = await sbq.PeekBatchAsync(remaining); if (newMsgList.Count == 0) { break; } remaining -= newMsgList.Count; foreach (var msg in newMsgList) { msgList.Add(msg); } } foreach (var msg in msgList) { Console.WriteLine($"Queue message: enqueued time = {msg.EnqueuedTime}, dequeue count = {msg.DequeueCount}"); this.ShowMessageContents(msg); } }
/// <summary> /// Show the message stats for a queue /// </summary> /// <param name="queueName">queue name</param> /// <param name="sbq">service bus queue</param> /// <returns>queue stats task</returns> public async Task QueueStats(string queueName, ServiceBusQueue sbq) { var messageCount = await sbq.MessageCount(); var deadLetterMessageCount = await sbq.DeadLetterMessageCount(); Console.WriteLine($"Number of messages in {queueName} queue: Active = {messageCount}, DeadLetter = {deadLetterMessageCount}"); }