【发布时间】:2020-05-04 07:09:11
【问题描述】:
在previous SO question 中,我询问是否有办法让 RedisMqServer 为所有处理程序/DTO 提供一个共享线程池,而不是每个处理程序至少有一个专用线程。有了很多 Handler,我们就会产生很多线程,每个 Handler 都会受到分配给它的线程数量的限制。
以 100 个处理程序为例,至少有 100 个线程,但每个类型/处理程序一次只能处理 1 个请求(默认情况下)。我预见到特定 DTO 将比其他 DTO 使用更多的情况,但我希望处理程序从公共池中获取线程,而不是通过如下调用锁定一个特定处理程序:
mqService.RegisterHandler<PostStatusTwitter>(ExecuteMessage, noOfThreads:10);
神话回答说
您可以只使用 C# 并将 RegisterHandler 包装在您自己的扩展后面 方法来配置它。
我很想在这里请求一些输入,因为我不确定这会带来什么。我简要回顾了RedisMqServer 代码,但在我看来需要一些重写才能实现我想要的?
【问题讨论】:
-
链接的答案解释了 Redis MQ 的工作原理,即不是您要求的方式,您需要在其他地方寻找或创建一个按您想要的方式工作的解决方案。我在回答你的问题:“有没有办法增加一般的线程数量,可以用于所有处理程序?”认为您想在不想每次手动指定
noOfThreads的地方干燥注册 API。 -
啊,是的,我是在创建一个供所有处理程序使用的池之后,而不是为每个处理程序指定。但后来我有了答案,基本上是“不”。随意在此处添加它作为答案。
标签: c# redis servicestack servicestack.redis