En el capítulo anterior, simplemente entendimos el envío de un error por correo y esperábamos que el remitente volviera a enviar el mensaje en caso de error.
Hay casos en los que el error es temporal y el procesamiento suele tener éxito después de un tiempo, como un punto final que no está disponible temporalmente. En ese caso, el mensaje solo debe reprocesarse a medida que se realiza y el procesamiento se realiza correctamente.
Hay otros casos en los que el error se debe a datos incorrectos o URL incorrectas. Ninguna cantidad de recuperaciones puede ayudar a procesar el mensaje con éxito sin cambiar los datos incorrectos.
Un mecanismo de nuevo juicio automático solo será útil en el primer caso.
En este capítulo, modelaremos un mecanismo de nuevo juicio automático.
Para habilitar el reintento, almacenaremos el mensaje fallido en una cola JMS y lo seleccionaremos repetidamente para reintentar el procesamiento, hasta que se procese correctamente. Para lograr esto, seguiremos los siguientes pasos:
Aparcaremos los datos entrantes en una propiedad.
En caso de una excepción, escribiremos el mensaje de la propiedad en la cola JMS en el subproceso de excepción.
Cree un flujo duplicado que lea de la cola y procese un mensaje. Si la excepción se repite, el mensaje no se eliminará de la cola. En consecuencia, se recuperará varias veces hasta que se procese con éxito o se coloque en el Cola de mensajes fallidos.
Paso 1: estaciona un mensaje en una propiedad
Poner un Modificador de contenido justo después del Iniciar evento:
Haga clic en la paleta de diseño.
Escoger Transformadores de mensajes.
Haga clic en Modificador de contenido.
Arrástrelo a la canalización de ejecución de mensajes entre Evento de mensaje inicial y el Enriquecedor de contenido la licenciatura.
Cambiar el nombre del Modificador de contenido – clickea en el Modificador de contenido paso, ve al Hoja de propiedades -> General pestaña Selecciona el Nombre a Mensaje en el parque.
Vamos Propiedad de intercambio pestaña, haga clic en Agregar e ingrese los siguientes detalles:
Gort
Valor
Acción
Crear
Nombre
Aporte
Mas o menos
Slonn
Tipo de datos
java.lang.String
Valor
$ {in.body}
Defecto
Hecho
Inicie sesión para responder la pregunta
Paso 2: escriba un mensaje entrante en la cola JMS para las excepciones
En este paso, asumimos que se ha producido una excepción. Ahora almacenaremos el mensaje entrante en la cola JMS. Con este fin, no podemos poner el mensaje en la canalización porque nunca podemos estar seguros de dónde puede ocurrir una excepción. Entonces, tenemos que usar el mensaje que estacionamos en el paso anterior; de esta manera, siempre estamos seguros de que estamos trabajando en el mensaje entrante y de que podemos replicar todo el procesamiento a medida que lo volvemos a intentar.
Cargue el mensaje inicial de la propiedad en el cuerpo cuando ocurra una excepción:
Haga clic en la paleta de diseño.
Escoger Transformadores de mensajes.
Haga clic en Modificador de contenido.
Arrástrelo al subproceso de excepción, justo después del Evento de error inicial.
Clickea en el Modificador de contenido, vaya a la hoja de propiedades y cámbiele el nombre a Lleva un mensaje al cuerpo.
Ve a la Cuerpo pestaña y seleccione lo siguiente:
Gort
Valor
Mas o menos
Slonn
Cuerpo
$ {property.Input}
Agregue un receptor JMS en el subproceso de excepción.
Haga clic en la paleta de diseño.
Escoger Llamada.
Escoger Llamada externa.
Haga clic en Enviar.
Arrástrelo al subproceso de excepción, justo después del Modificador de contenido.
Haga clic en la paleta de diseño.
Escoger Partícipe.
Escoger Receptor.
Arrastre el receptor debajo del Pide una respuesta paso como se muestra a continuación:
Haga clic en el receptor, vaya a la hoja de propiedades y cambie el nombre del receptor a JMSQueue.
Repasar el Pide una respuesta grado de uso del Conector para conectarlo a la JMSQueue receptor. Seleccione JMS en la ventana emergente.
Configure el conector JMS:
Agregue la siguiente configuración al receptor JMS en el Procesando pestaña:
Gort
Valor
Nombre de la cola
Aporte
Umbral de retención de alerta (en d)
2
Periodo de vencimiento (en d)
90
Cifrar mensaje almacenado
Comprobado
Transferir propiedades de Exchange
Sin revisar
Hecho
Inicie sesión para responder la pregunta
Paso 3: guardar, implementar y ejecutar el flujo original
Guarde e implemente el flujo de integración:
Una vez que haya implementado el flujo, se creará una cola y esto se puede ver en el Monitor de cola:
Ve a la Ver operaciones -> Administrar tienda sección y haga clic en Administrar colas:
Como puede ver, se crea una cola. El nombre de la cola es Aporte – Igual que se configuró en el receptor JMS.
Actualmente no hay detalles en la cola.
Ejecutemos el flujo ahora para escribir un mensaje en esta cola.
Ejecute el flujo de integración y vuelva a comprobar la escena de la cola:
Ahora vemos una entrada en la cola.
Verifique la bandeja de entrada configurada. Todavía no debería haber recibido ningún correo electrónico. Esto sugiere que el flujo no completó el procesamiento.
Ahora, creemos la lógica del reintento.
Hecho
Inicie sesión para responder la pregunta
Paso 4: crear un flujo duplicado para leer mensajes de una cola JMS
En este ejercicio, copiaremos el flujo original y le realizaremos los siguientes cambios:
Reemplace el remitente JMS con el remitente SOAP: esto es así, ahora queremos que el flujo de integración de la cola JMS sondee, sin revelar el punto final de SOAP. Este flujo sondeará la cola después de intervalos regulares, según lo configurado en el canal JMS en el próximo ejercicio. Todos los mensajes enviados a la cola a través de la subrutina original del flujo original se suspenderán como resultado del proceso anterior.
El subproceso de excepción se eliminará; esto sucede porque se elimina una entrada de la cola. En caso de una excepción, la entrada se volverá a escribir en la cola (o no se eliminará). Esto asegurará que se cerrará y se colocará en la cola de mensajes no entregados más adelante en caso de que el proceso no se procese correctamente en el número configurado de referencias.
El script de inducción excepcional debe eliminarse; esto asegura que cuando el mensaje se suspende, la excepción no se simula y, por lo tanto, deberíamos poder procesar con éxito el mensaje en la primera iteración.
Copie el flujo de integración:
Vaya a la vista Paquete de integración:
Haga clic en Editar. Vamos Comportamiento para el flujo de integración Gestionar la logística de carga y seleccione Dupdo:
En el cuadro de diálogo emergente, ingrese Manage Freight Logistics_retry como el nombre del nuevo flujo de integración:
Hacer clic Dupdo.
El flujo de integración correspondiente se agrega al paquete de integración:
Edite el flujo de nuevo juicio:
Abra el flujo de reintento y haga clic en Editar:
Eliminar el canal SOAP del remitente:
Haga clic en el canal y haga clic en el eliminado botón de velocidad:
Coloca el cursor sobre el Proveedor de comercio electrónico conductor, use el botón de velocidad para Conector y conecte el conductor a la Evento de mensaje inicial:
Eliminar etapa de secuencia de comandos: coloque el cursor sobre el Texto paso y seleccione el botón de velocidad para eliminar:
Elimine el subproceso de excepción: elimine lo siguiente:
Exception Subprocess 1
JMSQueue
Receiver 1
El flujo de integración final se parece a la siguiente imagen:
Hecho
Inicie sesión para responder la pregunta
Paso 5: configurar el sitio de reintento en la cola JMS
Configure el remitente JMS de la siguiente manera:
Gort
Valor
Suelte
Nombre de la cola
Aporte
Nombre de la cola a leer
Número de procesos paralelos
1
Cuántos procesos simultáneos deben leerse de la cola
Intervalo de recuperación (en minutos)
1
Después de cuántos minutos se debe sondear el proceso de cola
Copia de seguridad exponencial
Comprobado
Cuando esta casilla de verificación está marcada, el intervalo de reintento se duplica después de cada reintento. Esto asegura que, en el caso de un problema que no se resuelva rápidamente, el nuevo juicio no suponga una carga para el sistema.
Intervalo de reintento máximo (mínimo)
60
Cuál es el intervalo máximo que no debe repetirse. Esto solo es relevante cuando se selecciona una copia de seguridad exponencial
Cola de mensajes fallidos
Comprobado
Esto se usa para colocar entradas fallidas después de 2 reanudaciones en una cola separada, conocida como cola de mensajes no entregados
Hecho
Inicie sesión para responder la pregunta
Paso 6: imagina y ejecuta un reintento
Guarde e implemente el flujo de integración de un nuevo juicio:
Una vez que se utiliza el flujo, comienza a votar en la cola de mensajes. Como resultado, el mensaje de la cola ahora debería recogerse en el flujo de reintento de integración y procesarse.
Verifique la vista de la cola: ahora que el mensaje está seleccionado, no deberíamos ver ningún mensaje en la cola:
Dado que no generaremos una excepción en el flujo de reintento, esta vez el flujo se ejecutará correctamente y debería recibir un correo electrónico en la bandeja de entrada configurada.
Inicie sesión en XS Advanced CLI como XSA_ADMIN. Usar comando xs-admin-login desde el indicador en la máquina virtual como hxeadm Nota: Si no está usando…
Los tutoriales anteriores son una continuación de los tutoriales anteriores. Se asume que ha creado un TPCH usuario con los permisos correctos e iniciado sesión…