我对 rabbitmq 有一个小问题,我不明白。我在用:
- 红宝石版本 1.8.7
- AMQP GEM 版本 0.7.0
- RabbitMQ v2.3.1
- 红宝石-smpp v0.4.0
我的代码如下所示:
loop do
AMQP.start do
EventMachine::run do
@@tx = EventMachine::connect(
config[:host],
config[:port],
Smpp::Transceiver,
config,
self # delegate that will receive callbacks on MOs and DRs and other events
)
EM.add_timer(10) do
puts "AMQP New"
amq = MQ.new
amq.queue("#{provider}").subscribe(:ack => true) do |header, msg|
puts "Provider #{provider} consumer #{Process.pid} processed #{msg}"
header.ack
end
end
EM.add_timer(30) {EventMachine::stop_event_loop}
end
end
AMQP.stop
puts "#{config[:host]} Disconnected. Reconnecting in 35 seconds.."
sleep 35
end
我添加了这一行进行测试。EM.add_timer(30) {EventMachine::stop_event_loop}
所以30秒后。我停止事件循环,它休眠 35 秒并重新启动一切。问题是 amq = MQ.new 似乎做了一些事情并且它没有给我一个错误,但订阅似乎不起作用。也没有错误。只有在停止进程并重新启动后,它才会再次订阅并处理消息。我不明白为什么