我有一个基于 ruby 的应用程序,它有许多不同的消息队列(+200 个不同的队列),所有这些都需要单独进行 throttle/速率限制。我试图用这个糖果自动售货机类比来说明问题
现在我将如何着手实现这样的系统/算法?我一直在考虑将消息/“糖果”放入不同的 redis 列表/集合或 RabbitMQ 队列中,但是让它们以单独的速率从每个队列中弹出似乎是一项艰巨的任务。是否有一些技术比 Redis 更适合这项工作?
最佳答案
你可以使用 Resque (它也使用 Redis 进行持久化)。您可以为每种类型的“糖果”使用不同的队列,并为每个队列启动一个 worker,并为 --interval
选项设置不同的值。
$ bin/resque work --queues=blue --interval=10
$ bin/resque work --queues=green --interval=2
$ bin/resque work --queues=red --interval=5
关于ruby - 为消息队列实现类似 "leaky bucket"的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29117729/