【发布时间】:2014-02-20 14:33:08
【问题描述】:
我在 Rails 中使用 Bunny gem,在 Node.js 中使用 AMQP。 Rails 是发布者,Node.js 应用程序是订阅者。
来自 Rails 的代码:
conn = Bunny.new
conn.start
ch = conn.create_channel
x = Bunny::Exchange.new(ch, :direct, "messenger")
q1 = ch.queue("new_messages").bind(x, :routing_key => 'send')
x.publish('hi', :routing_key => 'send')
来自 Node.js 的代码:
var amqp = require('amqp');
var connection = amqp.createConnection();
connection.addListener('ready', function(){
var exchange = connection.exchange('messenger');
var queue = connection.queue('new_messages')
queue.bind('messenger', 'send')
queue.subscribe( {ack:true}, function(message){
console.log(message.data.toString())
queue.shift()
});
});
从管理插件中,我可以看到 Rails 代码运行良好,但来自 Node.js 的代码没有意义。
我的错误在哪里?
【问题讨论】:
-
“messanger”(Ruby)/“messenger”(node.js)是错字吗?
-
这不是一个真正的答案,所以我正在使用评论,但如果它有帮助,请告诉我。使用 Redis 在 Ruby 和 Node 之间发送消息有一种更简单的方法。 Redis API 更容易理解,在 Ruby 和 Node.js 中有很好的客户端,你可以在互联网上以每月 5 美元的价格找到基本计划的服务提供商。你想要的命令是 rpoplpush redis.io/commands/rpoplpush。这里有一些其他帮助:github.com/mranney/node_redis、github.com/redis/redis-rb。
标签: ruby-on-rails ruby node.js rabbitmq amqp