2015-03-18 4 views
3

У меня есть приложение на основе ruby, которое имеет много разных очередей сообщений (+200 разных очередей), которые все должны быть ограничены или ограничены по отдельности. Я попытался проиллюстрировать эту проблему с помощью этой конфеты вендинг машины аналогиюРеализация «проблемного ковша» -подобного алгоритма для очередей сообщений

Leaky Candy Vending Machine

Теперь как бы я идти о реализации системы/алгоритм, как это? Я думал о том, чтобы помещать сообщения/«конфеты» в разные списки/наборы redis или очереди RabbitMQ, но выталкивать их из каждой очереди по отдельным ставкам, кажется, сложная задача. Есть ли какие-то технологии, которые лучше подходят для работы, чем redis?

+0

Вы можете реализовать его в lua в redis и вызвать скрипт из ruby. Сложные чтения и записи должны выполняться в lua, меньше сетевых обращений, хорошего языка, атомарного поведения. – zenbeni

ответ

0

Вы можете использовать Resque (который также использует Redis для сохранения). Вы можете использовать другую очередь для каждого типа «конфет» и запускать работника для каждой очереди с разными значениями для опции --interval.

$ bin/resque work --queues=blue --interval=10 
$ bin/resque work --queues=green --interval=2 
$ bin/resque work --queues=red --interval=5