JAVA技术文章IT技术篇

异步处理 小结

2019-03-27  本文已影响2人  古月的小七

我们先来看一下Salesforce当中有哪些异步处理方法:

1.Future 方法

运行在自己的线程当中,只有在系统资源可用的时候才会启动。如果你在一个trigger或者DML操作之后callout,你必须要用一个@future或者queueable方法。

Future方法必须是一个返回值为void的静态方法,参数类型必须是原始数据类型。在写对应的测试类时,需要把测试代码在包围在startTest和stopTest方法里面。

针对Future来说,如果对同一条数据操作,可能会造成锁的情况。

在VF controller里面是不可以用Future方法的。

不能在一个future方法里面去调用另一个future方法。

getContent 和 getContentAsPDF 方法不能被调用在future方法里面

2.Batch Apex

运行大量Job的时候和有些会达到处理限制的时候。

Batch class必须实现Batchable接口,这个接口里有三个方法,分别是start,execute,finish,其中start和finish方法当中只执行一次,所以在batch当中,DML操作,在start方法和finish方法中,要注意Salesforce的Limitation。execute方法中,每个trunk默认大小是200,你可以根据业务修改trunk的大小,但是trunk越小执行时间越长。

Batch Apex是典型的无状态。如果你要记录总共修改的记录,你需要实现Database.stateful来追踪其状态。

3.Queueable Apex

和Future方法相似,但是允许允许更复杂的数据类型和提供额外的Job Chaining。不同的点是Queueable可以接受非原始数据类型。还有就是Future方法更灵活,有时可以同步,有时可以异步。

在使用Chaining Jobs的时候,测试类里面必须使用Test.isRunningTest()规避。

在一个Transaction中最多有50个Job

4.Scheduled Apex

在特定时间去运行

Scheduled Test Class

Finally, CronTrigger 这个可以获取到异步类的信息。

上一篇下一篇

猜你喜欢

热点阅读