RabbitMQ / 同时只保存 100 个正在运行的任务

本文关键字:运行 任务 保存 RabbitMQ | 更新日期: 2023-09-27 18:32:44

我有一个网页,单击按钮 - 向我的控制器发送多ajax请求。(平行)

我的控制器功能:

public string myFunction(string servername)
{
    return "respose for " + servername
}

例如,我的服务器只能同时处理 100 个正在运行的 taks (myFunction) - 否则它会崩溃。

RabbitMQ 正在我的localhost服务器上运行。

我想将每个功能发送到"保持",并在运行少于 100 个任务时"取消保留"它。

我怎样才能用 RabbitMQ 做到这一点?

非常感谢。

RabbitMQ / 同时只保存 100 个正在运行的任务

我不相信你对rabbitmq有问题。我相信您的应用程序架构有问题。 你对兔子无能为力来解决问题中描述的问题。

在基于消息的体系结构中,处理器数 (n=100) 是恒定的。它们是在同一台计算机上还是在多台计算机上都没有关系。 每个处理器从队列中提取消息,以确保工作负载平衡。

所描述的体系结构似乎具有 n=未知处理器,并为每个新请求创建一个新处理器。如上所述,一旦 n>100,系统就会爆炸。这就是消息体系结构旨在防止的,通过将请求汇集到队列,可以均衡和管理负载。

建议通过查看体系结构来解决问题。

通过 RabbitMQ 发送所有请求,只要它们进入您的控制器。

将消息使用者的"预取"限制设置为 100。 这将保证您的使用者当前处理的消息永远不会超过 100 条。

https://www.rabbitmq.com/consumer-prefetch.html