Ejemplo n.º 1
0
        /// <summary>
        /// Stores a new job request
        /// </summary>
        /// <param name="jobRequestModel">Job request to store</param>
        /// <param name="logger">Logger to log data</param>
        /// <returns></returns>
        public async Task <JobRequestModel> CreateAsync(JobRequestModel jobRequestModel, ILogger logger)
        {
            var message = JsonConvert.SerializeObject(jobRequestModel, this.settings);

            // Encode message to Base64 before sending to the queue
            await this.queue.SendMessageAsync(QueueServiceHelper.EncodeToBase64(message)).ConfigureAwait(false);

            logger.LogInformation($"JobRequestStorageService::CreateAsync successfully added request to the queue: jobRequestModel={LogHelper.FormatObjectForLog(jobRequestModel)}");
            return(jobRequestModel);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Stores provisioning completed event.
        /// </summary>
        /// <param name="provisioningCompletedEventModel">Event to store</param>
        /// <param name="logger">Logger to log data</param>
        /// <returns>Stored provisioning completed event</returns>
        public async Task <ProvisioningCompletedEventModel> CreateAsync(ProvisioningCompletedEventModel provisioningCompletedEventModel, ILogger logger)
        {
            var message = JsonConvert.SerializeObject(provisioningCompletedEventModel);

            // Encode message to Base64 before sending to the queue
            await this.queue.SendMessageAsync(QueueServiceHelper.EncodeToBase64(message)).ConfigureAwait(false);

            logger.LogInformation($"ProvisioningCompletedEventStorageService::CreateAsync successfully added request to the queue: provisioningCompletedEventModel={LogHelper.FormatObjectForLog(provisioningCompletedEventModel)}");

            return(provisioningCompletedEventModel);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Gets next available job request.
        /// </summary>
        /// <param name="logger">Logger to log data</param>
        /// <returns>Job request from the storage</returns>
        public async Task <JobRequestModel> GetNextAsync(ILogger logger)
        {
            var messages = await this.queue.ReceiveMessagesAsync(maxMessages : 1).ConfigureAwait(false);

            var message = messages.Value.FirstOrDefault();

            if (message != null)
            {
                // All message are encoded base64 on Azure Queue, decode first
                var decodedMessage  = QueueServiceHelper.DecodeFromBase64(message.MessageText);
                var jobRequestModel = JsonConvert.DeserializeObject <JobRequestModel>(decodedMessage, this.settings);
                // delete message from the queue
                await this.queue.DeleteMessageAsync(message.MessageId, message.PopReceipt).ConfigureAwait(false);

                logger.LogInformation($"JobRequestStorageService::GetNextAsync request successfully dequeued from the queue: jobRequestModel={LogHelper.FormatObjectForLog(jobRequestModel)}");
                return(jobRequestModel);
            }

            return(null);
        }