SIU-Diaguita/version2.7.0/rest hooks

De SIU
Revisión del 18:45 7 mar 2018 de Fkorol (discusión | contribuciones)
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

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

  1. SIU-Diaguita envía un mensaje utilizando el método send
  2. La librería encola el mensaje en Redis
  3. 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
    1. Si hay éxito se invoca la callback onSuccess
    2. Si falla y no se reintenta se invoca la callback onFailure
    3. 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.