我正在处理一个应用程序。我的要求是我想在没有控制器中等待的情况下在elasticsearch中插入数据。该插入过程在另一个后台线程中运行,而无需在controller中等待。控制器在返回之前调用此踏面,而无需等待该过程响应用户数据。
任何人都告诉我该如何管理该架构的过程
答案 0 :(得分:0)
您的问题过于笼统,但总的来说,您需要某种后台程序以及安排工作的方式。在这方面,实际上有很多选择,但它们属于以下三个主要类别之一:
IHostedService
在ASP.NET Core中。 sample code for a queue-based hosted service可能会满足您的需求。这可能是最简单的方法,但也最不可靠。特别是,如果您的应用程序停止,队列将随之而来,有可能导致项目丢失。
像Hangfire这样的第三方工具。这是一个很好的中间方法。相对容易设置并且相对有弹性。
消息队列,例如RabbitMQ。本质上,您将一条消息发送到队列,然后有“订阅者”在队列中侦听特定的消息类型并根据该消息采取措施。设置起来有点复杂,但是比其他方法要灵活得多。即使出现故障,也有办法确保消息传递,实际上,您可以让多个工作人员轮流排队进行规模扩展。