コード例 #1
0
ファイル: Program.cs プロジェクト: vhorobets/PaymentSystem
        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}");
                }
            }
        }
コード例 #2
0
ファイル: Worker.cs プロジェクト: vhorobets/PaymentSystem
        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);
            }
        }