繁体   English   中英

C# - 发生火灾并忘记呼叫

[英]C# - Issue with fire and forget calls

我有一个 .NET 核心服务。 我们想要实现对其端点之一的 fire and forget 调用。 当请求到达这个端点时,它应该触发一个方法并立即返回响应为 Ok。 然后,该方法通过调用其他服务和一些 DB 操作来处理该请求。

以上工作正常。 但是,当我尝试对背靠背发送的数千个请求进行性能测试时,我们注意到有些请求根本没有得到处理。 它最多可以处理 4000 个请求,但更多的是它没有处理一些(大约 20+)个请求。 日志中没有异常

如何识别问题?

await Task.Factory.StartNew(() => FireAndForgetMethod());
return Ok();

“一劳永逸”的字面意思是你不在乎是否完成,你完全可以忽略异常。 由于您确实关心它是否完成并且您确实希望看到异常,所以您没有适合“一劳永逸”的情况。

当请求到达这个端点时,它应该触发一个方法并立即返回响应为 Ok。 然后,该方法通过调用其他服务和一些 DB 操作来处理该请求。

您的 API 端点应将要完成的工作序列化为消息并将其放在可靠的消息队列中(例如,Azure 队列、Amazon 简单队列等),之后它可能会向其调用者返回 Z293C9EA246FF9985DC6F62A666 结果。 然后应该读取此队列,并由后台处理器(例如,ASP.NET Core Worker Service)执行每条消息。

暂无
暂无

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

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