Пример #1
0
    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        while (!stoppingToken.IsCancellationRequested)
        {
            try
            {
                GrpcChannel channel = GrpcChannel.ForAddress("https://localhost:5001");
                OrdersManager.OrdersManagerClient client = new OrdersManager.OrdersManagerClient(channel);

                NewOrderReply result = await client.GetNewOrderAsync(new NewOrderRequest());

                if (result.OrderId != 0)
                {
                    logger.LogInformation($"Processing order id {result.OrderId}");
                    await client.UpdateOrderAsync(new UpdateOrderRequest
                    {
                        OrderId = result.OrderId,
                        Status  = "Processed by .NET"
                    });
                }
                else
                {
                    logger.LogInformation($"No pending orders at {DateTimeOffset.Now}");
                }

                await channel.ShutdownAsync();
            }
            catch (Exception ex)
            {
                logger.LogError($"{ex.Message}\n{ex.StackTrace}");
            }

            await Task.Delay(3000, stoppingToken);
        }
    }
Пример #2
0
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            while (!stoppingToken.IsCancellationRequested)
            {
                _logger.LogInformation($"Checking orders at {DateTimeOffset.Now}");
                try
                {
                    Channel channel = new Channel("localhost:50051", ChannelCredentials.Insecure);
                    OrdersManager.OrdersManagerClient client = new OrdersManager.OrdersManagerClient(channel);

                    OrderRequest request = new OrderRequest();
                    OrderReply   result  = await client.GetNewOrderAsync(request);

                    if (result.OrderId != 0)
                    {
                        _databaseService.UpdateOrder(result.OrderId);
                        _logger.LogInformation($"Order with id {result.OrderId} has been processed");
                    }
                    else
                    {
                        _logger.LogInformation($"No pending orders at {DateTimeOffset.Now}");
                    }

                    await channel.ShutdownAsync();
                }
                catch (Exception exc)
                {
                    _logger.LogError(exc.Message + exc.StackTrace);
                }

                await Task.Delay(3000, stoppingToken);
            }
        }