public static async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "POST", Route = "orders")] //DTOs.Order newOrder, // there is a bug with deserialization: https://github.com/Azure/azure-functions-host/issues/3370 HttpRequest req, [ServiceBus("neworders", Connection = "ServiceBus")] IAsyncCollector <Messages.NewOrderMessage> messages, ILogger log) { log.LogInformation("SubmitNewOrder HTTP trigger function processed a request."); if (!await req.CheckAuthorization("api")) { return(new UnauthorizedResult()); } var newOrder = req.Deserialize <DTOs.Order>(); newOrder.Id = Guid.NewGuid(); newOrder.Created = DateTime.UtcNow; var identity = Thread.CurrentPrincipal.Identity as ClaimsIdentity; var userId = identity.Name; var newOrderMessage = new Messages.NewOrderMessage { Order = Mapper.Map <Messages.Order>(newOrder), UserId = userId }; try { await messages.AddAsync(newOrderMessage); await messages.FlushAsync(); } catch (ServiceBusException sbx) { // TODO: retry policy... log.LogError(sbx, "Service Bus Error"); throw; } return(new OkResult()); }
public async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "POST", Route = "api/orders")] HttpRequest req, [ServiceBus("neworders", Connection = "ServiceBus")] IAsyncCollector <Messages.NewOrderMessage> messages, ILogger log) { log.LogInformation("SubmitNewOrder HTTP trigger function processed a request."); if (!await req.CheckAuthorization("api")) { return(new UnauthorizedResult()); } var newOrder = req.Deserialize <DTOs.Order>(); newOrder.Id = Guid.NewGuid(); newOrder.Created = DateTime.UtcNow; var identity = Thread.CurrentPrincipal.Identity as ClaimsIdentity; var userId = identity.Name; var newOrderMessage = new Messages.NewOrderMessage { Order = Mapper.Map <Entities.Order>(newOrder), UserId = userId }; try { await messages.AddAsync(newOrderMessage); await messages.FlushAsync(); } catch (ServiceBusException sbx) { // TODO: think about retry policy (e.g. https://github.com/jeffhollan/functions-csharp-queue-exponential/blob/master/ExponentialRetry.cs) log.LogError(sbx, "Service Bus Error"); throw; } return(new OkResult()); }
public static async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "POST", Route = "orders")] //DTOs.Order newOrder, // there is a bug with deserialization: https://github.com/Azure/azure-functions-host/issues/3370 HttpRequest req, [ServiceBus("neworders", Connection = "ServiceBus")] IAsyncCollector <Messages.NewOrderMessage> messages, ILogger log) { log.LogInformation("SubmitNewOrder HTTP trigger function processed a request."); var newOrder = req.Deserialize <DTOs.Order>(); newOrder.Id = Guid.NewGuid(); newOrder.Created = DateTime.UtcNow; var newOrderMessage = new Messages.NewOrderMessage { Order = Mapper.Map <Entities.Order>(newOrder) }; try { log.LogInformation("Sending new order message to Queue: {0}", newOrderMessage); await messages.AddAsync(newOrderMessage); await messages.FlushAsync(); } catch (ServiceBusException sbx) { // TODO: retry policy... log.LogError(sbx, "Service Bus Error"); throw; } return(new OkResult()); }