Fundamentos del procesamiento asíncrono
Objetivos de aprendizaje
Después de completar esta unidad, podrá:
- Explicar las diferencias entre el procesamiento síncrono y el procesamiento asíncrono.
- Elegir qué tipo de Apex asíncrono usar en diversos escenarios.
Apex asíncrono
En resumen, Apex asíncrono se usa para ejecutar procesos en un subproceso independiente y en un momento posterior. Un proceso asíncrono es un proceso o una función que ejecuta una tarea “en segundo plano” sin que el usuario tenga que esperar a que finalice la tarea.
Veamos un ejemplo real. Supongamos que tiene una lista de tareas que debe realizar antes de su práctica semanal de danza: Su automóvil hace un ruido extraño, necesita un gel para el pelo de otro color y debe ir a recoger el uniforme a casa de su madre. Si lleva el automóvil al mecánico y espera hasta que se solucione antes de completar el resto de su lista, está realizando un procesamiento síncrono. Si deja su automóvil en el taller mecánico y se dedica a completar las otras tareas hasta que el mecánico llame, está realizando un procesamiento asíncrono. Con el procesamiento asíncrono, puede completar más tareas en el mismo margen de tiempo.
Apex asíncrono es genial para llamadas a sistemas externos, un tipo de operaciones que requieren límites superiores y un código que se debe ejecutar en un momento determinado. Las ventajas clave del procesamiento asíncrono son las siguientes:
- Eficiencia para el usuario. Supongamos que tiene un proceso que realiza muchos cálculos en un objeto personalizado siempre que se crea una oportunidad. El tiempo necesario para ejecutar estos cálculos se puede traducir en un inconveniente de escasa importancia o en un obstáculo por lo que respecta a la productividad del usuario. Dado que estos cálculos no afectan lo que está haciendo el usuario, ponerlos en espera para un proceso de ejecución prolongado no implica un uso eficiente del tiempo. Con el procesamiento asíncrono, el usuario puede seguir trabajando mientras ejecuta su procesamiento en segundo plano. El usuario puede ver los resultados según le convenga.
- Escalabilidad. Al permitir que determinadas funciones de Salesforce Platform se ejecuten cuando los recursos estén disponibles en algún momento en el futuro, los recursos se pueden gestionar y adaptar rápidamente. Esto permite que la plataforma procese más trabajos mediante el procesamiento paralelo.
- Límites superiores. Los procesos asíncronos se inician en un subproceso nuevo con límites reguladores y de ejecución superiores.
Hay distintos tipos de Apex asíncrono. Aunque examinaremos estos casos en profundidad en breve, a continuación, se incluye una descripción general de alto nivel.
Tipo | Descripción general | Escenarios comunes |
|---|---|---|
Métodos futuros | Se ejecutan en su propio subproceso y no se inician hasta que los recursos estén disponibles. Se recomienda que use Apex para inclusión en cola, en lugar de los métodos futuros de Apex. La inclusión en cola tiene los mismos casos de uso que los métodos futuros, pero ofrece beneficios adicionales. | Llamadas de servicio web. |
Apex por lotes | Se ejecutan trabajos de gran volumen, lo que superaría los límites de procesamiento normales. | Limpieza de datos o archivado de registros. |
Apex para inclusión en cola | Es similar a los métodos futuros, pero ofrece la posibilidad de encadenar trabajos adicionales y permite el uso de tipos de datos más complejos. | Realización de operaciones de procesamiento secuenciales con servicios web externos. |
Apex programado | Apex programado para su ejecución en un momento especificado. | Tareas diarias o semanales. |
Además, cabe destacar que estos distintos tipos de operaciones asíncronas no están excluidas mutuamente. Por ejemplo, un patrón común es iniciar un trabajo de Apex por lotes a partir de un trabajo de Apex programado.
Siga el proceso con Trail Together
¿Desea seguir el proceso con un instructor a medida que realiza este paso? Eche un vistazo a este video, que forma parte de la serie Trail Together en Trailhead Live. Encontrará un vínculo a la sesión completa en la sección Recursos.
Límites reguladores y de ejecución superiores
Una de las principales ventajas de ejecutar Apex asíncrono es la aplicación de límites reguladores y de ejecución superiores. Por ejemplo, el número de consultas SOQL se duplica de 100 a 200 cuando se usan llamadas asíncronas. El tamaño de la pila y el tiempo de CPU máximo son superiores en una medida similar en el caso de las llamadas asíncronas.
Apex asíncrono no solo tiene límites superiores, sino que además los límites reguladores son independientes de los límites de la solicitud sincrónica que puso en cola la solicitud asíncrona inicialmente. En definitiva, tiene dos invocaciones de Apex independientes y una capacidad de procesamiento superior al doble. Esto es práctico en aquellos casos en los que desea el mayor volumen de procesamiento posible en la transacción actual y continuar de forma asíncrona cuando empieza a acercarse a los límites reguladores.
Para obtener más información sobre los tamaños de pila, los tiempos de ejecución máximos y los límites en general, consulte Reguladores y límites de ejecución.
Cómo funciona el procesamiento asíncrono
El procesamiento asíncrono en un entorno multiusuario, presenta algunos retos adicionales:
- Garantizar la equidad del procesamiento. Asegúrese de que cada cliente disponga de una parte equitativa de los recursos de procesamiento.
- Garantizar la tolerancia a errores. Asegúrese de que no se pierda ninguna solicitud asíncrona debido a errores del equipo o el software.
La plataforma usa un marco de procesamiento asíncrono basado en la cola. Este marco se usa para gestionar las solicitudes asíncronas para varias organizaciones en cada instancia. El ciclo de vida de una solicitud consta de tres partes:
- Inclusión en la cola. La solicitud se incluye en la cola. Puede ser una solicitud por lotes de Apex, una solicitud de método futuro Apex, o solicitudes de muchos otros tipos. La plataforma incluirá las solicitudes en la cola junto con los datos correspondientes para procesar las solicitudes.
- Persistencia. Una solicitud incluida en la cola es persistente. Las solicitudes se almacenan en un medio de almacenamiento persistente para garantizar la recuperación en caso de error y ofrecer la capacidad necesaria para las transacciones.
- Exclusión de la cola. La solicitud en la cola se elimina de la cola y se procesa. Si se produce un error en el procesamiento, el control de transacciones garantiza que no se pierda ninguna solicitud.
Cada solicitud es procesada por un gestor. El gestor es el código que ejecuta las funciones necesarias para un tipo de solicitud específico. Los gestores se ejecutan mediante un número finito de subprocesos de trabajo en cada uno de los servidores de aplicaciones que componen una instancia. Los subprocesos requieren que el trabajo se desarrolle en el marco de la inclusión en cola y, tras la recepción, se inicia un gestor específico para ejecutar el trabajo.
Conservación de recursos
El procesamiento asíncrono tiene una prioridad inferior en comparación con la interacción en tiempo real mediante el navegador y la API. Para garantizar que haya recursos suficientes para controlar un aumento de los recursos de computación, el marco de inclusión en cola monitorea los recursos del sistema, como la memoria del servidor y el uso de CPU, y reduce el procesamiento asíncrono cuando se superan los umbrales. Esta es una forma elaborada de decir que el sistema de múltiples arrendatarios se protege a sí mismo. Si una organización intenta usar más recursos de los que le corresponden, el procesamiento asíncrono se suspende para esa organización hasta que se alcance un umbral normal. No hay ninguna garantía en lo que respecta al tiempo de procesamiento, pero al final todo funciona correctamente.
Recursos
- Guía del desarrollador de Apex: Límites de ejecución y reguladores
- Guía del desarrollador de Apex: Apex asíncrono
- Centro de arquitectura: Procesamiento asíncrono