Empiece a realizar un seguimiento de su progreso
Inicio de Trailhead
Inicio de Trailhead

Fundamentos del procesamiento asíncrono

Nota

Nota

¡Atención Trailblazer!

Salesforce cuenta con dos interfaces de usuario de escritorio: Lightning Experience y Salesforce Classic. Este módulo está diseñado para Salesforce Classic.

Puede aprender sobre el cambio entre interfaces, la activación de Lightning Experience y más en el módulo Fundamentos de Lightning Experience aquí en Trailhead.

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 con Dance 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 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 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 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.

Adaptabilidad

Al 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 superiores

Los 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
Future Methods 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.

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 de múltiples arrendatarios implica algunos retos:

Garantizar la equidad del procesamiento

Asegúrese de que cada cliente dispone 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 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.

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. La transacción se gestiona en este paso para garantizar que los mensajes no se pierdan en caso de producirse un error de procesamiento.

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 “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.