相关疑难解决方法(0)

如何在ASP.NET Web API中排队后台任务

我有一个webapi,旨在以队列方式处理报告.该应用程序采取的步骤如下:

  • 接收内容
  • 将内容映射到对象并将其放入队列
  • 轮询队列中的待处理项目
  • 一次处理队列中的项目

我当时正在考虑使用Entity Framework来创建排队项目的数据库,例如:

public class EFBatchItem
{
    [Key]
    public string BatchId { get; set; }
    public DateTime DateCreated { get; set; }
    public DateTime DateCompleted { get; set; }
    public string BatchItem { get; set; }
    public BatchStatus Status { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我的问题 - 是否有一种更有效的方法,使用NServiceBus,BlockingCollection或ConcurrentQeueue,而不是不断轮询数据库并逐个拉出待处理的项目?我之前没有使用过队列.

一种想法是创建一个任务队列,并在一个单独的线程上处理所有挂起的任务.有点类似于使用线程处理队列的最有效方法,但我想确保我走的是最有效的路由.

编辑:我在这里遇到的一个重要问题是向用户显示进度的最佳方式.一旦用户提交内容,他就会进入新页面,并可以按批次标识符查看状态.MSMQ是必需的,还是NServiceBus,以便通知用户?这似乎是REquest/Acknowledge/Push范式的变体?

c# queue asp.net-web-api

16
推荐指数
2
解决办法
2万
查看次数

标签 统计

asp.net-web-api ×1

c# ×1

queue ×1