public static async Task RunAsync([QueueTrigger("pitstopqueue", Connection = "Storage")] string myQueueItem, ILogger log, ExecutionContext context) { log.LogInformation($"Resizing pitstop image: {myQueueItem}"); QueueParam item = QueueParam.FromJson(myQueueItem); var config = new ConfigurationBuilder() .SetBasePath(context.FunctionAppDirectory) .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true) .AddEnvironmentVariables() .Build(); var storage = config["Storage"]; var containerName = "photos"; var tablename = "pitstop"; CloudBlobContainer container = GetBlobReference(storage, containerName); CloudTable tablePitstop = GetTableReference(storage, tablename); // Resizing the image and naming the images string smallImageName = await StoreSmallImage(item.PictureUri, container); // method below string mediumStorageImageName = await StoreMediumImage(item.PictureUri, container); // method below string originalStorageImageName = await ReplaceLargeStoreImageAsync(item.PictureUri, container); // method below // Updating the trip object in the db await UpdateDocumentTableWithUriAsync(item, smallImageName, mediumStorageImageName, originalStorageImageName, tablePitstop); log.LogInformation($"The image resized and saved. Small image name: {smallImageName}, medium image name: {mediumStorageImageName}, large image name: {originalStorageImageName}"); }
public void ReceiveCommand <T>(Func <Action <T?> > resolve, ushort prefetchCount = DefaultPrefetchCount) { var queueParam = new QueueParam { Queue = GetTypeName(typeof(T)) }; var channel = GetReceiverChannel(null, queueParam, prefetchCount); ConsumeEvent(channel, resolve, queueParam.Queue); }
public async Task ReceiveCommandAsync <T>(Func <Action <T?> > resolve, ushort prefetchCount = DefaultPrefetchCount) { var queueParam = new QueueParam { Queue = GetTypeName(typeof(T)) }; var channel = GetReceiverAsyncChannel(null, queueParam, prefetchCount); await ConsumeEventAsync(channel, resolve, queueParam.Queue); }
private async Task AddQueueItem(QueueParam queueParam) { CloudQueueMessage message = new CloudQueueMessage(queueParam.ToJson()); await _messageQueue.AddMessageAsync(message); //catch (Exception exe) //{ // System.Diagnostics.Trace.WriteLine(exe.StackTrace); //} }
public void SubscribeMessage <T>(string exchange, string queue, Func <Func <T?, Task> > resolve, ushort prefetchCount = DefaultPrefetchCount) { var exchangeParam = new ExchangeParam { Exchange = exchange, Durable = false }; var queueParam = new QueueParam { Queue = queue, Durable = false }; var channel = GetReceiverChannel(exchangeParam, queueParam, prefetchCount); ConsumeEvent(channel, resolve, queueParam.Queue); }
public void SubscribeEvent <T>(string exchange, string queue, Func <Action <T?> > resolve, ushort prefetchCount = DefaultPrefetchCount) { var exchangeParam = new ExchangeParam { Exchange = exchange }; var queueParam = new QueueParam { Queue = queue }; var channel = GetReceiverChannel(exchangeParam, queueParam, prefetchCount); ConsumeEvent(channel, resolve, queueParam.Queue); }
public async Task SubscribeMessageAsync <T>(string exchange, string queue, Func <Action <T?> > resolve, ushort prefetchCount = DefaultPrefetchCount) { var exchangeParam = new ExchangeParam { Exchange = exchange, Durable = false }; var queueParam = new QueueParam { Queue = queue, Durable = false }; var channel = GetReceiverAsyncChannel(exchangeParam, queueParam, prefetchCount); await ConsumeMessageAsync(channel, resolve, queueParam.Queue); }
public async Task SubscribeEventAsync <T>(string exchange, string queue, Func <Func <T?, Task> > resolve, ushort prefetchCount = DefaultPrefetchCount) { var exchangeParam = new ExchangeParam { Exchange = exchange }; var queueParam = new QueueParam { Queue = queue }; var channel = GetReceiverAsyncChannel(exchangeParam, queueParam, prefetchCount); await ConsumeEventAsync(channel, resolve, queueParam.Queue); }
public void InvalidInjectionPutQueueTest(QueueParam param, Enums.InvalidInjection invalid) { var request = new Dictionary <string, object> { [QueueParam.Id.ToString().ToLower()] = $"{PreparedQueueId.Data[ValidQueueTask.Export]}", [QueueParam.Status.ToString().ToLower()] = ValidStatus.Interrupted.GetEnumStringValue(), }; request[param.GetEnumStringValue()] = InvalidInjectionInputData.InjectionInputMapper[invalid]; var defaultManager = new DefaultManager(); var response = defaultManager.Send <object>(QueueTestCaseData.QueueEndpoint, request.ToJson(), HttpMethod.PUT); PrAssert.That(response, PrIs.ErrorResponse().And.HttpCode(System.Net.HttpStatusCode.BadRequest)); }
public void ListenMessage <T>(Func <Func <T?, Task> > resolve, ushort prefetchCount = DefaultPrefetchCount) { var exchangeName = GetTypeName(typeof(T)); var queueName = $"{GetQueueName(resolve)}[{Guid.NewGuid()}]"; var exchangeParam = new ExchangeParam { Exchange = exchangeName, Durable = false }; var queueParam = new QueueParam { Queue = queueName, Durable = false, Exclusive = true, AutoDelete = true }; var channel = GetReceiverChannel(exchangeParam, queueParam, prefetchCount); ConsumeMessage(channel, resolve, queueParam.Queue); }
public void InvalidInjectionGetQueuesTest(QueueParam param, Enums.InvalidInjection invalid) { var request = new Dictionary <string, string> { [QueueParam.Type.ToString().ToLower()] = QueueTestCaseData.ValidTypeValueMapper[ValidType.All], }; QueueTestCaseData.ValidUnderscoreValueMapper[ValidUnderScore.UnixTime](request); QueueTestCaseData.ValidScopeValueMapper[ValidScope.Own](request); request[param.GetEnumStringValue()] = InvalidInjectionInputData.InjectionInputMapper[invalid]; var defaultManager = new DefaultManager(); var response = defaultManager.Send <object>(QueueTestCaseData.QueuesEndpoint, request, HttpMethod.GET); PrAssert.That(response, PrIs.ErrorResponse().And.HttpCode(System.Net.HttpStatusCode.BadRequest)); }
public void InvalidGetQueueTest(QueueParam param, InvalidValue invalid) { var request = new Dictionary <string, string> { [QueueParam.Id.ToString().ToLower()] = $"{PreparedQueueId.Data[ValidQueueTask.Export]}", [QueueParam.Type.ToString().ToLower()] = ValidQueueTask.Export.GetEnumStringValue(), }; QueueTestCaseData.ValidScopeValueMapper[ValidScope.Own](request); QueueTestCaseData.InvalidRequestValuesMapper[invalid](param.GetEnumStringValue(), request); var defaultManager = new DefaultManager(); var response = defaultManager.Send <object>(QueueTestCaseData.QueueEndpoint, request, HttpMethod.GET); PrAssert.That(response, PrIs.ErrorResponse().And.HttpCode(System.Net.HttpStatusCode.BadRequest)); }
/// <summary> /// Scrive gli elementi della coda /// </summary> /// <param name="code"></param> private void WriteQueue(string code) { if (!QUEUE.ContainsKey(code) || QUEUE[code].Count == 0) { return; } Write(code, "---- Writing Queue ==> " + QUEUE[code].Count + " elements ----"); for (QueueParam item = null; QUEUE[code].Count > 0;) { item = QUEUE.Dequeue(code); Write(item.Code, item.lv, item.message); } }
public void PublishCommand(string exchangeName, byte[] body) { var exchangeParam = new ExchangeParam { Exchange = exchangeName }; var queueParam = new QueueParam { Queue = exchangeName }; using (var channel = GetPublisherChannel(exchangeParam, queueParam)) { var properties = channel.CreateBasicProperties(); properties.Persistent = true; var routingKey = exchangeParam.Exchange; channel.BasicPublish(exchangeParam.Exchange, routingKey, properties, body); } }
public void ValidDuplicateGetQueuesTest(QueueParam param, Enums.ValidDuplicated duplicated) { var request = new Dictionary <string, string> { [QueueParam.Type.ToString().ToLower()] = QueueTestCaseData.ValidTypeValueMapper[ValidType.All], }; QueueTestCaseData.ValidUnderscoreValueMapper[ValidUnderScore.UnixTime](request); QueueTestCaseData.ValidScopeValueMapper[ValidScope.Own](request); var requestDup = request.ToList(); requestDup.Add(new KeyValuePair <string, string>(param.GetEnumStringValue(), duplicated == Enums.ValidDuplicated.SameValue ? request[param.GetEnumStringValue()] : "")); var defaultManager = new DefaultManager(); var response = defaultManager.Send <object>(QueueTestCaseData.QueuesEndpoint, request, HttpMethod.GET); PrAssert.That(response, PrIs.ErrorResponse().And.HttpCode(System.Net.HttpStatusCode.BadRequest)); }
private static async Task UpdateDocumentTableWithUriAsync(QueueParam item, string smallImageName, string mediumStorageImageName, string originalStorageImageName, CloudTable tablePitstop) { List <PitstopTableEntity> pitstopList = new List <PitstopTableEntity>(); int pitstopId = 0; int.TryParse(item.RowKey, out pitstopId); if (pitstopId == 0) { throw new Exception("Unable to do this..."); } var pitstopQuery = new TableQuery <PitstopTableEntity>().Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, item.PartitionKey)); TableContinuationToken tokenPitstop = null; do { TableQuerySegment <PitstopTableEntity> resultSegment = await tablePitstop.ExecuteQuerySegmentedAsync(pitstopQuery, tokenPitstop); tokenPitstop = resultSegment.ContinuationToken; foreach (PitstopTableEntity entity in resultSegment.Results) { if (entity.PitstopId == pitstopId) { pitstopList.Add(entity); } } } while (tokenPitstop != null); var pitstopToUpdate = pitstopList.FirstOrDefault(); if (pitstopToUpdate != null) { pitstopToUpdate.PhotoSmallUrl = smallImageName; pitstopToUpdate.PhotoMediumUrl = mediumStorageImageName; pitstopToUpdate.PhotoLargeUrl = originalStorageImageName; TableOperation replaceOperation = TableOperation.Replace(pitstopToUpdate); await tablePitstop.ExecuteAsync(replaceOperation); } }
public void ValidDuplicatePutQueueTest(QueueParam param, Enums.ValidDuplicated duplicated) { var request = new Dictionary <string, object> { [QueueParam.Id.ToString().ToLower()] = $"{PreparedQueueId.Data[ValidQueueTask.Export]}", [QueueParam.Status.ToString().ToLower()] = ValidStatus.Interrupted.GetEnumStringValue(), }; var otherValue = new Dictionary <string, object> { [QueueParam.Id.ToString().ToLower()] = $"{PreparedQueueId.Data[ValidQueueTask.Import]}", [QueueParam.Status.ToString().ToLower()] = ValidStatus.Executing.GetEnumStringValue(), }; request.Add($"{param.GetEnumStringValue()}_dup", duplicated == Enums.ValidDuplicated.SameValue ? request[param.GetEnumStringValue()] : otherValue[param.GetEnumStringValue()]); var defaultManager = new DefaultManager(); var requestJson = request.ToJson().Replace($"{param.GetEnumStringValue()}_dup", param.GetEnumStringValue()); var response = defaultManager.Send <object>(QueueTestCaseData.QueueEndpoint, requestJson, HttpMethod.PUT); PrAssert.That(response, PrIs.ErrorResponse().And.HttpCode(System.Net.HttpStatusCode.BadRequest)); }
/// <summary> /// 初始化队列。可动态传入QueueCount /// </summary> public QueueHelper(QueueParam qr) { Param.Pool = qr.Pool ?? new ConcurrentDictionary <string, object>(); Param.QueueCount = qr.QueueCount ?? 5000; }
private async Task AddQueueItem(QueueParam queueParam) { CloudQueueMessage message = new CloudQueueMessage(queueParam.ToJson()); await _messageQueue.AddMessageAsync(message); }