Руби Волокна и Фэй - PullRequest
       28

Руби Волокна и Фэй

3 голосов
/ 04 марта 2012

У меня есть простой скрипт с EventMachine, Fibers и Faye

require "faye"
require "em-synchrony"
require "hiredis"
require 'redis'
require 'redis/connection/synchrony'

faye = Faye::Client.new 'http://localhost:9292/faye'
redis = Redis.new

EM.synchrony do

  faye.subscribe('/event_1') do |message|
    Fiber.new do
      puts "Event 1 start"
      user_id = redis.hget 'myhash', message.client_id
      puts "Event 1 finish"
    end.resume
  end 

  faye.subscribe('/event_2') do |message|
    Fiber.new do
      puts "Event 2 start"
      user_id = redis.hget 'myhash', message.client_id
      puts "Event 2 finish"
     end.resume
  end # subscribe

end #EM.synchrony

событие_1 идет первым, событие_2 рядом с ним (очень маленький интервал)
Когда я запускаю его и событие запускается. У меня всегда есть такой вывод:

Event 1 start
Event 2 start
Event 2 finish

Вот и все.
Где заканчивается событие 1?
Что я делаю не так?

UPD: Если я удаляю асинхронные удаления, удаляя require 'redis/connection/synchrony', все прекрасно работает. Но мне нужно это асинхронно.

ruby-1.9.2-p290 [x86_64]

1 Ответ

1 голос
/ 26 июня 2012

Ответом было использование Synchrony ConnectionPool.

...