static void Main(string[] args) { var namespaceManager = NamespaceManager.CreateFromConnectionString(CloudConfigurationManager.GetSetting("Microsoft.ServiceBus.ConnectionString")); var queues = CloudConfigurationManager.GetSetting("queues").Split(','); var intervalInMinutes = Convert.ToInt32(CloudConfigurationManager.GetSetting("pulse")); var pulseList = new List<ServiceBusQueuePulse>(); var tasks = new List<Task>(); queues.ToList().ForEach(queuename => { tasks.Add(Task.Run(() => { ServiceBusQueuePulse previosPulse = null; while (true) { var queue = namespaceManager.GetQueue(queuename); var messageCountDetails = queue.MessageCountDetails; var activeMessageCount = messageCountDetails.ActiveMessageCount; var deadLetterMesageCountr = messageCountDetails.DeadLetterMessageCount; var newPulse = new ServiceBusQueuePulse { LastAccessedAt = queue.AccessedAt, ActiveMessageCount = messageCountDetails.ActiveMessageCount, DeadLetterCount = messageCountDetails.DeadLetterMessageCount }; if (previosPulse != null) { var serviceBusPulseReport = new ServiceBusQueuePulseReport { IsLastAccessedAtFailed = previosPulse.LastAccessedAt == newPulse.LastAccessedAt, IsActiveMessageCountIncreased = previosPulse.ActiveMessageCount <= newPulse.ActiveMessageCount, IsDeadLetterCountIncreased = previosPulse.DeadLetterCount < newPulse.DeadLetterCount }; Console.WriteLine(JsonConvert.SerializeObject(newPulse)); if (serviceBusPulseReport.IsLastAccessedAtFailed || serviceBusPulseReport.IsActiveMessageCountIncreased || serviceBusPulseReport.IsDeadLetterCountIncreased) { var message = JsonConvert.SerializeObject(serviceBusPulseReport); Console.WriteLine(message); SendAlert(message, queuename); } } previosPulse = newPulse; Thread.Sleep(TimeSpan.FromMinutes(intervalInMinutes)); } })); }); Task.WaitAll(tasks.ToArray()); }
static void Main(string[] args) { var namespaceManager = NamespaceManager.CreateFromConnectionString(CloudConfigurationManager.GetSetting("Microsoft.ServiceBus.ConnectionString")); var queues = CloudConfigurationManager.GetSetting("queues").Split(','); var intervalInMinutes = Convert.ToInt32(CloudConfigurationManager.GetSetting("pulse")); var pulseList = new List <ServiceBusQueuePulse>(); var tasks = new List <Task>(); queues.ToList().ForEach(queuename => { tasks.Add(Task.Run(() => { ServiceBusQueuePulse previosPulse = null; while (true) { var queue = namespaceManager.GetQueue(queuename); var messageCountDetails = queue.MessageCountDetails; var activeMessageCount = messageCountDetails.ActiveMessageCount; var deadLetterMesageCountr = messageCountDetails.DeadLetterMessageCount; var newPulse = new ServiceBusQueuePulse { LastAccessedAt = queue.AccessedAt, ActiveMessageCount = messageCountDetails.ActiveMessageCount, DeadLetterCount = messageCountDetails.DeadLetterMessageCount }; if (previosPulse != null) { var serviceBusPulseReport = new ServiceBusQueuePulseReport { IsLastAccessedAtFailed = previosPulse.LastAccessedAt == newPulse.LastAccessedAt, IsActiveMessageCountIncreased = previosPulse.ActiveMessageCount <= newPulse.ActiveMessageCount, IsDeadLetterCountIncreased = previosPulse.DeadLetterCount < newPulse.DeadLetterCount }; Console.WriteLine(JsonConvert.SerializeObject(newPulse)); if (serviceBusPulseReport.IsLastAccessedAtFailed || serviceBusPulseReport.IsActiveMessageCountIncreased || serviceBusPulseReport.IsDeadLetterCountIncreased) { var message = JsonConvert.SerializeObject(serviceBusPulseReport); Console.WriteLine(message); SendAlert(message, queuename); } } previosPulse = newPulse; Thread.Sleep(TimeSpan.FromMinutes(intervalInMinutes)); } })); }); Task.WaitAll(tasks.ToArray()); }