static async Task Main(string[] args) { using (var serviceProvider = ServiceCollection.BuildServiceProvider()) { var logger = serviceProvider.GetService <ILogger <ConsoleClient> >(); var paymentRequestFactory = serviceProvider.GetService <PaymentRequestFactory>(); try { var paymentRequest = paymentRequestFactory.Get(); paymentRequest.Merchant = null; var paymentResponse = await GRPCClient.CreatePaymentAsync(paymentRequest); Console.WriteLine(paymentResponse); //------------------------------------------------------------------------- var transactionRequest = new TransactionRequest() { TransactionId = paymentResponse.TransactionId }; var transactionResponse = await GRPCClient.GetTransactionAsync(transactionRequest); Console.WriteLine(transactionResponse); } catch (RpcException ex) { logger.LogError($"An error occured during GRPC call. Exception: {ex}"); } } }
protected override async Task ExecuteAsync(CancellationToken stoppingToken) { while (!stoppingToken.IsCancellationRequested) { _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); try { var transactionCount = new Random().Next(2, 5); var stream = GRPCClient.GetPaymentStream(); for (int i = 0; i < transactionCount; i++) { await stream.RequestStream.WriteAsync(_paymentRequestFactory.Get()); } await stream.RequestStream.CompleteAsync(); // complete sending requests, close stream var streamResponse = await stream.ResponseAsync; // get overall response _logger.LogInformation($"Completed sending transactions. Result: {streamResponse}"); } catch (RpcException ex) { _logger.LogError($"An error occured during GRPC call. Exception: {ex}"); } catch (Exception ex) { _logger.LogError($"An error occured: {ex}"); } await Task.Delay(5000, stoppingToken); } }