在多个并行进程之间延迟API调用

问题描述 投票:0回答:1

我正在将SMS通知添加到C#Web应用程序。简而言之,用户登录界面,键入消息,选择收件人并保存。我正在使用Hangfire来启动后台作业-这些作业处理实际建筑物,然后通过提供程序(当前为Nexmo)发送SMS消息。

Nexmo,以及大多数其他SMS提供商,在其API上有一定的限制,这限制了将出站邮件排队到X / sec的速率的能力,该速率根据您的帐户级别而变化。出于测试目的,我限制为1 /秒。

目前,当我的后台进程开始时,我一直在跟踪API调用之间经过的时间,如果该时间少于1秒,我将使线程进入睡眠状态并保留剩余时间。这似乎工作得很好,但是]我遇到的问题是可能同时运行多个并行后台进程,例如当两个用户触发SMS出站消息同时发出时时间。还有另一种复杂性,其中,如果您使用2个出站号码,则您的API限制实际上会翻倍(从所使用的[[each号码开始每秒发送1条消息)。我现在忽略了这一点,只是在所有API调用之间延迟了。我正在寻找有关如何规避此问题的建议。我的一个想法是完全将消息处理与后台作业分离开来-hangfire作业只需构建消息并将其标记为排队等待发送,以及一个单独的单线程应用程序,该应用程序实际上充当观察者并发送消息FIFO 。

任何建议将不胜感激!

我正在将SMS通知添加到C#Web应用程序。简而言之,用户登录界面,键入消息,选择收件人并保存。我正在使用Hangfire旋转...

c# api function-call nexmo
1个回答
1
投票
根据您所使用的国家和地区,API请求的限制将有所不同。通常限制是每个密钥每秒30个API请求-但这受区域限制的影响,请参阅:
© www.soinside.com 2019 - 2024. All rights reserved.