【发布时间】:2011-10-20 08:33:07
【问题描述】:
我正在使用 Quartz.NET 来安排一个从外部源加载大量数据并保存在数据库中的作业。下载它们后,还必须对其进行一些处理,这将在数据库的不同表中创建额外的记录。
下载器作业是有状态的作业,每分钟运行一次。我面临的问题是,在下载数据后,处理部分的时间可能比我预期的要长得多。
我应该如何处理这个问题?我已经考虑在数据下载完成后创建另一个作业(仅运行一次)。在这种情况下,下载器作业可以每分钟运行一次(这是最初的计划),因为下载部分只需要 5-20 秒,而另一个作业可以在下载器完成后处理这些记录。处理器作业将从数据库中获取标记为未处理的记录并对其进行处理。
这是处理处理的正确方法吗?我来的另一个想法是建立一个 WCF 服务来处理一个下载的元素。这将在每个下载的元素上调用。但是我认为这不会比其他工作方法更好。
【问题讨论】:
-
processing part是 CPU 绑定操作还是涉及繁重的 IO 操作? -
高负载下我的意思是CPU负载,所以过程中没有繁重的IO。
-
好的,你能不能尝试使用 TPL 并行处理这个过程,看看你是否有任何收获,以便在可接受的时间内完成
-
所以你的意思是在同时负责下载的 Quartz.NET 作业中使用 TPL?我会试试这个速度有多快,但我想保持在 1 分钟的时间范围内,以免延迟下一次下载。
标签: c# wcf c#-4.0 scheduling quartz.net