我有一个单击按钮的网页 - 向我的控制器发送多个ajax
请求。 (并行)
我的控制器功能:
public string myFunction(string servername)
{
return "respose for " + servername
}
我的服务器可以同时处理仅 100个运行的tak(myFunction) - 否则会崩溃。
RabbitMQ正在我的localhost
服务器上运行。
我想将每个功能发送到" hold"和" unhold"当我运行少于100个任务时。
我怎么能用RabbitMQ做到这一点?
非常感谢。
答案 0 :(得分:1)
我不相信你对rabbitmq有问题。我相信您的应用程序架构存在问题。兔子无法解决问题中描述的问题。
在基于消息的体系结构中,处理器数量(n = 100)是不变的。它们是在同一台机器还是多台机器上并不重要。每个处理器从队列中提取消息以确保工作负载平衡。
所描述的架构似乎具有n =未知处理器,并为每个新请求创建一个新处理器。如上所述,一旦n> 100,系统就会爆炸。这就是消息体系结构旨在通过将请求汇集到队列中来防止负载,可以平衡和管理负载。
建议您查看自己的架构来解决问题。
答案 1 :(得分:0)
一旦进入您的控制器,就通过RabbitMQ发送所有请求。
使用"预取"设置您的消息使用者对消费者的限制为100。这将保证您的消费者永远不会有超过100条正在处理的消息。