Как сделать блокировку чтения из пакета C # StackExchange.Redis при потоковой передаче на сервере Redis - PullRequest
0 голосов
/ 08 ноября 2019

Мне нужно читать из потока REDIS, пока сервер все еще будет записывать в STream. Сейчас есть 2 способа. 1 способ - получить список сообщений, которые уже есть. Я делаю это, как указано ниже. Однако я хочу выполнить блокировку чтения, чтобы мое клиентское консольное приложение ожидало сообщений в потоке. Я знаю, что то же самое можно сделать с помощью следующей команды в REDIS-CLI. Я хочу добиться того же результата в C # XREAD BLOCK 1000 STREAMS # channel1 1526999626221-0

IDatabase db = redis.GetDatabase ();

            while (true)
            {
                iteration++;
                //var messages = db.StreamRead("#channel1", "0-0");
                var messages = db.StreamRead("#channel1", lastMessageInAsequence);

                IEnumerator MessageEnumerator = messages.GetEnumerator();

                while (MessageEnumerator.MoveNext())
                {
                    StackExchange.Redis.NameValueEntry[] entry1 = ((StackExchange.Redis.StreamEntry)MessageEnumerator.Current).Values;

                    lineCount++;
                    Console.WriteLine(entry1[0].Name + ":" + entry1[0].Value);
                    lastMessageInAsequence = entry1[0].Name;
                }

                Console.WriteLine($"{lineCount} lines read from stream in 1 go in iteration {iteration}");
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...