Редис паб / саб на рельсах
ПослеRedis Pub / Sub
это работает нормально, и я могу публиковать сообщения в любом классе, используя
$redis.publish 'channel', { object: @object.id }
с помощьюredis-cli > MONITOR
Я могу убедиться, что этот запрос был опубликован правильно
[0 127.0.0.1:64192] "publish" "channel" "{:object=>\"5331d541f4eec77185000003\" }"
проблема начинается, когда я добавляю подписчикаблок на этот канал вдругой класс (класс слушателя) как следующее
class OtherClass
$redis.subscribe('channel') do |payload|
p payload
end
end
вredis-cli > MONITOR
, показывает также, что слушатель подписан правильно
[0 127.0.0.1:52930] "subscribe" "channel"
проблема в том, что когда я добавляю класс слушателя подписчика в то же приложение rails ... он перестает работать, потому чтоOtherClass
слушает сервер redis и останавливает выполнение любого другого кода ... он просто сидит и слушает.
так есть ли способ сделать шину обмена сообщениями с Redis в том же приложении rails ... так чтособытия публикуются из некоторых классов или сервисных объектов, и есть прослушиватели для определенных каналов, которые будут действовать при получении событий в фоновом режиме.
я знаю, что мог бы использовать sidekiq или любого другого фонового работника, чтобы сделать эту работу ... но через некоторое время фоновые работники стали грязными и непригодными для работы.