优先考虑Sidekiq的工作

时间:2015-10-01 19:17:30

标签: ruby-on-rails email queue sidekiq

想象一个简单的约会应用程序,每天为您提供潜在的匹配。当用户首次注册时,会发生以下情况 -

  1. 他们会收到一封电子邮件 - "欢迎来到约会应用程序!"

  2. 自定义匹配作业开始为他们找到当天的匹配并向他们发送电子邮件 - "您有匹配!"

  3. 如果我选择批量注册数千人,则作业队列将包含数千个#1和#2的工作。在获得比赛之前,他们首先收到电子邮件 非常重要,否则会造成令人困惑的体验。

    我有 -

    # config/sidekiq.rb
    :queues:
      - high_priority
      - default
      - low_priority
    

    根据this page,这些队列应按列出的顺序处理。

    1. 此优先顺序如何运作?在选择high prioritydefault队列的项目之前,整个 low_priority队列是否已耗尽?或者只是更频繁地检查,还是允许同时处理一些较低优先级的作业?

    2. 作为#1的后续行动,有没有办法确保特定用户的 ,他们会在收到匹配电子邮件之前收到欢迎电子邮件?前者将位于high_priority队列中,后者位于default优先级中,但不保证队列对用户具有任何特定顺序。

    3. 谢谢!

1 个答案:

答案 0 :(得分:1)

每次Sidekiq在Redis中寻找工作时,它会首先检查high_priority,然后是默认值,然后是low_priority。只要在high_priority中有作业,默认情况下的作业就会就位。