我正在使用带有ruby-amqp宝石的导轨。它与Rails应用程序本身正常工作,但Android Java客户端无法接收消息。
Android客户端基于此http://simonwdixon.wordpress.com/2011/06/03/getting-petting-with-with-rabbitmq-on-android-part-1/
mConsumer = new MessageConsumer("192.168.1.123", "nodes.metadata", "fanout");
我的Ruby实现基于此
EventMachine.next_tick do
connection = AMQP.connect(:host => '127.0.0.1')
channel = AMQP::Channel.new(connection)
exchange = channel.fanout("nodes.metadata")
channel.queue("joe", :auto_delete => true).bind(exchange).subscribe do |payload|
puts "#{payload} => joe"
end
channel.queue("aaron", :auto_delete => true).bind(exchange).subscribe do |payload|
puts "#{payload} => aaron"
end
channel.queue("bob", :auto_delete => true).bind(exchange).subscribe do |payload|
puts "#{payload} => bob"
end
exchange.publish("BOS")
# disconnect & exit after 2 seconds
EventMachine.add_timer(2) do
exchange.delete
# connection.close { EventMachine.stop }
end
end
当我运行此操作时,我会在终端获得发布消息,但是当Android正在收听RabbitMQ时,我不会在终端获得消息,也没有收到消息。我将Android的RabbitMQ与计算机的IP地址
问题在于这个
mmodel.exchangedeclare(mexchange,myExchangeType,true);
将其更改为
mmodel.exchangedeclare(mexchange,myExchangeType)(不是被动交换);参考https://groups.google.com/forum/# !! topic/rabbitmq-discuss/hctgueficrg
然后从Ruby Code中删除Exchange.delete(由于删除了交换,您将仅收到一条消息)