繁体   English   中英

ASP.NET Web API - 多个长时间运行的 ZDB974238714CA8DE634A7CE1D083A1 调用最佳实践?

[英]ASP.NET Web API - Multiple Long-Running API calls best practices?

我正在寻找实现以下场景的最佳实践——我已经有一些解决方案(未实现),但我想确保它,这就是我在这里分享情况的原因。

设想

我有一个ASP.NET Web API (netcore)应用程序,它应该返回一个复杂的数据结构,格式为json 我们称之为WebAPI.NumberOne 这个 API 在内部需要调用另一个API端点来完成主要工作,这意味着,使用具有Task.WaitAllasync await模式调用22外部 API,以确保所有external APIs都已完成工作,然后,对每个响应进行一些处理,例如将响应解析为结果类型,最后将结果返回给WebAPI.NumberOne 我想调用第二个WebAPI.NumberTwo

限制

我们目前无法简化WebAPI.NumberTwo ,它必须自己完成所有这些繁重的工作。 而且,我们的客户不希望在项目中引入任何新技术,例如任何消息队列平台。

问题:

我担心从WebAPI.NumberOne接收超时,因为另一个 API 有时需要 10 分钟才能完成这项工作。 可能还有一些我现在不知道的潜在风险。

我的想法

  1. 我正在考虑实现Web Hook Receiver and Listener ,以便当WebAPI.NumberTwo完成其工作以将结果发布到接收器,另一方面,侦听WebAPI.NumberOne POST
  2. 我相信使用服务总线和消息队列的概念对于这种情况也很有帮助,但由于我们的客户目前不希望采用新技术,因此我没有 go 用于任何消息队列机制。

那么,如上所述,这种情况下通常的最佳实践是什么? 我更热衷于了解不同的方法和最佳实践,即使我上面提到的限制如何。 感谢您的时间和帮助。

我们所做的是使用 rabbitmq 和 masstransit 实现排队(尽管这对您的客户来说是一项新技术)。

所有 api 调用所做的就是排队一条消息并返回 200 ok。

然后消息消费者调用处理繁重工作的函数。

为了集成其他 api,我们发布一个事件,然后其他 api 消费者可以处理该消息。

鉴于这篇文章中的标签,您可能已经拥有可用的 azure 队列或至少 msmq。

使用您的 webhook 提案,如果出现中断或单个组件需要更新会发生什么? 使用队列,消息就在那里,直到它被消耗掉。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM