Exemplo n.º 1
0
        public static async Task <string> Run([ActivityTrigger] StorageQueueJobProperties sqJobProperties, TraceWriter log)
        {
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(sqJobProperties.ConnectionString);
            CloudQueueClient    queueClient    = storageAccount.CreateCloudQueueClient();
            CloudQueue          queue          = queueClient.GetQueueReference(sqJobProperties.Queue);
            await queue.CreateIfNotExistsAsync();

            int secondsPerBatch           = Convert.ToInt16(Environment.GetEnvironmentVariable("secondsPerBatch"));
            int messagesInBatch           = sqJobProperties.Frequency * secondsPerBatch;
            IEnumerable <string> messages = Messages.CreateMessages(messagesInBatch, sqJobProperties.MessageScheme);

            try
            {
                foreach (string message in messages)
                {
                    await queue.AddMessageAsync(new CloudQueueMessage(message));
                }
                //var sbMessages = (List<CloudQueueMessage>) messages.Select(m => new CloudQueueMessage(m));
            }
            catch (Exception exception)
            {
                log.Info($"Exception: {exception.Message}");
            }

            log.Info($"sent batch of {messages.Count()} messages");
            return($"finished sending {messages.Count()} to {sqJobProperties.Queue}!");
        }
        public static async Task <string> Run([ActivityTrigger] StorageQueueJobProperties sqJobProperties, TraceWriter log)
        {
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(sqJobProperties.ConnectionString);
            CloudQueueClient    queueClient    = storageAccount.CreateCloudQueueClient();
            CloudQueue          queue          = queueClient.GetQueueReference(sqJobProperties.Queue);
            await queue.CreateIfNotExistsAsync();

            int numOfMessages = sqJobProperties.Frequency * 60 * sqJobProperties.Duration;

            string[] messages = (string[])Messages.CreateMessages(numOfMessages, sqJobProperties.MessageScheme);

            for (var i = 0; i < numOfMessages; i++)
            {
                try
                {
                    var message = messages[i];
                    log.Info($"Sending message: {message}");
                    CloudQueueMessage cloudQueueMessage = new CloudQueueMessage(message);
                    await queue.AddMessageAsync(cloudQueueMessage);
                }
                catch (Exception exception)
                {
                    log.Info($"Exception: {exception.Message}");
                }
                await Task.Delay(1000 / sqJobProperties.Frequency);
            }

            log.Info($"finished.");
            return($"finished sending {numOfMessages} to {sqJobProperties.Queue}!");
        }