Diferencia entre revisiones de «SIU-Pilaga/version3.5.3/consideraciones tecnicas/emails asincronicos»

De SIU
Saltar a: navegación, buscar
 
(Sin diferencias)

Revisión actual del 15:58 19 dic 2018

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.

Una estrategia para 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.


Logs

Por cada envió se genera un log con información de los mensajes enviados correctamente y los que se generaron un error al enviar, además registra log de si se genera alguna excepción en la ejecución del mismo. Este log se almacena el la carpeta del proyecto que está dentro del directorio de instalación, en el directorio de logs y el archivo tiene el nombre queue.log


Parámetro de sistema

El envío de cada email tiene configurado un retraso de por defecto de 3000 milisegundos para evitar que se colapse el servidor SMTP al enviar de forma masiva una cierta cantidad de emails, si se necesita aumentar el valor del tiempo de retraso se debe hacerlo mediante la configuración de parámetros del sistema, modificando el parámetro llamado em_mensaje_retraso.


PIL parametros sistema retraso async.png


Bandeja de emails fallidos

En el caso que el envío de un email falle se almacenará cada email no enviado en una tabla ‘sau_em_mensaje_reenvio’, luego se puede visualizar un listado de los emails no enviados en la operación Bandeja de emails sin enviar que se encuentra dentro del menú de Administración y luego Opciones email. Desde esta operación se puede seleccionar uno o varios emails y volver a enviar, y en el caso de que vuelvan a fallar se volverán a registrar en la tabla de ‘sau_em_mensaje_reenvio’ para que en cualquier momento se vuelva a intentar el reenvío. En el caso de que no se quiera volver a enviar se puede seleccionar uno o varios emails del listado y eliminarlos definitivamente.


PIL bandeja emails sin enviar.png