API endpoint per attendere che la coda di posta si svuoti?

Ciao,

Dopo aver iniettato le e-mail tramite l’endpoint API /admin/email/handle_mail, le e-mail vengono pianificate per l’elaborazione. Esiste un endpoint API per attendere che la coda venga svuotata? O per ottenere la dimensione della coda?

Ciao

Quale problema stai riscontrando che stai cercando di risolvere?

Non sono sicuro di cosa tu stia chiedendo. C’è qualcosa di ambiguo nel problema espresso sopra?

Chiedi una soluzione, ma non è chiaro qual è il problema. Nella maggior parte dei casi, questi messaggi vengono elaborati molto rapidamente e non si tratta di un problema. Penso che, se sono in coda, tu possa ottenere l’elenco da Sidekiq.

Perché hai bisogno dell’elenco dei messaggi in coda? Nella maggior parte dei casi, la coda non esiste.

Ti sbagli: l’elaborazione della posta è asincrona e in coda, motivo per cui ha senso attendere che la coda si svuoti.

Non credo che al momento esponiamo alcuna API per questo. La cosa più simile che abbiamo è l’interfaccia web di Sidekiq per la coda predefinita, dove questo lavoro rimarrà in attesa in /sidekiq/queues/default.

Poiché l’elaborazione delle email avviene in sequenza, funziona il seguente workaround:

  • /admin/email/handle_mail invia un’email con un oggetto/titolo univoco, ad esempio Red Lantern (timestamp), indirizzata a categoryname@example.com.
  • Individua l’ID categoria della categoria per cui l’impostazione email in è impostata su categoryname@example.com.
  • Esegui una ricerca con i seguenti parametri:
    • ‘term’ = Red Lantern (timestamp)
    • ‘search_context[type]’ = ‘category’
    • ‘search_context[id]’: ID categoria
  • Itera sui ‘topics’ nel risultato e confronta il valore di ‘title’ con Red Lantern (timestamp).
  • Se trovato, significa che tutte le email precedenti a questa sono state elaborate.
  • Elimina il topic Red Lantern (timestamp) utilizzando topic['id'] dai risultati della ricerca.