¿Punto de conexión API para esperar a que la cola de correo se vacíe?

Hola,

Tras inyectar correos electrónicos utilizando el punto de acceso de la API /admin/email/handle_mail, los correos se programan para su procesamiento. ¿Existe algún punto de acceso de la API para esperar hasta que la cola se vacíe? ¿O para obtener el tamaño de la cola?

Saludos

¿Qué problema estás experimentando que intentas resolver?

No estoy seguro de qué estás preguntando. ¿Hay algo ambiguo en el problema expresado anteriormente?

Pides una solución. No está claro cuál es el problema. La mayoría de esos mensajes se procesan bastante rápido y no es un problema. Creo que si están en cola, podrías obtener la lista desde Sidekiq.

¿Por qué necesitas la lista de mensajes en cola? Por lo general, no existe ninguna cola.

Te equivocas: el procesamiento de correos es asíncrono y se realiza en cola, razón por la cual tiene sentido esperar a que la cola se vacíe.

No creo que actualmente expongamos ninguna API para eso. Lo más cercano que tenemos sería la interfaz web de Sidekiq para la cola predeterminada, donde este trabajo esperará en /sidekiq/queues/default.

Dado que el procesamiento de correos electrónicos es secuencial, funciona el siguiente procedimiento:

  • /admin/email/handle_mail envía un correo con un asunto/título único, como Red Lantern (timestamp), dirigido a categoryname@example.com.
  • Busca el ID de categoría de la categoría para la cual la configuración email in es categoryname@example.com.
  • Realiza una búsqueda con los siguientes parámetros:
    • ‘term’ = Red Lantern (timestamp)
    • ‘search_context[type]’ = ‘category’
    • ‘search_context[id]’: ID de categoría
  • Recorre los ‘topics’ en el resultado y compara el valor de ‘title’ con Red Lantern (timestamp).
  • Si se encuentra, significa que todos los correos anteriores a este han sido procesados.
  • Elimina el tema Red Lantern (timestamp) utilizando el topic['id'] obtenido en los resultados de la búsqueda.