public async Task <IActionResult> CalculateDocket( [HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequestMessage req, ILogger log) { ReceiptRequestDto receiptRequestDto = await req.Content.ReadAsAsync <ReceiptRequestDto>(); log.LogInformation($"Started docket builder with ID = '{receiptRequestDto.MembershipId}'."); // http://api.icndb.com/jokes/random?firstName=John&lastName=Doe // Fan Out Task <HttpResponseMessage> resp1 = _httpClient.SendAsync(new HttpRequestMessage(HttpMethod.Get, new Uri("http://api.icndb.com/jokes/random"))); Task <HttpResponseMessage> resp2 = _httpClient.SendAsync(new HttpRequestMessage(HttpMethod.Get, new Uri("http://api.icndb.com/jokes/random"))); Task <HttpResponseMessage> resp3 = _httpClient.SendAsync(new HttpRequestMessage(HttpMethod.Post, new Uri("http://localhost:7071/api/CalculateSomething"))); // Fan In HttpResponseMessage[] results = await Task.WhenAll(resp1, resp2, resp3); // Aggregate var final = ""; foreach (HttpResponseMessage res in results) { final += "\n" + await res.Content.ReadAsStringAsync(); } string resp4 = await _svc.CallOutToMicroservice(); final += "\n" + resp4; return(new OkObjectResult(final)); }
public async Task <HttpResponseMessage> CalculateReceipt( [HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequestMessage req, [OrchestrationClient] DurableOrchestrationClient durableClient, ILogger log) { ReceiptRequestDto receiptRequestDto = await req.Content.ReadAsAsync <ReceiptRequestDto>(); // Function input comes from the request content. string instanceId = await durableClient.StartNewAsync(nameof(RunReceiptOrchestrator), receiptRequestDto); log.LogInformation($"Started orchestration with ID = '{instanceId}'."); return(await durableClient.WaitForCompletionOrCreateCheckStatusResponseAsync(req, instanceId)); // return durableClient.CreateCheckStatusResponse(req, instanceId); }