我对rabbitmq有点问题,我不明白。 我正在使用:
我的代码如下所示:
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似乎做了一些事情并没有给我一个错误,但订阅似乎不起作用。也没错。 只有在停止进程并再次启动它之后,它才会再次订阅并处理消息。 我不明白为什么
答案 0 :(得分:0)
AMQP.start做了它自己的EM魔术 - 这可能就是咬你的东西。
这是关于如何在EM运行中执行AMQP的an example(或者看起来如此)
答案 1 :(得分:0)
您可以尝试使用这个简单的库:Setting initial value of Django ModelChoiceField
除了两个应用程序之间的简单通信之外没有其他内容