Tag: rabbitmq

Node-amqp和socket.io奇怪的行为

我实际上试图使用node-amqp( https://github.com/postwait/node-amqp )实现pub / sub模式。 我有一些问题来实现它。 我需要的 : 从用户发布消息 将其广播给其他用户 将邮件发送给离线用户,下次连接时会使用该邮件 我其实是: (function () { var amqp = require('amqp'); var connection = amqp.createConnection({ host: 'http://127.0.0.1:5672/' }); var app = require('express')(); var server = require('http').Server(app); var io = require('socket.io')(server); app.get('/', function (req, res) { res.sendfile(__dirname + '/index.html'); }); server.listen(8888); // Wait for connection to become established. […]

NoSQL架构白皮书

我想更好地理解像RabbitMQ,MongoDb,Node.Js和Hadoop这样的技术如何整合到一个系统架构中,以提供高可用性/可伸缩性/性能。 任何人都可以指导我获取这类信息的好消息吗? 编辑 诚然,这不是一个很好的问题,我应该澄清。 我没有在上面的堆栈中find任何技术人员的具体情况,我理解他们每个人做什么,并了解如何使用它们。 我正在寻找的是一个利用消息队列/ NoSQL / Map reduce /事件驱动的lang的系统规范,以便我可以更好地理解它们如何协同工作来提供高可用性/可伸缩性/性能。

RabbitMQ用于具有Express路由的NodeJS

我的服务器正在运行NodeJS,并使用amqplib api从另一个应用程序请求数据。 NodeJS服务器正在成功接收信息,但有一个明显的延迟,我试图确定我是否以最有效的方式做到这一点。 具体而言,我关心的是我打开和closures连接的方式。 项目布局 我有两个控制器文件处理接收和请求数据,request.img.server.controller.js和receive.img.server.controller.js。 最后,当前端button被按下时,路由处理控制器方法,即oct.server.routes.js。 request.img.server.controller.js 'use strict'; var amqp = require('amqplib/callback_api'); var connReady = false; var conn, ch; amqp.connect('amqp://localhost:5672', function(err, connection) { conn = connection; connReady = true; conn.createChannel(function(err, channel) { ch = channel; }); }); exports.sendRequest = function(message) { console.log('sending request'); if(connReady) { var ex = ''; var key = 'utils'; […]

Meteor + node-amqp:无法通过SSL连接到RabbitMQ服务器

我在Meteor应用程序中使用node-amqp通过SSL连接到rabbitMQ服务器。 这是我的连接string: var rConn = AMQP.createConnection({ url: amqps://user:pass@host:pppp, vhost: '/virthost' }); 但是,没有连接。 以下是在RabbitMQ错误日志中: =INFO REPORT==== 25-Jun-2013::17:41:30 === accepting AMQP connection <0.20247.0> (xxx.xxx.xxx.xxx:pppp -> xxx.xxx.xxx.xxx:pppp) =ERROR REPORT==== 25-Jun-2013::17:41:30 === error on AMQP connection <0.20231.0>: {ssl_upgrade_error,"record overflow"} (unknown POSIX error) =INFO REPORT==== 25-Jun-2013::18:11:35 === accepting AMQP connection <0.22556.0> (xxx.xxx.xxx.xxx:pppp -> xxx.xxx.xxx.xxx:pppp) =ERROR REPORT==== 25-Jun-2013::18:11:40 === error on […]

要么“当-js”或基本的amqplib rabbitmq nodejs教程不工作

我有最新版本的nodejs(0.10.21,amqplib(0.1.0)( https://github.com/squaremo/amqp.node.git )和rabbitmq(3.2.0))。 启动rabbitmq-server 在安装npm包之后,转到amqp.node / examples / tutorials并运行./send.js。 它报告: [x] Sent 'Hello World!' 从rabbitmq的Web控制台,我可以看到它创build的连接,它创build队列“你好”。 但是,它实际上不会将任何消息发布到队列中。 除了RPC客户端/服务器外,其他教程都不适用于我 – 它们将创build交换,队列和通道,但不会发布消息。 我的一个朋友使用所有相同的版本运行正常,除了OS X 10.6,而不是10.8。 我使用节点检查器遍历了amqplib代码,看不到任何明显的错误。 它看起来好像没有创build消息框架,但在那个层面上,我现在还没有真正的想法。 当我通过Web控制台或使用Bunny + Ruby发布消息时,它会创build一个队列并按预期发布消息,所以它必须是node,amqp和/或OS X 10.8而不是rabbitmq的问题。 rabbitmq日志(拖尾两个日志)只提到连接打开,然后很快closures,但不报告任何错误: =INFO REPORT==== 27-Oct-2013::20:46:16 === accepting AMQP connection <0.731.0> (127.0.0.1:56927 -> 127.0.0.1:5672) =INFO REPORT==== 27-Oct-2013::20:46:16 === closing AMQP connection <0.731.0> (127.0.0.1:56927 -> 127.0.0.1:5672) 我嗅探了从amqp节点发送到rabbitmq的数据包。 这来自运行示例/教程中第一个示例“send.js”的amqp.node: http://www.limorph.com/files/amqp_amqnode_send.txt […]

水平缩放在服务器之间共享input的应用程序

我正在构build一个应用程序,通过websocket接受input,这个input必须共享回其他可能连接到其他前端服务器的客户端。 为了简单想象一个多用户多房间聊天应用程序。 让input路由到正确的连接不是一个问题,它是服务器之间的消息传递,并能够扩展并保持消息的延迟。 现在我有一个每个前端连接到的代理程序,然后他们订阅一个队列来查看连接可能需要知道的任何事情。 这样做是为了切断接收来自前端永远不会使用的代理的消息。 不过,我仍然可以获得大约75%到85%的消息从经纪商发回到每个前端。 在旅行中,我正在做消息validation,parsing和任何其他业务逻辑的工作。 在旅途中我循环了本地数组的订阅,并将消息发送到每个订阅的连接。 例如:如果我在11个前端服务器上收到10条消息(总共110条消息 – 10条消息在本地处理,而不是由代理发回)* 0.75乐观预订级别= 75条消息被发送回每个服务器处理。 所以我们有10个本地+75个broker = 85个消息被每个服务器处理一段时间。 现在,我不会有100个每秒100个的前端服务器,也许是两个,但是通过代理程序发回给每个前端服务器的消息似乎会爆炸我通过其他前端服务器收到的更多消息。 代理进程是一个与RabbitMQ和PostgreSQL交谈的小型node.js应用程序。 前端服务器也是node.js应用程序。 我能做什么,或者应该采取不同的措施,以在大批量生产期间保持低延迟? 更新回复用户评论:虽然我期望在队列之间的连接会导致他们的前端服务器订阅,我不认为它是100%的每个服务器的重叠。 最糟糕的情况是,每个前端服务器都必须订阅代理上的每个队列,从而从代理获得100%的消息。 乐观地说,只有大约75%的消息确实需要被发回到任何特定的前端服务器。 itaifrenkel的第二次更新:两个用户发送的消息可能以不同的顺序返回。 只有在延迟非常低的情况下才可以接受,而且只有在发送的消息非常接近时才会发生。 如果它发生的消息秒分开,那么我会说我们有一个延迟和规模的问题。 有一种情况我们需要显示一个历史logging,但是由于我觉得这个问题超出了问题的范围,所以我把这个logging留下了。

bramqp&node.js:取消使用者时的错误(basic.cancel)

首先,我是rabbitmq和bramqp的新手。 我知道这可能是一个愚蠢的问题,但我一直在拉我的头发,因为这个问题在消除队列中的消费者。 我search了整个互联网,发现没有bramqp如何做basic.cancel代码的例子。 这是我的代码: var bramqp = require('bramqp'); var net = require('net'); var async = require('async'); var queueName = 'testQueue'; var consumerTag = 'testConsumer'; var exchangeName = 'testExchange'; var socket = net.connect({ port : 5672 }); bramqp.initialize(socket, 'rabbitmq/full/amqp0-9-1.stripped.extended', function(error, handle){ async.series([ function(seriesCallback) { handle.openAMQPCommunication('guest', 'guest', true, seriesCallback); }, function(seriesCallback) { handle.exchange.declare( 1 /*short reserved-1*/, exchangeName […]

使用NodeJS将RabbitMQ转换为AWS Redshift

我有一个RabbitMQ使用者在RabbitMQ中监听队列,并在NodeJS中接收事件数据。 我希望让消费者将每个数据事件发送到AWS Redishit(可能使用他们的JavaScript SDK),但是我找不到如何执行此操作的任何示例,我也无法在Amazon文档中find任何有关此过程的说明。 如何使用AWS JavaScript SDK将NodeJS中的数据发送到Redshift? 谢谢,德鲁

无法从云AMQP队列中获取消息

嗨,我想在我的帆应用程序中使用rabbitmq。 当我试图发布数据后,我的模型给连接适配器我可以看到我的兔子队列中收到的数据,但数据库尚未创build。 我使用mongo数据库作为我的模型,sails-rabbitmq作为我的node_module我引用了这个链接 npm install sails-rabbitmq 连接适配器是 – rabbitCluster: { adapter: 'sails-rabbitmq', //my amqp rabbitmq installation url url: 'amqp://localhost', }, MongoDB: { adapter: 'sails-mongo', host: 'localhost', port: 27017, user: '', password: '', database: 'myTest' } 在我的模型里面指定了连接如下 connection : ['rabbitCluster','MongoDB'] //in my config/rabbitmq.js file module.exports.rabbitmq = { pkFormat: 'string' }; 据我所知,我们不需要编写创build和更新控制器方法,它应该与sails提供的默认CRUD操作。 但是当我尝试创build数据库条目时,我没有得到任何回应。

如何正确检查在Node.js中重新连接后是否打开RabbitMQ通道?

我正在使用amqplib ,我试图实现重新连接机制。 但是,连接重新build立后,看起来我的频道仍然closures。 我该如何解决这个问题? 这是我的代码。 var pubQueue = []; module.exports = { connect: function (callback) { var self = this; amqp.connect(config.queue.url, function(err, connection) { if (err) { console.error("[AMQP]", err.message); return setTimeout(module.exports.connect, 2000); } connection.on("error", function(err) { if (err.message !== "Connection closing") { console.error("[AMQP] conn error", err.message); } }); connection.on("close", function() { console.error("[AMQP] reconnecting"); return setTimeout(module.exports.connect, […]