【发布时间】:2016-06-21 10:26:22
【问题描述】:
我有一个 Windows 服务,它每 5 分钟向 Web API 控制器发出一个请求。 Web API 将从应用程序 A 检索一些数据并对其进行处理,然后将其放入应用程序 B。基本上它每 5 分钟从 A 查找新的和更新的记录 - 我有不同的记录类型,间隔可能会有所不同,具体取决于变化的频率。每条记录都有一个 Modified_Date 列。此列将用于从 A 检索数据。我有一个表,Windows 服务使用它来触发请求。此表存储每种记录类型的最后修改日期。因此,在每个请求中说我检索 1000 条记录,我将获得这 1000 条记录的最大日期,并在下一次请求时存储在数据库中,然后我将使用这个日期。
现在我的问题有时取决于网络速度和检索到的记录数,这五分钟可能会在第一个请求仍在执行时失效。我不希望在第一个请求完成之前开始第二个请求。
如何才能最好地检查第一个请求是否已完成?
【问题讨论】:
-
您说请求每 5 分钟触发一次。您是否预计应用程序 A 将数据放入应用程序 B 所需的处理需要 5 分钟?
-
应用程序 A 中的数据检索出了点问题。我怀疑数据库和/或查询设计不当。简单地检索几千条记录的任何查询都不应该花费将近 5 分钟的时间。我建议您发布一个数据库问题,其中包含您的数据库和查询的详细信息,以帮助您弄清楚为什么需要这么长时间。
-
@ext0 是的,在某些情况下,我预计它需要很长时间,因为它每分钟生成超过 350000 个,具体取决于每个月的时间。
-
@ClintB 不幸的是,我无权访问数据库。我们正在将两个系统集成在一起。
-
您是否有硬性要求将调用控制器的逻辑保留在 Windows 服务中?或者其他方式也可以,只要您在 5 分钟内一次只能触发一个请求?
标签: c# asp.net-web-api httpclient