Point de terminaison d'API pour attendre que la file d'attente de courrier se vide ?

Bonjour,

Après avoir injecté des e-mails via le point de terminaison API /admin/email/handle_mail, les e-mails sont programmés pour traitement. Existe-t-il un point de terminaison API permettant d’attendre que la file d’attente soit vidée ? Ou d’obtenir la taille de la file d’attente ?

Salutations

Quel problème rencontrez-vous que vous essayez de résoudre ?

Je ne suis pas sûr de comprendre ce que vous demandez. Y a-t-il une ambiguïté dans le problème exposé ci-dessus ?

Vous demandez une solution. Le problème n’est pas clair. La plupart de ces messages sont traités assez rapidement et cela ne pose pas de problème. Je pense que s’ils sont mis en file d’attente, vous pourriez obtenir la liste depuis Sidekiq.

Pourquoi avez-vous besoin de la liste des messages en file d’attente ? La plupart du temps, aucune file d’attente n’existe.

Vous vous trompez : le traitement des courriels est asynchrone et mis en file d’attente, c’est pourquoi il est logique d’attendre que la file d’attente soit vidée.

Je ne pense pas que nous exposions actuellement d’API pour cela. L’élément le plus proche que nous ayons serait l’interface web Sidekiq pour la file d’attente par défaut où ce job attendra à l’adresse /sidekiq/queues/default.

Puisque le traitement des e-mails est séquentiel, la solution de contournement suivante fonctionne :

  • /admin/email/handle_mail soumettez un e-mail avec un sujet/titre unique tel que Lanterne Rouge (horodatage) adressé à nomdecatégorie@exemple.com.
  • recherchez l’identifiant de catégorie de la catégorie pour laquelle le paramètre email in est nomdecatégorie@exemple.com.
  • recherche avec les paramètres suivants :
    • ‘term’ = Lanterne Rouge (horodatage)
    • ‘search_context[type]’ = ‘category’
    • ‘search_context[id]’ : identifiant de catégorie
  • Parcourez les ‘topics’ dans le résultat et comparez la valeur ‘title’ à Lanterne Rouge (horodatage).
  • Si trouvé, cela signifie que tous les e-mails précédant celui-ci ont été traités.
  • supprimez le topic Lanterne Rouge (horodatage) en utilisant l’id du topic (topic['id']) provenant des résultats de la recherche.