ASP.NET Core 2 Web API任务运行后台任务

时间:2019-05-15 10:41:52

标签: asp.net-core-2.0

我正在处理一个应用程序。我的要求是我想在没有控制器中等待的情况下在elasticsearch中插入数据。该插入过程在另一个后台线程中运行,而无需在controller中等待。控制器在返回之前调用此踏面,而无需等待该过程响应用户数据。

任何人都告诉我该如何管理该架构的过程

1 个答案:

答案 0 :(得分:0)

您的问题过于笼统,但总的来说,您需要某种后台程序以及安排工作的方式。在这方面,实际上有很多选择,但它们属于以下三个主要类别之一:

  1. IHostedService在ASP.NET Core中。 sample code for a queue-based hosted service可能会满足您的需求。这可能是最简单的方法,但也最不可靠。特别是,如果您的应用程序停止,队列将随之而来,有可能导致项目丢失。

  2. Hangfire这样的第三方工具。这是一个很好的中间方法。相对容易设置并且相对有弹性。

  3. 消息队列,例如RabbitMQ。本质上,您将一条消息发送到队列,然后有“订阅者”在队列中侦听特定的消息类型并根据该消息采取措施。设置起来有点复杂,但是比其他方法要灵活得多。即使出现故障,也有办法确保消息传递,实际上,您可以让多个工作人员轮流排队进行规模扩展。