Fundamentos del procesamiento asíncrono
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 con Dance Revolution. Su coche 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. Puede llevar el coche al mecánico y esperar hasta que lo reparen antes de realizar el resto de tareas de la lista (procesamiento síncrono) o bien puede dejarlo en el taller, hacer otras tareas y pedir que lo llamen del taller cuando el coche esté reparado (procesamiento asíncrono). Si desea llegar a casa a tiempo para planchar el traje antes de la práctica, el procesamiento asíncrono le permite hacer más tareas en el mismo periodo de tiempo sin necesidad de esperar.
Apex asíncrono se suele usar 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 del usuarioSupongamos 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 a lo que está haciendo el usuario, ponerlos en espera para un proceso de ejecución prolongado no es uso eficiente del tiempo. En el caso del procesamiento asíncrono, el usuario puede continuar con su trabajo, ya que el procesamiento se puede realizar en segundo plano y el usuario puede ver los resultados cuando lo considere oportuno.
AdaptabilidadAl permitir que determinadas funciones de la plataforma 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 superioresLos procesos asíncronos se inician en un subproceso nuevo con límites reguladores y de ejecución superiores. De hecho, ¿no es el deseo de todos aplicar límites reguladores y de ejecución superiores?
Apex asíncrono funciona con una amplia variedad de matices. 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. | Llamada 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 se excluyen 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, 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.
No solo se aplican límites superiores en el caso del procesamiento asíncrono, sino que además los límites reguladores son independientes de los límites de la solicitud síncrona que pone en cola la solicitud asíncrona inicialmente. Parece obvio, pero básicamente 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.
Si le ha parecido amena la lectura sobre los tamaños de pila, los tiempos de ejecución máximos y los límites en general, consulte Execution Governors and Limits para conocer una serie de detalles interesantes.
Cómo funciona el procesamiento asíncrono
El procesamiento asíncrono, en un entorno multiusuario, presenta algunos retos:
Garantizar la equidad del procesamientoAsegúrese de que cada cliente dispone una parte equitativa de los recursos de procesamiento.
Garantizar la tolerancia a erroresAsegúrese de que no se pierda ninguna solicitud asíncrona debido a errores del equipo o del software.
La plataforma utiliza un marco de procesamiento asíncrono basado en colas. 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:
La solicitud se incluye en la cola. Puede ser una solicitud por lotes de Apex, una solicitud de Apex futuro o solicitudes de muchos otros tipos. La plataforma incluirá las solicitudes en la cola junto con los datos correspondientes para procesar las solicitudes.
PersistenciaUna 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 colaLa 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 la procesa 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 “consumir” más recursos de los que le corresponden, el procesamiento asíncrono se suspende hasta que se alcanza un umbral normal. En resumen, no hay ninguna garantía por lo que respecta al tiempo de procesamiento, pero al final todo funciona correctamente.