【问题标题】:Sidekiq and concurrency of a single queueSidekiq 和单队列的并发
【发布时间】:2016-04-16 14:39:25
【问题描述】:

我有 3 个队列正在运行

User
Follower
Default

用户可以导入他的数据,然后由User 队列完成。 这实际上创造了大量的追随者(多达数百万),并且他们每个人都有一个 after_create 来更新自己,在Follower 队列中。

这里的问题是,50 个用户现在可以创建他们的导入,但我只希望同时完成 1 个导入。先进先出 - 而Follower-Queue 仍应与 100 名同时工作的工人一起工作。 示例:1 个用户导入 500.000 个关注者。然后下一个用户进口 500 万。下一个导入 400。同时加载用户 1 的关注者。

可以吗?

我的 YAML 看起来像这样

:queues:
  - user
  - follower
  - default

文档现在告诉我,用户队列的优先级很高。但是如何判断该队列中只有 1 个作业同时完成?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 sidekiq


    【解决方案1】:

    此功能sidekiq 核心不支持(作者does not want to add 对它有此功能)。但是,有一个外部中间件似乎支持为每个队列设置工作人员限制,即 sidekiq-limit_fetch gem。使用它,您应该能够轻松设置所需的内容:

    # sidekiq.yml
    :limits:
      user: 1
      follower: 100
      default: 10 # or whatever you like
    

    虽然 gem 代码有点旧,但您的里程可能会有所不同...

    【讨论】:

    • 甜蜜。我已经看到了,但后来点击了。我会试一试:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多