等待邮件队列排空的 API 端点?

你好,

在通过 /admin/email/handle_mail API 端点注入邮件后,邮件会被安排处理。是否有 API 端点可以等待队列处理完毕?或者获取队列大小?

祝好

您正在尝试解决什么问题?

我不太确定您在问什么?上面表达的问题是否有歧义?

你请求了一个解决方案,但问题并不明确。这些消息通常处理得很快,一般不成问题。我认为如果它们被排队,你可以从 Sidekiq 获取列表。

你为什么要获取排队消息的列表?通常并不存在队列。

你弄错了:邮件处理是异步的且基于队列,这就是为什么等待队列处理完毕是有意义的。

目前我认为我们并未为此提供任何 API。最接近的替代方案是默认队列的 Sidekiq Web 界面,该任务将在此处等待,路径为 /sidekiq/queues/default

由于邮件处理是顺序进行的,以下变通方案有效:

  • categoryname@example.com 提交一封邮件,其主题/标题为唯一的 Red Lantern (时间戳),地址为 /admin/email/handle_mail
  • 查找“邮件输入”设置中 categoryname@example.com 所对应的类别的 类别 ID
  • 使用以下参数进行 搜索
    • ‘term’ = Red Lantern (时间戳)
    • ‘search_context[type]’ = ‘category’
    • ‘search_context[id]’ = 类别 ID
  • 遍历结果中的“主题”(topics),并将“标题”(title)值与 Red Lantern (时间戳) 进行比较。
  • 如果找到,则说明此邮件之前的所有邮件均已处理完毕。
  • 使用搜索结果中的 topic['id'] 删除 Red Lantern (时间戳) 主题。