Método futuro vs. Apex en cola en Salesforce

Publicado: 2023-11-20

En el vertiginoso mundo del desarrollo de Salesforce, es fundamental comprender las mejores herramientas y métodos para una codificación eficiente y efectiva. Este artículo profundiza en dos conceptos clave: método futuro y ápice en cola. Ambas son técnicas poderosas utilizadas en Salesforce para manejar operaciones asincrónicas, pero tienen características y casos de uso distintos.

Exploraremos los matices de Future Method y Queueable Apex, comparando sus funcionalidades, ventajas y cuándo usar cada uno en sus proyectos de Salesforce. Si es un desarrollador experimentado o nuevo en Salesforce, esta comparación le proporcionará información valiosa que le ayudará a tomar decisiones informadas para optimizar su código.

¡Estén atentos mientras desentrañamos las complejidades y revelamos el potencial de Future Method y Queueable Apex en Salesforce!

Tabla de contenido

¿Por qué el método futuro?

Si desea ejecutar procesos en un hilo separado, en un momento posterior y desea ejecutar el código de forma asincrónica, debemos utilizar métodos futuros.

¿Cuando se utiliza?

Se utilizan para operaciones de larga duración, como llamadas a servicios web externos o cualquier operación que desee ejecutar en su propio hilo.

¿Por qué poner en cola Apex?

Like the Future también se utiliza para ejecutar código asincrónico y le permite agregar trabajos en una cola y mejorar la forma de ejecutar código asincrónico en comparación con el método futuro.

¿Cuando se utiliza?

Para los procesos de Apex que se ejecutan durante mucho tiempo, como operaciones extensas de bases de datos o llamadas de servicios web externos, puede ejecutarlos de forma asincrónica implementando la interfaz Queueable.

Lea también: ¿Cómo implementar Salesforce SSO utilizando OAuth?

Diferencias entre Apex futuro y en cola:

Método futuro Apex en cola
1. Future nunca funcionará con SObjects o tipos de objetos.

2. Cuando utilizamos el método futuro no podemos monitorear los trabajos que están en proceso.

3. El método futuro no se puede llamar dentro de la clase futura o por lotes.

4. El método futuro nunca estará en cola.

1. Los trabajos en cola pueden contener la variable miembro como SObjects o tipos de Apex personalizados.

2. Cuando utilice trabajos en cola, el AsyncApexJob que podremos monitorear será como trabajos programados.

3. Se puede llamar a Apex en cola desde la clase futura y por lotes.

4. El uso de Apex en cola encadenará trabajos en cola y en Developer Edition son solo 5 trabajos.

Apex en cola

La clase Queueable es una clase que se crea implementando la interfaz predefinida "Queueable". Esta interfaz permite la forma de ejecutar sus trabajos asincrónicos o código de trabajo en comparación con el método futuro. Le permitirá monitorear los trabajos que están en la cola (esta cola se crea mediante la interfaz Queueable para que los trabajos puedan ejecutarse de forma asincrónica).

Sintaxis:

 public class <Nombre de la clase en cola> implementa Queueable {
//Este es el único método contenido en la interfaz Queueable y necesario para heredar este método en la clase Queueable.
ejecución pública nula (contexto QueueableContext) {
//Código que debe ejecutarse
}
}

Cualquier proceso de Apex que demore mucho tiempo en ejecución, como operaciones extensas de bases de datos o llamadas de servicios web externos, puede ejecutarlos de forma asincrónica implementando la interfaz Queueable y agregando un trabajo a la cola de trabajos de Apex.

Su trabajo de Apex asincrónico se ejecuta en segundo plano en su propio subproceso y no retrasa la ejecución de su lógica principal de Apex. Cada trabajo en cola se ejecuta cuando los recursos del sistema están disponibles. Una ventaja de utilizar los métodos de interfaz es que algunos límites del regulador son más altos que para Apex sincrónico, como los límites de tamaño del montón.

