public static async Task Run( [ServiceBusTrigger(QueueNames.Persistence, Connection = "ServiceBusConnectionString")] Message message, string correlationId, [Table(TableNames.User)] CloudTable table, [ServiceBus(QueueNames.StatusProcess, Connection = "ServiceBusConnectionString")] IAsyncCollector <Message> statusTopic, ILogger log) { await table.CreateIfNotExistsAsync(); var payload = message.Convert <UserImportModelDto>(); var entity = new UserEntity { PartitionKey = PartitionKeys.Users, RowKey = payload.Id.ToString(), Age = payload.Age, Timestamp = DateTimeOffset.UtcNow, Address = payload.Address, Email = payload.Email, EyeColor = payload.EyeColor, FavoriteFruit = payload.FavoriteFruit, Gender = payload.Gender, Greeting = payload.Greeting, IsActive = payload.IsActive, Name = payload.Name, Phone = payload.Phone, ETag = "*" }; var operation = TableOperation.InsertOrReplace(entity); var result = await table.ExecuteAsync(operation); if (result.HttpStatusCode.IsSuccessCode()) { log.LogInformation("User ({userId}) successfully stored in persistence store", payload.Id); } else { log.LogCritical("Failed to store user ({user}) in persistence store", payload); } var command = new ImportStatusChangedCommand { Succeeded = 1 }; await statusTopic.AddAsync(command.Convert(correlationId)); await statusTopic.FlushAsync(); }
public static async Task Run( [ServiceBusTrigger(QueueNames.Error, Connection = "ServiceBusConnectionString")] Message message, string correlationId, [Table(TableNames.Error)] CloudTable table, [ServiceBus(QueueNames.StatusProcess, Connection = "ServiceBusConnectionString")] IAsyncCollector <Message> statusTopic, ILogger log) { await table.CreateIfNotExistsAsync(); var payload = message.Convert <ImportErrorCommand>(); var errorEntity = new ErrorEntity { ErrorMessage = payload.ErrorMessage, CorrelationId = correlationId, ObjectJson = JsonConvert.SerializeObject(payload.ImportModel), Timestamp = DateTimeOffset.UtcNow, RowKey = Guid.NewGuid().ToString(), PartitionKey = PartitionKeys.Errors }; var insertOperation = TableOperation.Insert(errorEntity); var result = await table.ExecuteAsync(insertOperation); if (result.HttpStatusCode.IsSuccessCode()) { log.LogInformation("Stored error message in persistence"); } else { log.LogCritical( "Failed to store error message while importing sequence ({correlationId})", correlationId); } var command = new ImportStatusChangedCommand { Failed = 1 }; await statusTopic.AddAsync(command.Convert(correlationId)); await statusTopic.FlushAsync(); }