【问题标题】:Ruby Fibers and fayeRuby Fibers 和 faye
【发布时间】:2012-03-04 11:40:13
【问题描述】:

我有 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

event_1 先出现,event_2 紧随其后(间隔很小)
当我运行它并触发事件时。我总是有这个输出:

Event 1 start
Event 2 start
Event 2 finish

仅此而已。
活动一结束在哪里?
我做错了什么?

UPD:如果我删除异步删除 require 'redis/connection/synchrony' 一切都很好。但我需要这个异步。

ruby-1.9.2-p290 [x86_64]

【问题讨论】:

    标签: ruby eventmachine faye fibers


    【解决方案1】:

    答案是使用 Synchrony ConnectionPool。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-15
      • 2011-04-17
      • 2013-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-15
      • 1970-01-01
      相关资源
      最近更新 更多