我有一个来自不同客户端的API列表保存在我的数据库表中,并且所有API都有不同的时间间隔来调用API。我应该怎样调用API。可以在API表列表中添加新数据。我应该选择动态定时器吗?
答案 0 :(得分:0)
对我来说 - API调用&处理响应(存储到DB等)应该是一个组件。并且,安排何时调用哪个API - 应该是其他组件(类似于cron作业)。这样 - 当时间合适时,将触发适当的API调用。这也使您可以灵活地在一天内进行多次尝试/重试等。
评论后更新:
如果我有正确的问题 - 我的原始建议就是。
组件1 - 计划程序 使用Quartz.net(或使用Timer等创建自己的) - 并创建一个服务(比如说WCF)或Process,它将从数据库中读取记录并识别所有需要调用的日程表和API URL。当预定的时间发生时,Quartz.net将触发您的处理程序方法 - 您将在其中调用组件2并传递API URL。
组件2 - API引擎 当它收到来自组件1的调用时 - 它将进行API调用并获取响应。根据需要存储/处理它。
答案 1 :(得分:0)
可以使用各种调度程序自动执行此操作。例如,您可以使用Quartz.NET及其AdoJobStore
。我自己还没有用过它,但sounds appropriate:
使用包含的AdoJobStore,所有作业和触发器配置为"非易失性"通过ADO.NET存储在关系数据库中。
或者,您的数据库可能内置了计时器。但是,如果这主要是学术练习(正如#34;您的挑战所提示的那样),您可能无法使用这些练习。
我会保留一份计划任务表,其中列指定:
然后,您可以在无限循环中编写代码,只扫描该表,例如每分钟一次。它应该使用"下一次"来查找所有任务。早于现在尚未完成:
任务成功完成后,更新行以表明它已完成,并在下次启动时添加另一行。
您需要确切了解您的错误策略:
为了提高可靠性,您还需要考虑其他方面:
你可能不需要在这里实际实现所有内容,但值得考虑它们。