我想部署一個RoR應用程序,它執行一些異步任務。我使用workling,消息隊列是RabbitMQ。這個組合與Starling完美無瑕地工作,但我們決定更改MQ for Rabbit。 我讀的地方,我應該包括下面的代碼在我的environment.rbPhusion Passenger + Workling + RabbitMQ
require 'mq'
if defined?(PhusionPassenger)
PhusionPassenger.on_event(:starting_worker_process) do |forked|
if forked
if EM.reactor_running?
EM.stop_event_loop
EM.release_machine
EM.instance_variable_set('@reactor_running', false)
end
Thread.current[:mq] = nil
AMQP.instance_variable_set('@conn', nil)
end
th = Thread.current
Thread.new{
AMQP.connect(:host => 'localhost'){
th.wakeup
}
}
Thread.stop
end
end
但是,現在的Apache與消息完全失敗:服務器遇到一個內部錯誤或配置錯誤,無法完成您的請求