Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.
Batchable vs. @future vs. Queueable
The Batchable Interface
• When should I use it?
- Complex long running processes (thousands of records)
- Asynchronous pro...
The Batchable Interface
• Advantages
- It can process up to 50m records
- It can be scheduled to run at a particular time
...
@future method
• When should I use it?
- When it’s not a batch (group = 2 or more)
- Asynchronous processing (simple and o...
@future method
• Advantages
- Asynchronous processing without a concurrent limit (queue)
- Easier and quicker to implement...
The Queueable Interface
• When should I use it?
- When Batch and @future need to meet in the middle
- Chaining jobs
- You ...
The Queueable Interface
• Advantages
- Asynchronous processing with non-primitive arguments
- Easy access to the job ID
- ...
Which one to use?
Batchable @future Queueable
- Good at processing
large number of
records (50m) and tasks
are not time-cr...
Questions?
Próxima SlideShare
Cargando en…5
×

Batchable vs @future vs Queueable

10.518 visualizaciones

Publicado el

Salesforce Melbourne DUG - Batchable vs @future vs Queueable

Publicado en: Software
  • You may like to update the slideshare, After Winter 16 release, getContent() and getContentAsPdf() both are allowed in Asynch apex. That means you can use it in @future or Queueable interface.
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí

Batchable vs @future vs Queueable

  1. 1. Batchable vs. @future vs. Queueable
  2. 2. The Batchable Interface • When should I use it? - Complex long running processes (thousands of records) - Asynchronous processing - Scheduled jobs • How can I define a Batch? - Implement Database.Batchable - Define start(), execute() and finish() methods
  3. 3. The Batchable Interface • Advantages - It can process up to 50m records - It can be scheduled to run at a particular time • Disadvantages - Only 5 concurrent batch jobs running at a time* - It’s difficult to troubleshoot - Execution may be delayed based on server availability - @future methods are not allowed - Can’t use getContent/getContentAsPDF methods - and a few more governor limits…
  4. 4. @future method • When should I use it? - When it’s not a batch (group = 2 or more) - Asynchronous processing (simple and often) - Long-running operations (callouts to external web services) - Separating mixed DML operations • How can I define @future method? - @future annotation - Must be static and return void - Specify (callout=true) to allow callouts
  5. 5. @future method • Advantages - Asynchronous processing without a concurrent limit (queue) - Easier and quicker to implement as opposed to Batch • Disadvantages - Parameters passed in can be only of Primitive type - Can’t use getContent/getContentAsPDF methods - Can’t chain @future methods - Difficult access to job ID
  6. 6. The Queueable Interface • When should I use it? - When Batch and @future need to meet in the middle - Chaining jobs - You need @future method with support for non-primitive types - Asynchronous monitoring • How can I define Queueable Apex? - Implement the Queueable interface - Define execute() method • How can I enqueue a job? - ID jobID = System.enqueueJob(new MyQueueableClass());
  7. 7. The Queueable Interface • Advantages - Asynchronous processing with non-primitive arguments - Easy access to the job ID - Chaining jobs* • Disadvantages - Can’t have more than 1 job in the chain that does callouts
  8. 8. Which one to use? Batchable @future Queueable - Good at processing large number of records (50m) and tasks are not time-crucial - Can be scheduled to run at a certain time - Maximum of 5 concurrent jobs running at a time - You need good error handling for troubleshooting - Quick async processing (typically 1 record at a time) e.g. avoid mixed DML or a web service callout - Faster than a Batch - Easy to implement - Only accepts primitive type arguments - Can’t chain jobs - Hard to monitor - Quick async processing that supports primitive types - Faster than a batch - Ability to chain jobs - Can’t have more than 1 job doing callouts within the chain - Can be monitored
  9. 9. Questions?

×