我有3个队列正在运行
User
Follower
Default
用户可以导入他的数据,然后由User
队列完成。
这实际上会创建大量的关注者(最多数百万),并且他们每个人都有一个after_create来更新自己,在Follower
队列中。
这里的问题是,50个用户现在可以创建他们的导入,但我希望同时只进行1次导入。先进先出 - Follower-Queue
应该仍然与100名同工一起工作。
示例:1个用户导入500.000个粉丝。然后下一个用户导入500万。下一次导入400.同时加载用户1的粉丝。
有可能吗?
我的YAML看起来像这样
:queues:
- user
- follower
- default
文档现在告诉我,用户队列的优先级高。但是如何判断这个队列中只有一个作业同时完成?
答案 0 :(得分:4)
这个功能不支持sidekiq核心(以及作者does not want to add这样的功能)。但是,有一个外部中间件似乎支持为每个队列设置工作人员限制, sidekiq-limit_fetch
gem 。使用它你应该能够轻松设置你需要的东西:
# sidekiq.yml
:limits:
user: 1
follower: 100
default: 10 # or whatever you like
宝石代码虽然有点旧,但你的里程可能会有所不同......