static async Task Main(string[] args)
        {
            using var channel = GrpcChannel.ForAddress("https://localhost:5001");
            var client = new Health.HealthClient(channel);

            Console.WriteLine("Watching health status");
            Console.WriteLine("Press any key to exit...");

            var cts = new CancellationTokenSource();

            using var call = client.Watch(new HealthCheckRequest { Service = "" }, cancellationToken: cts.Token);
            var watchTask = Task.Run(async() =>
            {
                try
                {
                    await foreach (var message in call.ResponseStream.ReadAllAsync())
                    {
                        Console.WriteLine($"{DateTime.Now}: Service is {message.Status}");
                    }
                }
                catch (RpcException ex) when(ex.StatusCode == StatusCode.Cancelled)
                {
                    // Handle cancellation exception.
                }
            });

            Console.ReadKey();
            Console.WriteLine("Finished");

            cts.Cancel();
            await watchTask;
        }
Exemplo n.º 2
0
        private async static Task HealthCheck(GrpcChannel channel)
        {
            var client = new Health.HealthClient(channel);

            Console.WriteLine("Watching health status");
            Console.WriteLine("Press any key to exit...");

            var cts = new CancellationTokenSource();

            using var call = client.Watch(new HealthCheckRequest { Service = "HealthCheck" }, cancellationToken: cts.Token);
            var watchTask = Task.Run(async() =>
            {
                try
                {
                    await foreach (var message in call.ResponseStream.ReadAllAsync())
                    {
                        Console.WriteLine($"{DateTime.Now}: Service is {message.Status}");
                    }
                }
                catch (RpcException ex) when(ex.StatusCode == StatusCode.Cancelled)
                {
                    Console.WriteLine(ex.Status.Detail);
                }
            });

            Console.ReadKey();
            Console.WriteLine("Finished");

            cts.Cancel();
            await watchTask;
        }