【问题标题】:apex scheduler- what if scenarios?顶点调度程序 - 如果场景怎么办?
【发布时间】:2012-06-16 22:35:02
【问题描述】:

我正在研究使用 apex 调度程序来运行批处理作业。我们可以随时运行它,比如凌晨 3 点,当流量很低时,但我试图预测一些“哦,废话”的场景。你们能帮我回答这些问题吗?

设置:

当用户修改一个区域时,可以更新 10 万条记录。

问题:

  1. 有哪些实际情况会导致我的作业无法终止?我想到了一个场景——当用户正在编辑一个恰好在其中一个批处理中的联系人时。

  2. 在处理不会终止的作业时,有哪些好的做法?我正在考虑在此之后 2 小时安排另一个批处理作业,但我看不到我的老板喜欢这样。我想过也许在 finish() 方法中做点什么——但不知道具体是什么。

【问题讨论】:

    标签: salesforce apex-code scheduler


    【解决方案1】:
    1. 批次中的任何错误都会导致该批次无法正确完成。
    2. 我建议您进行某种检查以了解您处理了所有内容。我通常用于批次的是以某种方式标记需要处理的记录,以将它们与不需要处理的记录区分开来。当我完成处理一个批次时,我将记录标记为已处理。然后,您可以检查 finish() 方法是否仍有任何记录需要处理并重新安排批处理以再次运行。

    【讨论】:

    • 感谢阿库里亚诺。我对 #2 有一个想法 在我的批处理类中,我的 start 方法返回 100k 的联系人。在我的执行中,我正在考虑使用 FOR UPDATE 锁定批处理中的记录(请参阅链接)。这是好习惯吗?还是我会为自己制造问题? pastebin.com/qxVVxJCi
    • 由于锁定机制总是如此,您需要小心用户无法工作和死锁。如果您在没有用户工作的时间段中运行批处理作业,那么您应该没有问题。如果您不能保证没有使用的时间,请尝试使锁尽可能短。并确保正确处理任何错误。有关详细信息,请参阅salesforce.com/us/developer/docs/apexcode/Content/…
    猜你喜欢
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多