コード例 #1
0
ファイル: Program.cs プロジェクト: user-nik/GrpcMicroservices
        private static async Task InsertBulkProduct(ProductsProtoService.ProductsProtoServiceClient client)
        {
            Console.WriteLine("InsertBulkProduct started..");

            using var clientBulk = client.InsertBulkProduct();

            for (int i = 0; i < 3; i++)
            {
                var productModel = new ProductModel
                {
                    Created     = Timestamp.FromDateTime(DateTime.UtcNow),
                    Description = "Bulk Added Product",
                    Name        = $"Name {i}",
                    Price       = 100 * i,
                    Status      = ProductStatus.Instock
                };

                await clientBulk.RequestStream.WriteAsync(productModel);
            }

            await clientBulk.RequestStream.CompleteAsync();

            var responseBulk = await clientBulk;

            Console.WriteLine("InsertBulkProduct ended..");
            Console.WriteLine($"Status {responseBulk.Success} Inserted: {responseBulk.InsertCount}");
        }
コード例 #2
0
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            while (!stoppingToken.IsCancellationRequested)
            {
                int delay = _config.GetValue <int>("WorkerService:TaskInterval");
                await Task.Delay(delay, stoppingToken);

                _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);

                // Get Token

                var token = await GetTokenFromIS();

                //create Sopping cart
                //Retrieve products from server
                //add products to a sc
                using var scChannel = GrpcChannel
                                      .ForAddress(_config.GetValue <string>("WorkerService:ShoppingCartServerUrl"));

                //get SC
                var scClient = new ShoppingCartProtoService.ShoppingCartProtoServiceClient(scChannel);
                var scModel  = await GetOrCreateShoppingCartAsync(scClient, token);

                //open shopping cart stream
                using var scClientStream = scClient.AddItemIntoShoppingCart();

                //retrive products
                using var productChannel = GrpcChannel
                                           .ForAddress(_config.GetValue <string>("WorkerService:ProductServerUrl"));
                var productClient = new ProductsProtoService.ProductsProtoServiceClient(productChannel);

                _logger.LogInformation("GetAllProducts --->");
                using var _clientData = productClient.GetAllProducts(new GetAllProductRequest());
                await foreach (var responseData in _clientData.ResponseStream.ReadAllAsync())
                {
                    Console.WriteLine("currentProduct - " + responseData.ToString());
                    var addNewScItem = new AddItemIntoShoppingCartRequest
                    {
                        Username     = _config.GetValue <string>("WorkerService:UserName"),
                        DiscountCode = "CODE_90",
                        NewCartItem  = new ShoppingCartItemModel
                        {
                            Color       = "red",
                            Price       = responseData.Price,
                            ProductId   = responseData.ProductId,
                            ProductName = responseData.Name,
                            Quantity    = 1
                        }
                    };

                    await scClientStream.RequestStream.WriteAsync(addNewScItem);
                }
                await scClientStream.RequestStream.CompleteAsync();

                var addItemIntoSCResponce = await scClientStream;
                _logger.LogInformation($"Added  {addItemIntoSCResponce.InsertCount} products to a shopping cart");
            }
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: user-nik/GrpcMicroservices
        private static async Task GetAllProductsAsync(ProductsProtoService.ProductsProtoServiceClient client)
        {
            Console.WriteLine("GetAllProducts started..");

            using var _clientData = client.GetAllProducts(new GetAllProductRequest());
            await foreach (var responseData in _clientData.ResponseStream.ReadAllAsync())
            {
                Console.WriteLine("currentProduct - " + responseData.ToString());
            }
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: user-nik/GrpcMicroservices
        private static async Task GetProductAsync(ProductsProtoService.ProductsProtoServiceClient client)
        {
            Console.WriteLine("GetProductAsync started..");

            var response = await client.GetProductAsync(
                new GetProductRequest
            {
                ProductId = 1
            });

            Console.WriteLine("response - " + response.ToString());
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: user-nik/GrpcMicroservices
        private static async Task DeleteProductsAsync(ProductsProtoService.ProductsProtoServiceClient client)
        {
            Console.WriteLine("DeleteProductsAsync started..");

            var deleteReponse = await client.DeleteProductAsync(
                new DeleteProductRequest
            {
                ProductId = 2,
            });

            Console.WriteLine("DeleteProductsAsync response.. " + deleteReponse.ToString());
        }
コード例 #6
0
ファイル: Program.cs プロジェクト: user-nik/GrpcMicroservices
        static async Task Main(string[] args)
        {
            using var channel = GrpcChannel.ForAddress("https://localhost:5001");
            var client = new ProductsProtoService.ProductsProtoServiceClient(channel);
            await Task.Delay(1000);

            try
            {
                await GetProductAsync(client);

                await Task.Delay(500);

                await AddProductAsync(client);

                await Task.Delay(500);

                await UpdateProductsAsync(client);

                await Task.Delay(500);

                await DeleteProductsAsync(client);

                await Task.Delay(500);

                await GetAllProductsAsync(client);

                await Task.Delay(500);

                await InsertBulkProduct(client);

                await Task.Delay(500);

                await GetAllProductsAsync(client);

                await Task.Delay(500);
            }
            catch (RpcException ex)
            {
                Console.WriteLine(ex.Status.Detail);
            }


            Console.ReadKey();
        }
コード例 #7
0
ファイル: Program.cs プロジェクト: user-nik/GrpcMicroservices
        private static async Task UpdateProductsAsync(ProductsProtoService.ProductsProtoServiceClient client)
        {
            Console.WriteLine("UpdateProductsAsync started..");
            var updateReponse = await client.UpdateProductAsync(
                new UpdateProductRequest
            {
                Product = new ProductModel
                {
                    Created     = Timestamp.FromDateTime(DateTime.UtcNow),
                    Description = "Updated Product",
                    Name        = "Name",
                    Price       = 1799,
                    Status      = ProductStatus.Instock,
                    ProductId   = 1
                }
            });

            Console.WriteLine("UpdateProductsAsync response.. " + updateReponse.ToString());
        }
コード例 #8
0
ファイル: Program.cs プロジェクト: user-nik/GrpcMicroservices
        private static async Task AddProductAsync(ProductsProtoService.ProductsProtoServiceClient client)
        {
            Console.WriteLine("AddProductAsync started..");
            var addProductResponse = await client.AddProductAsync(
                new AddProductRequest
            {
                Product = new ProductModel
                {
                    Created     = Timestamp.FromDateTime(DateTime.UtcNow),
                    Description = "Added Product",
                    Name        = "Name",
                    Price       = 1799,
                    Status      = ProductStatus.Instock
                }
            }
                );

            Console.WriteLine("GetAllProducts started.." + addProductResponse.ToString());
        }
コード例 #9
0
ファイル: Worker.cs プロジェクト: user-nik/GrpcMicroservices
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            await Task.Delay(_config.GetValue <int>("WorkerService:TaskInterval"), stoppingToken);

            while (!stoppingToken.IsCancellationRequested)
            {
                _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);


                using var channel = GrpcChannel.ForAddress(_config.GetValue <string>("WorkerService:ServerUrl"));
                var client = new ProductsProtoService.ProductsProtoServiceClient(channel);

                _logger.LogInformation("AddProduct started");
                var addProductResponse = await client.AddProductAsync(await _factory.Generate());

                _logger.LogInformation("AddProduct - " + addProductResponse.ToString());

                await Task.Delay(_config.GetValue <int>("WorkerService:TaskInterval"), stoppingToken);
            }
        }