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

De SIU
Saltar a: navegación, buscar
Línea 4: Línea 4:
  
 
La cola de mensajes se almacena temporalmente en la base de datos de negocios en un schema llamado '''queue''' en una tabla llamada '''enqueue'''.
 
La cola de mensajes se almacena temporalmente en la base de datos de negocios en un schema llamado '''queue''' en una tabla llamada '''enqueue'''.
 
  
 
=== Inicializar cola de envíos ===
 
=== Inicializar cola de envíos ===
  
 
Al ejecutar el proceso de instalación o actualización del sistema, el instalador generará en el schema '''queue''', la tabla '''enqueue''' donde se almacenara la cola de mensajes para ser enviado de forma asíncrona.
 
Al ejecutar el proceso de instalación o actualización del sistema, el instalador generará en el schema '''queue''', la tabla '''enqueue''' donde se almacenara la cola de mensajes para ser enviado de forma asíncrona.
 
  
 
=== Lanzar worker de cola de emails ===
 
=== Lanzar worker de cola de emails ===

Revisión del 11:39 4 feb 2019

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.

La cola de mensajes se almacena temporalmente en la base de datos de negocios en un schema llamado queue en una tabla llamada enqueue.

Inicializar cola de envíos

Al ejecutar el proceso de instalación o actualización del sistema, el instalador generará en el schema queue, la tabla enqueue donde se almacenara la cola de mensajes para ser enviado de forma asíncrona.

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