无限循环或守护

无限循环或守护

问题描述:

哪个是更好的编写基于Oracle的时间表是“守护程序”重复运行:无限循环或守护

  1. 被运行一次,然后是在无限循环,睡5秒,如果在一个没有什么可做的(不要浪费CPU周期)。

  2. 启动的那个,检查它是否有事要做。如果不是,则结束执行并按计划在5秒后运行。

哪一个,你为什么更喜欢?或者可能是另一种实现?

我个人更喜欢无限循环到一个计划任务。通过无限循环,您可以看到更广泛的交叉激活概述 - 例如,您可以非常轻松地计算连续/类似的失败次数并添加错误恢复。

计划的任务是有效地无状态的,除非你手动给它的状态(文件/ DB/???)

+0

调度程序自动计算失败次数(如果程序确实失败)。空闲运行(我们什么都不做的迭代)不是失败。同样在无限循环解决方案的情况下,我们锁定了很多对象(取决于计划程序)并更新它们,我们需要停止所有守护进程。对于这样的解决方案来说,这是一大缺点 – zerkms 2011-03-08 00:52:10

+0

然后你回答了你自己的问题。当我说失败时,可以检测到非0退出代码,但是您提到了远程资源 - 如果远程服务器关闭,您每次运行处理多个远程资源会发生什么情况?如果只有3种可能的结果是成功的,没有工作和失败,排定的声音就像是要走的路 – Basic 2011-03-08 10:20:24

这听起来像你可能想看看使用队列来执行处理而不是计划任务。该进程可以阻塞队列等待新的工作。

+0

是的,我希望这种形式的答案;-)我使用AQ当它是值得的,当它是一个很好的使用场所,但这种情况并非如此。解释原因有点困难。用2个词语:“守护进程”与远程资源一起工作。 – zerkms 2011-03-08 00:32:23