Exemplo n.º 1
0
        public RedisService(
            ILogger <RedisService> logger,
            ShutdownService shutdown
            )
        {
            _logger = logger;

            var redisHost = System.Environment.GetEnvironmentVariable("REDIS_HOST");
            var redisPort = System.Environment.GetEnvironmentVariable("REDIS_PORT");

            if (redisHost == null || redisHost == "")
            {
                redisHost = "localhost";
            }
            if (redisPort == null || redisPort == "")
            {
                redisPort = "6379";
            }

            Client = ConnectionMultiplexer.Connect($"{redisHost}:{redisPort}");
            Client.ConnectionFailed += (object sender, ConnectionFailedEventArgs args) =>
            {
                shutdown.HandleFailure($"Redis connection failure : {args.FailureType}");
            };
        }
        private async void HandleResponseStream(AsyncServerStreamingCall <VotingRecord> call)
        {
            try
            {
                var readStream = call.ResponseStream;

                await foreach (var votingRecord in readStream.ReadAllAsync())
                {
                    var didProcess = await ProcessRecord(votingRecord);
                }
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Error while processing vote stream");
            }

            _shutdownService.HandleFailure("Response stream has ended");
        }