课程章节介绍
同学们好,咱们今天来看一个很实用的小知识点——`System.enqueueJob` 方法的延迟功能。这个方法呢,不仅可以帮我们把一个可调度的作业扔到异步队列里去执行,还能指定一个“最小延迟”时间,范围是 0 到 10 分钟。
你想象一下,如果咱们在代码里写 `System.enqueueJob(myJob, 5)`,意思就是告诉 Salesforce:“请至少等 5 分钟再开始执行这个作业”。注意这里的“至少”哦,实际开始的时间可能会比 5 分钟稍微晚一点点,但绝不会更早。
那这个延迟有啥用呢?最典型的场景就是跟外部系统打交道。比如外部接口有频率限制,或者轮询太频繁会把每天的调用配额用光。这时候,咱们就故意加一个延迟,让请求慢一点发出去,既保护外部系统,也保护咱们自己的限额。
还有个细节要记住:,在 Apex 测试里面,延迟会被直接忽略,,作业马上就会执行,这样测试就不用傻傻地等,可以跑得飞快。
另外,咱们管理员小伙伴可以在后台做一个很贴心的设置。对于那些没有明确指定延迟参数的作业,管理员可以配一个“默认组织级延迟”,范围是 1 到 600 秒。这样一来,即使开发同学忘了加延迟,平台也会自动加上一层保护,避免所有作业一窝蜂地冲出去。
最后我要特别提醒一句:如果你把延迟设置为 0,那作业就会尽可能快地跑起来。这在处理“链式作业”时很危险,因为一个作业结束立马触发下一个,如果没做好控制,眨眼功夫就可能把每天的异步 Apex 执行上限给打满了。所以,做链式作业时,一定要设计好“减速”或者“停止”机制,比如隔几秒再扔下一个作业,或者设置一个计数器,到了上限就暂停。
好了,这一小结就讲到这里,咱们消化一下,有问题随时问。
关键词
Apex
Salesforce
Developer Guide