【问题标题】:Prioritizing jobs on Sidekiq优先考虑 Sidekiq 上的工作
【发布时间】:2015-12-29 22:59:13
【问题描述】:

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

  1. 他们会收到一封电子邮件 - “欢迎使用约会应用!”

  2. 一项自定义匹配作业开始为他们找到当天的匹配项并向他们发送一封电子邮件 - “你找到了匹配项!”

如果我选择批量注册数千人,则作业队列将填充 #1 和 #2 的数千个作业。在获得比赛之前首先收到电子邮件很重要,否则会造成混乱的体验。

我有 -

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

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

  1. 这种优先级如何工作? 整个 high priority 队列在选择defaultlow_priority 队列中的一项之前是否已耗尽?还是只是更频繁地检查,仍然允许同时处理一些优先级较低的作业?

  2. 作为#1 的后续措施,有没有办法确保对于特定用户,他们在收到匹配电子邮件之前收到欢迎电子邮件?前者将在high_priority 队列中,而后者在default 优先级中,但不能保证任何一个队列对于用户来说都是任何特定的顺序。

谢谢!

【问题讨论】:

    标签: ruby-on-rails email queue sidekiq


    【解决方案1】:

    Sidekiq 每次在 Redis 中查找作业时,都会先检查 high_priority,然后是 default,然后是 low_priority。只要有 high_priority 中的作业,默认作业就会坐在那里。

    【讨论】:

    • 因此,如果我将并发设置为 10 并且 10 个作业处于默认队列的忙碌状态,并且如果新作业被添加到 high_priority 那么它会从 high_priority 队列中选择一个作业并将这 10 个作业搁置?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 2022-11-28
    • 2012-11-29
    • 1970-01-01
    相关资源
    最近更新 更多