【发布时间】:2010-09-14 09:51:58
【问题描述】:
在我们的应用程序中,我们需要通过 API 为我的应用程序的用户从 paypal 导入交易数据并存储在数据库中。我有成千上万的用户(现在大约 5k),而且每天都在增加。
此应用程序是一个 .net windows 服务。
这会按小时为所有用户导入数据。目前我们正在为用户一个接一个地导入数据,但有时会发生一个用户的数据可能太大以至于需要大约 5 小时才能获取他的全部数据,因此我们会阻止其他用户,直到此用户数据导入完成。对于所有其他用户来说,这个每小时导入一次完全没有用。
为了避免这种情况,我们考虑为每个用户导入创建线程,并使用 Windows 服务每小时运行一次。在这里,我们需要考虑任何时间点的带宽,因为所有线程将同时启动。这是一个问题吗?
现在,我想知道我们的新实现是否正确?我也想知道它通常是怎么做的?如果有人遇到过这种功能,请告诉我们它是如何完成的。
如果我的问题不够清楚,请告诉我,我会提供更多信息。
编辑:如果我从一个 IP 向 Paypal 发送这么多请求,它是如何处理的?知道它是否限制每个 IP 的请求?
更新:感谢所有建议和反馈。
我想使用 jgauffin 的解决方案,因为它是 ThreadPool 的完美模仿。但是这里我需要更多的特性,比如动态改变线程限制和递归调用回调方法。
经过大量研究和分析线程池,我决定使用SmartThreadPool,它是基于线程池逻辑但具有更多功能的。它非常好,完美地服务于我的目的。
【问题讨论】:
标签: c# .net windows-services import paypal