需要执行一个操作,其中将有多个用户发送请求,而每个请求执行单个操作所需的时间较高



这里我们使用angular 9作为前端,.net core 3.1作为后端,sql server作为数据库。

每个用户将向服务器发送单个请求,但执行每个请求服务器几乎需要90分钟的操作时间。

需要找到后端保存所有请求或一次执行某些请求的解决方案,但它不应该重叠现有的运行请求计算。

我们正在考虑将队列引入后端,已经尝试了并行foreach,但它混淆了一些计算。你还有别的办法可以帮我吗?提前感谢

听起来你有一个异步操作。所以有多种解决方案,从我的角度来看,我将描述两个简单的一次,你很容易扩展。

首先你必须分离你的" job "的触发器并查询状态。

对于整个系统,我假设你在服务器上运行了一个api。因此,您可以使用文件系统来持久化正在运行的作业,并在单独的请求中查询它们。因此,一个请求调度"作业",另一个返回状态信息。

如果没有文件系统,您也可以使用数据库或将其存储在内存中(注意不希望重新启动程序)。

使用Hangfire实现此功能:https://docs.hangfire.io/en/latest/

最新更新