SIU-Pilaga/version3.2.4/consideraciones tecnicas/emails asincronicos

De SIU
Saltar a: navegación, buscar

Envíos de email de forma asíncrona

Esta funcionalidad permite a las operaciones que realizan envíos de email poder hacer los envíos asincronicamente, esto significa que la operación puede continuar y el usuario puede seguir operando en el sistema mientras que en un segundo plano se envían los emails sin detener el funcionamiento del sistema.

Configuración

En el archivo instalador.env se configuran los parámetros de conexión a la base donde se almacenarán la cola de mails pendientes a enviarse de forma asíncrona.

Si se configura una base de datos distinta a la base de datos de negocios del proyecto, el instalador intenta crear la base de datos si no existe.

Si no se configuran ninguna conexión, por defecto se crea la tabla donde se almacenarán la cola de mensajes en la base de negocios en el esquema public, el nombre de la tabla es ‘sau_em_mensaje_queue’.

Los parámetros de configuración en el instalador.env son los siguientes:

###### CONFIG DE BASE DE API QUEUE ######
API_QUEUE_DB_HOST=pg_dev_queue
API_QUEUE_DB_PORT=5432
API_QUEUE_DB_DBNAME=db_pilaga
API_QUEUE_DB_USERNAME=postgres
API_QUEUE_DB_PASSWORD=postgres
API_QUEUE_DB_SCHEMA=public
API_QUEUE_DB_ENCODING=LATIN1

Inicializar cola de envíos

Al ejecutar el proceso de instalación o actualización del sistema, el instalador leerá la configuración de conexión y generará un archivo de configuración de la librería en el directorio de instalación del proyecto llamado api-queue.ini.

Luego de generar el archivo api-queue.ini con los datos de configuración, se procede a la creación de la tabla donde se almacenará la cola de mails. Para la creación de esta tabla se requiere que la base de datos en la cual se va a crear la tabla tenga creada la siguiente extensión de postgres:

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";


Lanzar worker de cola de emails

Una vez finalizada la instalación o actualización del sistema, cada vez que una operación envía un email este se almacena en una cola de emails en una tabla en la base de datos. Para que esta cola de mensajes sea leída en forma asíncrona y realice los envíos se debe mantener corriendo el siguiente comando en el servidor:

toba proyecto iniciar_workers_queue -p pilaga

Una vez ejecutado el comando este inicia un worker que queda en la espera de nuevos mails que se envían a la cola para tomar el mensaje y enviar mediante SMTP el correo electrónico relacionado con el mensaje de la cola al destinatario correspondiente.

Este comando tiene que estar siempre activo para que se puedan enviar los mails.

Si se quiere asegurar que los workers están siempre en ejecución se puede hacer a través de un sistema de control de procesos como supervisord (http://supervisord.org/) este se encarga de que el proceso siempre este activo y si se reinicia el servidor el proceso también se inicie.