Método Apex futuro

Future apex se utiliza para ejecutar procesos en un subproceso separado, más adelante, cuando los recursos del sistema estén disponibles. Para usar Future Apex, no necesitamos crear ninguna clase, solo necesitamos usar la anotación "@future" para identificar métodos que se ejecutan de forma asincrónica y para indicar que el método descrito debajo de esta anotación es un método futuro.

Cuando se utiliza el procesamiento sincrónico, todas las llamadas a métodos se realizan desde el mismo subproceso que ejecuta el código de Apex y no se puede realizar ningún procesamiento adicional hasta que se complete el proceso. Puede utilizar métodos futuros para cualquier operación que desee ejecutar de forma asincrónica en su propio hilo. Esto proporciona los beneficios de no impedir que el usuario realice otras operaciones y proporciona límites de ejecución y control más altos para el proceso.
Sintaxis:

 clase global <NombreClase> {
// A continuación se muestra una anotación futura que define el método dado como método futuro.
@futuro
public static void <FutureMethodName>(List<Id> recordIds) {
Lista de cuentas <Contacto> = [Seleccione Id., Nombre, Apellido del contacto donde Id. EN:recordIds];
// procesa registros de contactos para hacer cosas increíbles
}
}

Lea también: ¿Cómo conectar Pipedrive y la integración de Salesforce?

Los métodos futuros se suelen utilizar para

Llamadas a servicios web externos. Si realiza llamadas desde un desencadenador o después de realizar una operación DML, debe utilizar un método futuro o en cola. Una llamada en un desencadenador mantendría abierta la conexión de la base de datos durante la vida útil de la llamada.

Operaciones que desea ejecutar en su propio hilo cuando el tiempo lo permite, como algún tipo de cálculo o procesamiento de registros que requiere muchos recursos.

Nota: El motivo de los objetos no se puede pasar como argumentos a un método futuro porque el objeto puede cambiar entre el momento en que llama al método y el momento en que realmente se ejecuta. Los métodos futuros se ejecutarán cuando los recursos del sistema estén disponibles. Cuando se ejecuta un método futuro, puede tener un valor de objeto antiguo, lo que puede causar que sucedan todo tipo de cosas malas.

Cosas para recordar

  • El método futuro debe ser estático.
  • El tipo de devolución debe ser nulo.
  • Los parámetros especificados deben ser tipos de datos primitivos, matrices de tipos de datos primitivos o colecciones de tipos de datos primitivos.
  • Puede llamar a métodos futuros de la misma manera que llama a cualquier otro método. Sin embargo, un método futuro no puede llamar a otro método futuro.
  • No más de 50 llamadas a métodos por invocación de Apex
  • Las llamadas asincrónicas, como @future o ejecutarBatch, llamadas en un bloque startTest, stopTest, no cuentan para sus límites para la cantidad de trabajos en cola
contratar desarrolladores de salesforce

Ejemplo de método futuro y clase en cola

Método futuro y clase en cola

Aquí obtengo el valor de 4 monedas en el dólar canadiense. Para GBP, USD, AUD, CAD. Y guardar el valor en una moneda de metadatos personalizada. Para HTTPREQUEST aquí he utilizado el método Future. Y debido a que se actualizan varios registros al mismo tiempo mientras se ejecuta el lote, he utilizado Queueable Apex, que actualiza varios registros a la vez.

Actualización personalizada de metadatos personalizados

Actualización personalizada de metadatos personalizados

Clase en cola

Clase en cola

Llamar al método Future y enviar la lista para actualizar en la clase Queueable

Llamar al método futuro

Emizentech es una empresa de consultoría de Salesforce auténtica y experimentada y nuestros desarrolladores expertos en Salesforce pueden brindarle asistencia profesional para su próximo proyecto de Salesforce.

Lea también: ¿Cómo crear un componente de mapa Lightning de Salesforce?