Salesfoce Queueable & Future
来源:互联网 发布:mac休眠后继续下载吗 编辑:程序博客网 时间:2024/06/13 22:21
前言
Salesforce并没有提供直接的Thread管理(平台安全和稳定大于山哈)。但是提供了几种异步或者说不在同一Transaction的内置方式:Schedule、Batchable、Queueable和Future Method。在此前的篇幅中有聊过Schedule类似于JAVA中的Timer,是一种定时调度;Batchable是占用长时间去运行批量数据。那么Queueable和Future是我们在程序中更频繁使用的一种异步方式。
介绍
- Queueable:可以控制Apex异步执行进度,并且可以将作业增加到队列中并实施监控,同时可以在运行期间部分限制上限比一般Apex Class要高。相对于Future方式而言,更可靠(保障结果输出,在调用后不会delay)
- Future:一种异步调用方式,有自己的线程不和主线程混用。可以在运行期间提高部分限制上限(默认与一般Apex Class相同)。通常使用场景为避免DML操作和CallOut操作混合在一起(会抛出DML Error)。需要说明的是Future方式并不保证运行结果(调用后可能delay),Future一旦执行后就脱离主线程进入到自己的线程(数据不共享),不提供管控的方式。
总体而言:Queueable和Future是非常类似的,但是又增强了部分功能:提供管理和监控、实施链式作业和参数不同。Future方式的参数只允许为基础类型(例如String,Boolean等),object无法作为参数;Queueable可以使用object作为参数(准确的讲是在执行时允许object进入,这个位置不太好说)。
案例说明
- Queueable
public class AsyncExecutionExample implements Queueable {public void execute(QueueableContext context) {System.enqueueJob(new SecondJob(objects));}}
说明:这是一个简单的链式作业,参数传入可以在构造函数中传入。- 调用方式:
System.enqueueJob(new SecondJob());
- 调用方式:
- 销毁方式:
System.abortJob(rtId);
- Future
global class FutureMethod {@future(callout=true)public static void test(List<ID> recordIds){//logic}}
说明:callout=true代表允许进行CallOut(Web Service/Http)。需要注意的是Future方式只允许为静态方式并且返回类型为空。- 调用方式:在当前线程中以静态方法的方式调用即可;
- 销毁方式:不提供,随着逻辑流完成后停止。
可提高限制
可以高上限为:堆(Heap)、CPU运行时间(CPU)、SOQL查询次数(SOQL)、DML操作次数(DML)和返回数据条数(DMLRows)。设置方式为“limits='2XCPU'”,代表CPU可用时间是正常的双倍(正常:60,000 ms)。
心得
- 正常情况下:Future Method可解决绝大多数的问题,但如果要可靠的结果最好选择Queueable方式实现;
- 使用Future尽可能快的开始执行(避免delay),同时避免大数据量;
- 使用Future方式不允许调用Batch等其他方法(限制比较多);
- 对于接口,例如QueueableContext、BatchableContext等,主要是获取rtId;
- 在使用过程中多参照Limits,以避免触发限制。
参考
https://resources.docs.salesforce.com/208/latest/en-us/sfdc/pdf/salesforce_apex_language_reference.pdf
阅读全文
0 0
- Salesfoce Queueable & Future
- 61、Queueable接口
- Future
- future
- future
- Future
- Future
- [future]
- Future
- Future
- future
- Future
- future
- Future Memories
- Technology & Future
- prospactive future
- graphics future
- 期货 future
- Oracle中增加表空间大小的四种方法
- 框架学习之struts2-03标签、OGNL表达式
- TyvjP1860 后缀数组
- POJ 1087 A Plug for UNIX (最大流)
- springBoot JPA 查询中出现的问题
- Salesfoce Queueable & Future
- 大学英语单词F
- subset
- Python 字符串操作方法大全
- 解析json数据
- 人生第一篇博客,写在这里
- CSU
- 2017 Multi-University Training Contest
- A