Endpoint de API para aguardar a fila de e-mail esvaziar?

Olá,

Após injetar e-mails usando o endpoint da API /admin/email/handle_mail, os e-mails são agendados para processamento. Existe algum endpoint da API para aguardar até que a fila seja esvaziada? Ou para obter o tamanho da fila?

Abraços

Qual problema você está enfrentando que está tentando resolver?

Não tenho certeza do que você está perguntando. Há algo ambíguo no problema expresso acima?

Você pede uma solução. Não está claro qual é o problema. A maioria dessas mensagens é processada bastante rapidamente e não é um problema. Acho que, se elas estiverem em fila, você pode obter a lista do Sidekiq.

Por que você precisa da lista de mensagens em fila? Na maioria dos casos, não existe fila.

Você está enganado: o processamento de e-mails é assíncrono e enfileirado, razão pela qual faz sentido aguardar até que a fila esvazie.

Acho que no momento não expomos nenhuma API para isso. O mais próximo que temos seria a interface web do Sidekiq para a fila padrão, onde esse trabalho ficará aguardando em /sidekiq/queues/default.

Como o processamento de e-mails é sequencial, a seguinte solução alternativa funciona:

  • /admin/email/handle_mail envie um e-mail com um assunto/título único, como Red Lantern (timestamp), endereçado a categoryname@example.com.
  • localize o ID da categoria da categoria para a qual a configuração email in é categoryname@example.com.
  • pesquise com os seguintes parâmetros:
    • ‘term’ = Red Lantern (timestamp)
    • ‘search_context[type]’ = ‘category’
    • ‘search_context[id]’: ID da categoria
  • percorra os ‘tópicos’ no resultado e compare o valor de ‘title’ com Red Lantern (timestamp)
  • se encontrado, isso significa que todos os e-mails anteriores a este foram processados
  • exclua o tópico Red Lantern (timestamp) usando o topic['id'] dos resultados da pesquisa.