在 Sidekiq 上对工作进行优先排序

Prioritizing jobs on Sidekiq

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

  1. 他们收到一封电子邮件 - "Welcoming to the Dating app!"

  2. 自定义匹配工作开始为他们找到当天的匹配项并向他们发送电子邮件 - "You have a match!"

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

我有-

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

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

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

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

谢谢!

Sidekiq 每次在 Redis 中查找作业时,它会首先检查 high_priority,然后是默认值,然后是 low_priority。只要 high_priority.

中有工作,默认情况下的工作就会放在那里