Los trabajos HTTP de SchedulerX requieren un agente para su programación. El modo de ejecución serverless necesita un nombre de dominio público, lo que implica riesgos de estabilidad y seguridad. Se recomienda utilizar trabajos HTTP de XXL-JOB.
Requisitos previos
Modo de ejecución serverless: activa un trabajo HTTP mediante una función en la nube o una arquitectura serverless. Este modo es adecuado para llamadas a API públicas y tareas ligeras.
Modo de ejecución con agente: ejecuta un trabajo HTTP mediante un agente de SchedulerX instalado en el dispositivo destino. Primero debe deploy the SchedulerX agent. Este modo es adecuado para llamadas a servicios internos y escenarios de procesamiento complejo.
Puede seleccionar serverless o agent para el parámetro execution mode al crear un trabajo HTTP en la consola.
Modos de ejecución
La siguiente tabla compara los trabajos HTTP de SchedulerX con los trabajos HTTP de MSE-XXLJOB.
|
SchedulerX serverless (obsoleto) |
Agente de SchedulerX |
MSE-XXL-JOB |
|
|
Cliente requerido |
No. Las solicitudes las inicia el servidor. |
Sí. El servidor envía comandos al cliente, que luego inicia la llamada. |
No. Las solicitudes las inicia el servidor. |
|
Método de solicitud |
Actualmente, solo se admiten GET y POST. Se añadirán otros métodos según la demanda de los usuarios. |
||
|
Definición de solicitud |
Solo admite configuración de cookies y parámetros POST. |
Admite todas las configuraciones de parámetros de trabajos HTTP, incluidos Header, Query y Body. |
|
|
Definición de respuesta |
|
||
|
Programación a nivel de segundo |
No. Solo admite programación a nivel de minuto. |
Sí |
Sí |
|
Compatibilidad con URL interna |
No |
Sí |
|
|
Requisito de nombre de dominio |
No |
Sí. Admite acceso a Kubernetes Service sin necesidad de gateway ni nombre de dominio. |
|
|
Compatibilidad con fragmentación por difusión |
No |
Sí |
|
|
Análisis sintáctico del nombre de tarea |
Si el nombre de una tarea contiene caracteres chinos, el backend puede decodificarlo mediante |
||
Crear un trabajo HTTP
Puede crear un trabajo HTTP con el método de solicitud GET o POST.
Paso 1: Configuración básica
GET
-
Despliegue un servicio HTTP accesible.
Si ya cuenta con un servicio HTTP accesible, continúe con Step 2 para crear un trabajo HTTP en la consola de SchedulerX. Tenga a mano la URL del servicio HTTP destino, el método de solicitud (GET o POST) y otra información de configuración relevante.
-
Si no ha desplegado un servicio HTTP, consulte el siguiente código Java de ejemplo para desarrollar una interfaz HTTP:
@GET @Path("hi") @Produces(MediaType.APPLICATION_JSON) public RestResult hi(@QueryParam("user") String user) { TestVo vo = new TestVo(); vo.setName(user); RestResult result = new RestResult(); result.setCode(200); result.setData(vo); return result; }
-
Cree un trabajo HTTP en la consola de SchedulerX.
A continuación se muestran las configuraciones relevantes para un trabajo HTTP GET. Para obtener más información sobre cómo crear un trabajo programado, consulte Create a scheduled job. Configure los siguientes parámetros: establezca Task name en
http_get, seleccione Http para Task type, introduzca la dirección de solicitud destino en el campo Full URL, seleccione GET para Request method, seleccione Custom JSON para response analysis mode, introduzcacodeen Return Check Key, introduzca200en Return Check Value, establezca Execution Timeout en10segundos y seleccione serverless para execution mode.
POST
-
Despliegue un servicio HTTP accesible.
Si ya cuenta con un servicio HTTP accesible, continúe con Step 2 para crear un trabajo HTTP en la consola de SchedulerX. Tenga a mano la URL del servicio HTTP destino, el método de solicitud (GET o POST) y otra información de configuración relevante.
-
Si no ha desplegado un servicio HTTP, consulte el siguiente código Java de ejemplo para desarrollar una interfaz HTTP:
import com.alibaba.schedulerx.common.constants.CommonConstants; @POST @Path("createUser") @Produces(MediaType.APPLICATION_JSON) public RestResult createUser(@FormParam("userId") String userId, @FormParam("userName") String userName) { TestVo vo = new TestVo(); System.out.println("userId=" + userId + ", userName=" + userName); vo.setName(userName); RestResult result = new RestResult(); result.setCode(200); result.setData(vo); return result; }
-
Cree un trabajo HTTP en la consola de SchedulerX.
A continuación se muestran las configuraciones relevantes para un trabajo HTTP POST. Para obtener más información sobre cómo crear un trabajo programado, consulte Create a scheduled job. Establezca Task name en
http_post, seleccione Http para Task type, introduzca la dirección de la interfaz destino en el campo Full URL, seleccione POST para Request method, seleccione Custom JSON para response analysis mode, introduzcacodeen Return Check Key, introduzca200en Return Check Value, establezca Execution Timeout en10segundos, seleccione application/x-www-form-urlencoded para ContentType, introduzca los POST parameters en formatokey1=value1&key2=value2y seleccione serverless para execution mode.
Parámetros para trabajos HTTP serverless y agent:
Los parámetros de configuración para los modos de ejecución serverless y agent son los mismos en la consola de SchedulerX.
|
Parámetro |
Descripción |
|
Name |
Nombre personalizado del trabajo. |
|
Description |
Breve descripción del propósito empresarial del trabajo para facilitar búsquedas futuras. |
|
Application ID |
Grupo al que pertenece el trabajo. Puede seleccionar uno de la lista desplegable. |
|
Job Type |
Tipo de trabajo. Para este escenario, seleccione HTTP. |
|
Full URL |
Introduzca una URL completa que comience con |
|
Request method |
Seleccione GET o POST. |
|
Response analysis mode |
Seleccione el modo de análisis de respuesta. Los modos compatibles son los siguientes:
|
|
Si selecciona HTTP Response Code para response analysis mode: |
|
|
Código de respuesta HTTP |
Establezca el código de respuesta HTTP esperado. El valor predeterminado es 200. |
|
Si selecciona Custom JSON para response analysis mode: |
|
|
Clave de verificación de retorno |
Solo admite valores de retorno JSON. La clave que se verifica para confirmar una respuesta exitosa. |
|
Valor de verificación de retorno |
Solo admite valores de retorno JSON. El valor que se verifica para confirmar una respuesta exitosa. |
|
Si selecciona Custom String para response analysis mode: |
|
|
Cadena personalizada |
Establezca la cadena personalizada. |
|
Tiempo de espera de ejecución |
|
|
Tipo de contenido |
Cuando el Request method es POST, especifica el formato de datos del cuerpo de la solicitud. Formatos compatibles:
|
|
POST parameters |
Cuando el Request method es POST, especifica los parámetros de formulario POST. Ejemplos:
|
|
Cookie |
Por ejemplo, |
|
Modo de ejecución |
|
|
Configuración avanzada |
|
|
Task Failure Retry Count |
Número de reintentos tras un fallo del trabajo. El valor predeterminado es 0. |
|
Retry Interval |
Intervalo entre reintentos tras un fallo del trabajo. El valor predeterminado es 30 segundos. |
|
Task Concurrency |
Número máximo de instancias del mismo trabajo que pueden ejecutarse simultáneamente. Un valor de 1 impide la ejecución concurrente. Si se supera el límite de concurrencia, se omite la programación actual. |
|
Cleanup Policy |
Directiva de limpieza del historial de ejecución del trabajo. De forma predeterminada, conserva los últimos N registros, donde N es el Record Count.
|
|
Record Count |
Número de registros históricos de ejecución que se conservan para el trabajo. El valor predeterminado es 300. |
Paso 2: Configuración de programación
En la página Schedule Configuration del asistente de configuración, establezca los parámetros de programación y los parámetros de configuración avanzada, y luego haga clic en Next.
Los parámetros de programación se describen a continuación:
|
Parámetro |
Descripción |
|
Time Type |
|
|
Cron Expression (solo para tipo de tiempo cron) |
Introduzca una expresión cron. Puede escribirla directamente siguiendo la sintaxis de Cron o utilizar una herramienta para generarla y validarla. |
|
Frecuencia fija (solo para tipo de tiempo fixed_rate) |
Introduzca una frecuencia fija en segundos. Los valores deben ser de 60 segundos o más. Por ejemplo, 200 significa una programación cada 200 segundos. |
|
Retraso fijo (solo para tipo de tiempo second_delay) |
Introduzca un retraso fijo en segundos. El rango va de 1 a 60 segundos. Por ejemplo, 5 significa un retraso de 5 segundos antes de activar la programación. |
|
Hora de programación (solo para tipo de tiempo onetime) |
Seleccione una fecha y hora. Por ejemplo, |
|
Configuración avanzada |
|
|
Desfase horario |
Desfase de la hora de los datos respecto a la hora de programación. Puede obtener este valor del contexto durante la programación. |
|
Time Zone |
Puede seleccionar distintas zonas horarias según sus necesidades, incluidos países o regiones comunes, así como formatos GMT estándar. |
|
Calendar |
Establezca el calendario efectivo para el trabajo.
|
|
Effective Time |
Establezca la hora efectiva para el trabajo.
|
Paso 3: Configuración de notificaciones
Los trabajos HTTP admiten alertas de fallo. Cuando ocurren problemas como tiempos de espera agotados o valores de retorno inesperados, puede configurar reglas de alerta durante la creación del trabajo para recibir las notificaciones correspondientes.
-
En la página Notification Configuration del asistente de configuración, establezca los parámetros de alerta y los contactos, y luego haga clic en Complete.
Los parámetros configurables incluyen: Timeout alert (habilitado), Timeout period (en segundos), Terminate on timeout (deshabilitado), Success notification (deshabilitado), Failure alert (habilitado), Consecutive failures (establecido en 1) y No available machine alert (habilitado). Para Notification channels and contacts, puede seleccionar Application group contacts o Custom.
-
Una vez creado correctamente el trabajo, vaya a la página Task management y haga clic en Run Once en la columna Actions del trabajo destino.
En la página de detalles del registro de la instancia del trabajo, consulte el resultado de la ejecución y los registros.
Obtener información básica del trabajo
La información básica de un trabajo HTTP se encuentra en el encabezado. Para obtener esta información, debe agregar la siguiente dependencia al archivo pom.xml de su cliente.
<dependency>
<groupId>com.aliyun.schedulerx</groupId>
<artifactId>schedulerx2-common</artifactId>
<version>1.6.0</version>
</dependency>
El siguiente ejemplo muestra cómo obtener información básica del trabajo mediante el método GET.
import com.alibaba.schedulerx.common.constants.CommonConstants;
@GET
@Path("hi")
@Produces(MediaType.APPLICATION_JSON)
public RestResult hi(@QueryParam("user") String user,
@HeaderParam(CommonConstants.JOB_ID_HEADER) String jobId,
@HeaderParam(CommonConstants.JOB_NAME_HEADER) String jobName) {
TestVo vo = new TestVo();
vo.setName("armon");
// If the jobName contains Chinese characters, it needs to be URL-decoded.
String decodedJobName = URLDecoder.decode(jobName, "utf-8");
System.out.println("user=" + user + ", jobId=" + jobId + ", jobName=" + decodedJobName);
RestResult result = new RestResult();
result.setCode(200);
result.setData(vo);
return result;
}
Definiciones de constantes del trabajo
La siguiente tabla describe la información básica de CommonConstants.
|
Constante |
Clave |
Descripción |
|
JOB_ID_HEADER |
schedulerx-jobId |
ID del trabajo. |
|
JOB_NAME_HEADER |
schedulerx-jobName |
Nombre del trabajo. |
|
SCHEDULE_TIMESTAMP_HEADER |
schedulerx-scheduleTimestamp |
Marca de tiempo de la hora de programación. |
|
DATA_TIMESTAMP_HEADER |
schedulerx-dataTimestamp |
Marca de tiempo de la hora de los datos. |
|
GROUP_ID_HEADER |
schedulerx-groupId |
ID de la aplicación. |
|
USER_HEADER |
schedulerx-user |
Nombre de usuario. |
|
MAX_ATTEMPT_HEADER |
schedulerx-maxAttempt |
Número máximo de reintentos para la instancia. |
|
ATTEMPT_HEADER |
schedulerx-attempt |
Conteo actual de reintentos para la instancia. |
|
JOB_PARAMETERS_HEADER |
schedulerx-jobParameters |
Parámetros del trabajo. |
|
INSTANCE_PARAMETERS_HEADER |
schedulerx-instanceParameters |
Parámetros para una instancia específica del trabajo, que se pasan al activar el trabajo mediante una API. |
Verificar resultados
Puede comprobar los resultados de ejecución de un trabajo HTTP en la página de lista de ejecuciones. Para obtener información sobre resultados exitosos, consulte GET.
Si un trabajo falla, haga clic en Details para ver el motivo específico del fallo, como se muestra a continuación:
El valor devuelto es diferente del valor esperado. El campo Result or Error Message en la página de detalles de la instancia muestra la causa específica del fallo. Por ejemplo, el mensaje de error
The returned value is different from the expected valueindica que"success":falseen el JSON devuelto no coincide con el valor esperado, lo que provoca el fallo del trabajo.Tiempo de espera de ejecución agotado. Cuando se agota el tiempo de espera de ejecución de un trabajo HTTP, el campo Result or Error Message en la página de detalles de la instancia muestra una excepción
java.net.SocketTimeoutException, que indica un tiempo de espera de conexión de socket agotado.