public override void Run()
        {
            //grab the value from table Storage
            var storageAccount = CloudStorageAccount.Parse(_storageConnectionString);
            var storageClient = storageAccount.CreateCloudTableClient();
            storageClient.CreateTableIfNotExist("SumOfPrimeNumbers");

            while (!_isStopped)
            {
                try
                {
                    // Receive the message
                    BrokeredMessage receivedMessage = null;
                    receivedMessage = _client.Receive();

                    if (receivedMessage != null)
                    {
                        // Process the message
                        Trace.WriteLine("Processing", receivedMessage.SequenceNumber.ToString());

                        var thePrimeNumberToSum = receivedMessage.GetBody<PrimeAggregateRequest>();

                        //start persistance
                        var persistRequest = new PersistPrimeSum();
                        var sumOfPrimesLatest = persistRequest.GetCurrentSumOrPersistNew(thePrimeNumberToSum.OriginalRequest.StartNumber,
                                                                                      thePrimeNumberToSum.OriginalRequest.EndNumber);
                        sumOfPrimesLatest.Sum = (thePrimeNumberToSum.ThePrimeToAggregate + int.Parse(sumOfPrimesLatest.Sum)).ToString();

                        persistRequest.StoreLatestSum(sumOfPrimesLatest);

                        receivedMessage.Complete();
                    }
                }
                catch (MessagingException e)
                {
                    if (!e.IsTransient)
                    {
                        Trace.WriteLine(e.Message);
                        throw;
                    }

                    Thread.Sleep(10000);
                }
                catch (OperationCanceledException e)
                {
                    if (!_isStopped)
                    {
                        Trace.WriteLine(e.Message);
                        throw;
                    }
                }
            }
        }
        public override void Run()
        {
            Trace.WriteLine("Worker Role Started Running Now");
            while (!_isStopped)
            {
                try
                {
                    // Receive the message
                    BrokeredMessage receivedMessage = null;
                    receivedMessage = _clientToMonitor.Receive();

                    if (receivedMessage != null)
                    {
                        // Process the message
                        Trace.WriteLine("Processing " + receivedMessage.SequenceNumber.ToString());
                        var theRequest = receivedMessage.GetBody<PrimeSumRequest>();
                        Trace.WriteLine("Received request to sum up promes between " + theRequest.StartNumber + " and " + theRequest.EndNumber);

                        //start persistance in table storage for aggregator
                        var persistRequest = new PersistPrimeSum();
                        var sumOfPrimesNew = persistRequest.GetCurrentSumOrPersistNew(theRequest.StartNumber,
                                                                                      theRequest.EndNumber);

                        for (int numberToAssign = theRequest.StartNumber; numberToAssign <= theRequest.EndNumber; numberToAssign++)
                        {
                            var findRequest = new PrimeFindRequest() { OriginalRequest = theRequest, TheNumberToCheck = numberToAssign };
                            _clientToAssign.Send(new BrokeredMessage(findRequest));
                            Trace.WriteLine("Assigned " + numberToAssign + " to be processed by Primer Number Finders");
                        }
                        receivedMessage.Complete();
                    }

                    Trace.WriteLine(">> No message waiting");
                }
                catch (MessagingException e)
                {
                    if (!e.IsTransient)
                    {
                        Debug.WriteLine("Failed during processing with error: " + e.ToString());
                        throw;
                    }

                    Thread.Sleep(5000);
                }
                catch (OperationCanceledException)
                {
                    if (!_isStopped)
                    {
                        Debug.WriteLine("Cancelled during processing");
                        throw;
                    }
                }
            }
        }