Async Apex Features — When to Use Which

DEX455 - 异步 Apex 完全指南:Queueable、Scheduled、Batch 与 Future 方法

📄 第 236 页 🎬 视频课程

课程章节介绍

同学们,今天我们来聊聊怎么选择最适合你需求的异步 Apex 功能。所谓异步,就是让代码在后台跑,不耽误当前的事务处理。 目前主要有四种:未来的方法、批量 Apex、可排队 Apex 和定时 Apex。我要帮你快速理清它们各自的特点,这样你写新代码的时候就知道该用谁了。 先说最简单的——未来方法。它的存在感很低,用法就是加上 `@future` 注解。当你在一个事务里需要进行长时间操作,比如调用外部服务,又不想让用户干等,就可以用它。但它的限制也明显:只能接收基本数据类型,不能是自定义对象,拿不到作业 ID,也没法链式调用。所以它适合“扔出去就不管”的轻量任务。 如果需要整批整批处理大量数据,那就要看批量 Apex 了。它能把成千上万条记录拆成一个个小批次,每批最多 200 条。关键是,每批开始的时候,Apex 的调控器限制都会重置,所以几乎不用担心超出限制。很适合数据清洗、大批量更新这种长期运行的作业。不过用起来稍微复杂一点,需要实现接口,写 start、execute 和 finish 方法。 现在 Salesforce 更推荐新代码使用可排队 Apex,也就是 Queueable。它可以说是未来方法的升级版:能得到作业 ID,可以传入复杂类型参数,还能链式执行,一个作业结束紧接着启动下一个。它还支持事务终结器,能把最终的提交或回滚状态传递给后续逻辑。灵活性高了很多,所以大多数新功能都优先考虑它。 还有定时 Apex,也就是 Scheduled。你只要设定一个 Cron 表达式,它就能按时执行,比如每天凌晨跑数据同步。它本身很简单,就是实现 Schedulable 接口。 最后还有一个组合技巧:把可排队 Apex 和定时 Apex 结合起来。让定时作业调用一个可排队作业,利用可排队的链式能力做并行处理。这样一来,就能获得类似批量 Apex 的灵活替代方案,同时更加轻量可控。 所以简单总结一下:只是想悄悄做点耗时的简单事,用未来方法;要大规模批处理数据,用批量 Apex;新写的复杂异步逻辑,尽量用可排队 Apex;需要定时触发,就用定时 Apex。你学会了吗?

关键词

Apex Salesforce Developer Guide