作业报告失败的工作队列

本文关键字:工作队列 失败 报告 作业 | 更新日期: 2023-09-27 17:53:30

我有一个WCF服务(事实上它是WCF并不重要),我不是在寻找消息队列,而是在一个异步工作队列中放置任务,一旦收到请求/消息。要求:

  • 必须支持持久存储,以便在Server/service进程失败时恢复任务。
  • 支持重新运行失败的作业,不超过给定的限制(即尝试重新运行作业最多5次)
  • 能够以易于查询的方式记录失败的作业调用及其参数。例如,我将查询存储中失败的作业,并接收"作业名称,参数"的列表。
  • 不幸的是不能是基于云的/托管的解决方案。

我可能不寻找的队列:

  • MSMQ (RabbitMQ, AMQP)。低级别,专注于消息传输。
  • Quartz.NET。具备上述部分功能,但缺乏错误记录功能。与异步工作和错误报告相比,更倾向于cron-like调度。
  • . net TPL的默认任务调度程序。它没有进程的持久性,因为它突然停止,不支持很好地重新运行任务。

我想我会找一些更像芹菜、Resque或更少的东西。我知道救援队。. NET存在(https://www.nuget.org/packages/Resque/),但不确定是否有更主流的东西,或者是否足够。

作业报告失败的工作队列

亚马逊SQS怎么样?你不必像使用RabbitMQ/MSMQ那样担心基础设施。SQS也非常便宜。据我所知,每10000条信息收费0.01美元。为什么要重新发明轮子呢?让亚马逊(或其他提供类似服务的云提供商,如微软和Rackspace)去操心吧。

我在生产环境中为所有基于消息的服务使用Amazon SQS。其中一些消息就像定时作业;外部进程在特定时间将消息排队。