StackExchange.Redis订阅使用了多少并发消息/线程

时间:2016-07-29 17:02:07

标签: c# multithreading publish-subscribe stackexchange.redis

使用StackExchange.Redis客户端,我想将Redis用于标准的Producer / Consumer类型的工作负载。文档为此建议了一种模式:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

默认情况下,每个消费者都会按顺序处理每条消息。但是,使用选项sub.Subscribe(channel, delegate { string work = db.ListRightPop(key); if (work != null) Process(work); }); //... db.ListLeftPush(key, newWork, flags: CommandFlags.FireAndForget); sub.Publish(channel, "");` 允许同时处理消息。因此,在发布许多消息的高容量场景中,这可能导致许多并发线程检查工作并可能处理消息。

什么决定允许多少个并发线程一次处理消息?换句话说,redis客户端会调用无限数量的线程来处理消息,还是会受到一些限制?

有没有办法控制处理多少并发消息?或者我应该尝试实现自己的逻辑来管理消费者处理线程(而不是仅仅允许订阅事件线程直接执行处理)?

0 个答案:

没有答案