Funciones Job
Introducción
Las Job Functions son un tipo de función que puedes invocar cuando se ejecuta un job en un Function Job Pool. Programarás tu lógica de negocio personalizada en esta función, y se invocará en un momento programado cuando se ejecute un job para activar la función en el job pool.
Una Job Function es una función no HTTPS, como las Event Functions. Esta función no tendrá un endpoint, y la función solo se invocará cuando se ejecute un job en el function job pool con esta job function particular como su tipo de destino.
Puedes programar tu Job Function en los siguientes runtimes:
Al igual que las otras Serverless Functions, puedes crear, inicializar y desplegar Job Functions desde el CLI. También puedes subir tu Job Function como un archivo zip a la consola.
Sin embargo, dado que las Job Functions son funciones no HTTPS, su URL no es accesible como las funciones Basic I/O o Advanced I/O. Para probar una Job Function, puedes usar el siguiente comando CLI y usar el function shell.
Una Job Function no devuelve ninguna respuesta más que determinar si la ejecución de la función fue un éxito o un fallo.
También puedes ver y monitorear el rendimiento de la Job Function usando los siguientes componentes de Catalyst DevOps:
- Logs: Puedes ver, gestionar y monitorear todas las ejecuciones relacionadas con Job Functions.
- Application Performance Monitoring: Puedes usar este componente para obtener información detallada sobre el rendimiento de la Job Function.
Beneficios
-
Una Job Function se puede crear, inicializar y desplegar usando el robusto CLI de Catalyst. Esto asegura que todas las dependencias requeridas para desplegar la función se instalarán automáticamente cuando inicialices la función a través del CLI.
-
Las Job Functions también se pueden crear en la consola de Serverless de Catalyst a través del Editor.
-
Las Job Functions contendrán el código boilerplate ideal con el cual puedes programar cualquier lógica de negocio personalizada, y el resto de los requisitos del backend serán manejados por Catalyst.
Código boilerplate de la función
El código boilerplate presente en la Job Function cuando la creas en la consola o la inicializas usando el CLI se muestra a continuación:
import java.util.logging.Level;
import java.util.logging.Logger;
import com.catalyst.Context;
import com.catalyst.job.JOB_STATUS;
import com.catalyst.job.JobRequest;
import com.catalyst.job.CatalystJobHandler;
import com.zc.common.ZCProject;
import com.zc.component.cache.ZCCache;
public class Sample implements CatalystJobHandler {
private static final Logger LOGGER = Logger.getLogger(Sample.class.getName());
@Override
public JOB_STATUS handleJobExecute(JobRequest request, Context arg1) throws Exception {
try {
ZCProject.initProject();
Object eventData = request.getAllJobParams();
if (eventData != null) {
LOGGER.log(Level.SEVERE, "Data is" + eventData.toString());
}
LOGGER.log(Level.SEVERE, "Project Details " + request.getProjectDetails().toString());
ZCCache.getInstance().putCacheValue("JobSample", "Working", 1 l);
LOGGER.log(Level.SEVERE, "Inserted SucessFully:)");
} catch (Exception e) {
LOGGER.log(Level.SEVERE, "Exception in Job Function", e);
return JOB_STATUS.FAILURE;
}
return JOB_STATUS.SUCCESS;
}
}
/**
*
-
@param {import("./types/job").JobRequest} jobRequest
-
@param {import("./types/job").Context} context
*/
module.exports = (jobRequest, context) => {
console.log(‘Hello from index.js’);
// entrada de la función: { job_details: { job_meta_details: { params: { key: ‘value’ } } } }
/**
- JOB REQUEST FUNCTIONALITIES
*/
const projectDetails = jobRequest.getProjectDetails(); // para obtener los detalles del proyecto actual
const jobDetails = jobRequest.getJobDetails(); // para obtener los detalles del job actual
const jobMetaDetails = jobRequest.getJobMetaDetails(); // para obtener los metadatos del job actual
const jobpoolDetails = jobRequest.getJobpoolDetails(); // para obtener los detalles del function job pool actual
const getJobCapacityAttributes = jobRequest.getJobCapacityAttributes(); // para obtener la capacidad del job actual
const allJobParams = jobRequest.getAllJobParams(); // para obtener todos los parámetros proporcionados a la función de job
const jobParam = jobRequest.getJobParam(‘key’); // para obtener el valor de un parámetro particular proporcionado a la función de job
/**
- CONTEXT FUNCTIONALITIES
*/
context.closeWithSuccess(); //fin de la aplicación con éxito
// context.closeWithFailure(); //fin de la aplicación con error
};
import logging
def handler(job_request, context):
logger = logging.getLogger()
logger.info(‘Hello from main.py’)
# function input: { job_details: { job_meta_details: { params: { key: 'value' } } } }
‘‘‘JobRequest Functionalities’’’
job_details = job_request.get_job_details() # get the details of the current job
project_details = job_request.get_project_details() # get the details of the current project
job_meta_details = job_request.get_job_meta_details() # get the job meta of the current job
job_pool_details = job_request.get_job_pool_details() # get the current functions job pool details
job_capacity_attributes = job_request.get_job_capacity_attributes() # get the current jobs capacity
all_job_params = job_request.get_all_job_params() # get all the parameters supplied to the job function
job_param = job_request.get_job_param(‘key’) # get the value of a particular parameter supplied to the job function
‘‘‘Context Functionalities’’’
remaining_execution_time_ms = context.get_remaining_execution_time_ms() # get the maximum allowed execution time for the job functions
max_execution_time_ms = context.get_max_execution_time_ms() # get the remaining execution time for this job function
context.close_with_success() # conclude the function execution with a success response
Probar Job Functions usando Catalyst CLI
Las Job Functions son funciones no HTTPS como las funciones Event e Integration. No puedes invocar una Job Function manualmente ni probarla en la consola. Sin embargo, puedes generar payloads de ejemplo y probar la función usando el Function Shell presente en el Catalyst CLI.
El siguiente comando CLI generará un payload de ejemplo, y puedes usarlo para probar la función en el entorno local.
Puedes alimentar este payload mientras ejecutas la Job Function requerida y validar la salida.
Argumentos de Job Function
Una Job Function de Catalyst soporta dos argumentos en Java: JobRequest y Context.
El argumento JobRequest contiene los siguientes métodos integrados:
- JobRequest.getProjectDetails(): Se usa para obtener los detalles del proyecto, como el ID del proyecto y el nombre del proyecto.
- JobRequest.getJobDetails(): Se usa para obtener todos los detalles del Job incluyendo el Job ID, el Job Pool con el que está asociado y el nombre del Job.
- JobRequest.getJobMetaDetails(): Se usa para obtener todos los meta detalles del Job incluyendo detalles sobre el tiempo de ejecución, retraso en el despacho y detalles sobre los intentos de reintento.
- JobRequest.getJobpoolDetails(): Se usa para obtener todos los detalles del Job Pool. Los detalles incluyen el Job Pool ID, el nombre del Job Pool y el tipo de Job Pool.
- JobRequest.getJobCapacityAttributes(): Se usa para obtener todos los detalles sobre la memoria asignada para el Function Job Pool.
- JobRequest.getAllJobParams(): Se usa para obtener todos los parámetros (pares clave-valor) pasados a la función.
- JobRequest.getJobParam(String key): Se usa para obtener el valor de los parámetros pasando la clave como string a la función.
El argumento Context contiene los siguientes métodos integrados:
- Context.getRemainingExecutionTimeMs(): Se puede usar para obtener el tiempo de ejecución restante de una job function.
- Context.getMaxExecutionTimeMs(): Este método se puede usar para obtener el tiempo máximo de ejecución de una job function, que es un valor constante de 15 minutos.
Una Job Function de Catalyst soporta dos argumentos en Node.js: jobDetails y context.
El argumento jobDetails contiene los siguientes métodos integrados:
- jobDetails.getJobDetails(): Se usa para obtener todos los detalles del Job incluyendo Job ID, el Job Pool con el que está asociado y el nombre del Job.
- jobDetails.getJobMetaDetails(): Se usa para obtener todos los meta detalles del Job incluyendo detalles sobre el tiempo de ejecución, retraso en el despacho y detalles sobre los intentos de reintento.
- jobDetails.getJobPoolDetails(): Se usa para obtener todos los detalles del Job Pool. Los detalles incluyen Job Pool ID, nombre del Job Pool y tipo de Job Pool.
- jobDetails.getProjectDetails(): Se usa para obtener los detalles del proyecto, como el ID del proyecto y el nombre del proyecto.
- jobDetails.getJobCapacityAttributes(): Se usa para obtener todos los detalles sobre la memoria asignada para el Function Job Pool.
- jobDetails.getAllJobParams(): Se usa para obtener todos los parámetros (pares clave-valor) pasados a la función.
- jobDetails.getJobParam(key): Se usa para obtener el valor de los parámetros pasando la clave como string a la función.
El argumento context contiene los siguientes métodos integrados:
- context.getRemainingExecutionTimeMs(): Se puede usar para obtener el tiempo de ejecución restante de una job function.
- context.getMaxExecutionTimeMs(): Este método se puede usar para obtener el tiempo máximo de ejecución de una job function, que es un valor constante de 15 minutos.
- context.closeWithSuccess(): Este método se puede usar para marcar la ejecución de un job como exitosa.
- context.closeWithFailure(): Este método se puede usar para marcar la ejecución de un job como fallida.
Una Job Function de Catalyst soporta dos argumentos en Python: job_details y context.
El argumento job_details contiene los siguientes métodos integrados:
- job_details.get_job_details(): Se usa para obtener todos los detalles del Job incluyendo Job ID, el Job Pool con el que está asociado y el nombre del Job.
- job_details.get_job_meta_details(): Se usa para obtener todos los meta detalles del Job incluyendo detalles sobre el tiempo de ejecución, retraso en el despacho y detalles sobre los intentos de reintento.
- job_details.get_job_pool_details(): Se usa para obtener todos los detalles del Job Pool. Los detalles incluyen Job Pool ID, nombre del Job Pool y tipo de Job Pool.
- job_details.get_project_details(): Se usa para obtener los detalles del proyecto, como el ID del proyecto y el nombre del proyecto.
- job_details.get_job_capacity_attributes(): Se usa para obtener todos los detalles sobre la memoria asignada para el Function Job Pool.
- job_details.get_all_job_params(): Se usa para obtener todos los parámetros (pares clave-valor) pasados a la función.
- job_details.get_job_param(key): Se usa para obtener el valor de los parámetros pasando la clave como string a la función.
El argumento context contiene los siguientes métodos integrados:
- context.get_remaining_execution_time_ms(): Se puede usar para obtener el tiempo de ejecución restante de una job function.
- context.get_max_execution_time_ms(): Este método se puede usar para obtener el tiempo máximo de ejecución de una job function, que es un valor constante de 15 minutos.
- context.close_with_success(): Este método se puede usar para marcar la ejecución de un job como exitosa.
- context.close_with_failure(): Este método se puede usar para marcar la ejecución de un job como fallida.
Última actualización 2026-03-24 17:38:39 +0530 IST
Yes
No
Send your feedback to us
