sidekiq源码解析

2022-07-10  本文已影响0人  SecondRocker
image.png

client调用

perform

放入 queue 队列

perform_at,perform_async(alias方法)

以执行时间为score放入有序集合schedule中


image.png

队列

queue:default 队列

Sidekiq::Manager 按设定的并发数(concurrency),调用Sidekiq::Process(创建线程)取出队列,消费队列,递归执行
并使用互斥量实现线程同步


image.png image.png image.png
Sidekiq.queues=%w( high,3 default,2 low,1 ) 
#["high", "high", "high", "default", "default", "low"] 

brpop按照指定顺序取出,这个方法取到一个queue后重新排序;因权重高的数量多高概率排前面


image.png image.png image.png

实际执行


image.png

retry schedule 重试和计划任务队列

使用lua脚本取出任务,取执行时间(分数)在当前时间前的


image.png image.png

https://segmentfault.com/a/1190000007321951

上一篇下一篇

猜你喜欢

热点阅读