У меня есть небольшая проблема с rabbitmq, которую я не понимаю.Я использую:
- Версия Ruby 1.8.7
- AMQP GEM Версия 0.7.0
- RabbitMQ v2.3.1
- ruby-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, похоже, что-то делает, и это не дает мне ошибки, но подписка не работает.Также нет ошибок.Только после остановки процесса и повторного запуска он снова подписывается и обрабатывает сообщения.Я не понимаю, почему