Я использую resque .Также существует множество плагинов , которые должны упростить обмен данными между процессами.
Использование redis имеет еще одно преимущество: вы можете использовать каналы pub-sub для связи между работниками / службами.
Другой подход (но не проверенный мной): http://www.zeromq.org/,, который также имеет привязки рубина .Если вы хотите протестировать новый материал, попробуйте zeromq.
Обновление
Чтобы уточнить / объяснить / расширить мои комментарии выше:
Почему я должен переключаться с DelayedJobs на Resque - это упомянутое преимущество, что у меня есть очередь и сообщения в одной системе, потому что Redis предлагает это.
Другие источники:
Если бы мне пришлось остаться на DJ , я бы продлилрабочие классы с redis или zeromq / 0mq (только примеры здесь) для получения сообщений в моих существующих фоновых заданиях.
Я бы не попробуйте обмен сообщениями с ActiveRecord / MySQL ( на самом деле даже не с очередями! ), потому что эта БД не самая эффективная система для этого случая использования, особенно если в приложении слишком много фоновых рабочих и огромныхочереди и бесчисленные обмены сообщениями в короткие сроки.
Если это небольшое приложение с меньшим количеством работников, вытакже может реализовать простой обмен сообщениями через БД, но и здесь я бы предпочел memcache;сообщения - это короткий блок данных, который может обрабатываться только в оперативной памяти.
Общие переменные никогда не будут хорошим решением.Подумайте о нескольких машинах, на которых могут жить ваше приложение и ваши работники.Как бы вы обеспечили передачу переменных сохранения между ними?
Хорошо, кто-то может упомянуть DRb (распределенный рубин), но, похоже, он больше не используется.(пока еще не видел реального примера)
Если вы хотите поиграть с DRb, прочитайте это краткое введение .
Мой личный порядок предпочтений: Сообщения (real)> Обмен сообщениями через базу данных> Совместное использование переменных