如何从Redis服务器流上的C#StackExchange.Redis nuget包中进行阻止读取

当服务器仍将写入STream时,我需要从REDIS流中读取。现在有两种方法。一种方法是获取已经存在的消息列表。我正在按照以下指示进行操作。但是我想进行阻塞读取,以便我的客户端控制台应用程序将等待流中的消息。我知道在REDIS-CLI中使用以下命令可以完成相同的操作。我想在C#中达到相同的结果     XREAD BLOCK 1000流#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}");
            }
study222 回答:如何从Redis服务器流上的C#StackExchange.Redis nuget包中进行阻止读取

目前无法实现。参见https://stackexchange.github.io/StackExchange.Redis/PipelinesMultiplexers.html#multiplexing的原因;我们已经讨论了启用此方案的一些选项,但是要启用它需要大量的工作。对于这些想法,我没有任何评估。我了解您要尝试执行的操作,但现在与图书馆不兼容。

本文链接:https://www.f2er.com/3139448.html

大家都在问