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());
        }
Exemple #2
0
        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());
        }