То, что работало для меня, - это чтобы сервер faye отвечал только за передачу и проверку сообщений.Если это успешно, я сохраняю их в redis так же, как это делает resque, чтобы он мог завершить обработку.
Преимущества состоят в том, что долго выполняющиеся задачи не замедляют ваши соединения с faye, и вы всегда можете добавить больше работников, если вам потребуется дополнительная обработка.
в верхней части входящего метода моего первого расширенияЯ создаю новое соединение em-redis
$redis ||= EM::Hiredis.connect @options[:redis]
, затем, если оно проходит мои тесты, я сохраняю его в redis в формате, который использует resque.
m = {'class' => "Message", 'args' => ['handle_message', {name: message.to_s}.to_json]}
$redis.rpush("resque:queue:faye", m.to_json )
$redis.sadd("resque:queues","faye")
для передачи из моих рельсовприложение для пользователей Я использую следующий код в скрипте / faye_worker
https://github.com/SponsorPay/em-resque#in-a-rails-3-app-as-a-gem
Я обертываю вышеупомянутое с EM.synchrony, чтобы я мог инициализировать Faye перед работником
для отправки сообщений из вашей модели просто отправьте его в очередь асинхронного восстановления.