SIU-Diaguita/version2.7.0/rest hooks
Sumario
Implementación de Rest hooks
Esta implementación permite el envío asincrónico de mensajes REST.
- Provee reintentos automáticos basados en una estrategia configurable
- Provee trazabilidad de todos los envíos que se hacen
- Basado en Redis
Funcionamiento
- SIU-Diaguita envía un mensaje utilizando el método send
- La librería encola el mensaje en Redis
- La librería en otro proceso desencola el mensaje y comienza a enviarlo a los listeners correspondientes registrando todo lo que sucede en el backend de auditoría
- Si hay éxito se invoca la callback onSuccess
- Si falla y no se reintenta se invoca la callback onFailure
- Si falla y reintenta se encola el mensaje en otra cola de redis para su posterior reenvío
Requerimientos
Instalar Redis
Es necesario tener instalado Redis. Una manera rápida de hacerlo es utilizando Docker.
Si se está instalando en producción es recomendado conocer bien esta herramienta y montar una estrategia de backups.
- docker run --name some-redis -p6379:6379 -d redis
Configuración del Cliente Rest
Para poder conectarse con el otro sistema en primer lugar se debe configurar el cliente REST, en el caso de requerir realizar una conexión con el sistema SIU-Pilaga ir al siguiente link Conectar SIU-Diaguita con SIU-Pilagá
Configuración de Rest-Hooks
A partir de la versión 2.7.0 de SIU-Diaguita es posible configurar los datos del servidor Redis en el archivo de parámetros instalador.env
- ##### CONFIG REST-HOOKS #####
REST_HOOKS_REDIS_HOST="127.0.0.1"
REST_HOOKS_REDIS_PORT="6379"
Al finalizar la instalacion o actualizacion estos datos son escritos al archivo resthooks.ini en el directorio instalación del proyecto. Este archivo también puede editarse manualmente si se comienza a utilizar la liberia luego de realizar la instalación o actualización.
El contenido del archivo resthooks.ini es el sgte:
- resthooks_activo = 1
[redis_config]
host = 127.0.0.1
port = 6379
resthooks_activo: Determina si se utiliza el modo directo o el modo de encolar envíos.Se debe definir en 0 para utilizar el modo directo y en 1 para utilizar el modo de encolar envíos utilizando Redis.
host: Dirección del host de Redis.
port: Puerto del servicio de Redis
Crear el schema del backend de rest hooks
El backend define la forma de acceder al esquema de auditoría de la librería. El que se entrega con la librería implementa un backend de Postgres.
Para crear el schema de rest hooks es posible hacerlo ejecutando el siguiente comando toba:
- toba proyecto crear_base_resthooks -i produccion -p diaguita
Esto generará un schema resthooks en la base de datos del proyecto.
Iniciar Workers
Existe un proceso que periódicamente chequea las colas de mensajes de Redis y si encuentra un paquete nuevo ejecuta el worker correspondiente.
Para iniciar la ejecución de los worker se ejecuta el siguiente comando:
- toba proyecto iniciar_workers -i produccion -p diaguita
Para asegurar que los workers están siempre en ejecución, se debe utilizar un sistema de control de procesos como supervisord (http://supervisord.org/) que se encargue de que el proceso siempre este activo.