Ejemplo n.º 1
0
        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&amp;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));
        }
Ejemplo n.º 2
0
        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);
        }