Tag: amqp

如何在nodejs上使用来自RabbitMQ的消息

我是一个试图在我的nodejs代码上实现RabbitMQ的新用户。 我已经提到了几个使用它的例子,但是如何用实时的例子还不清楚。 我正在尝试使用Rabbit MQ从队列中读取消息。 我怎样才能从nodejs的队列中读取消息? 提前致谢!

如何使用AMQP /节点处理大于100个消息

我们目前正在构build一个微型服务(Node v8.3.0),它必须消耗RabbitMQ(RabbitMQ 3.6.12,Erlang 19.2.1)每秒大约60-150条消息。 有时它像一个魅力,队列中没有剩余的消息。 但大多数情况下,这些消息都是卡住的,每秒只能处理5-20条消息,并累积到队列中的3M消息。 现在我们真的好奇如何处理与一个消费者的所有这些消息。 因为已经有一些Java消费者没有任何延迟地处理所有这些消息。 我们使用基于amqplib的 这个节点库 。 此外,处理程序立即确认传入的消息 – 业务逻辑是绝对asynchronous的。 所以即使没有任何业务逻辑, 交换机的types是topic ,它不是durable ,队列启用了auto-deletingfunction。 我们尝试禁用预取,预取= 1和100 ,没有任何成功。 所以.. 1)您使用哪个节点的AMQP / RabbitMQ库? 2)每秒处理多less条消息? 3)有没有进一步的改进/build议? 谢谢!

如何用RabbitMQ和nodejs运行独立的java

我一直在努力把node.js放在我们的java web服务器前,以利用节点的asynchronous处理 – 做一些轻量级的处理和其他任务,最终socket.io。 应用程序的大部分实际工作都是用java完成的,到目前为止,我们一直使用jetty webserver来处理所有的请求。 我一直在考虑使用node-http-proxy来转发(可能修改的请求)。 经过进一步考虑,我意识到不是转发http请求,而是使用像RabbitMQ和node-amqp库这样的更强大的通信协议。 这也可以更好地支持从java通过节点和socket.io推回到浏览器。 我的问题是:现在,处理所有传入的请求与节点,是否有任何理由继续在docker运行Java? 如果没有,我应该直接从命令行上的main方法运行java代码吗? 最后,这种方法是否存在重大缺陷? 我们的应用程序是一个单一的页面应用程序,并超越第一个请求加载页面最初,所有进一步的调用只是restful json调用,应该很容易通过amqp转移。

处理node-amqp(node.js)中的独占队列订阅时出错

当您订阅独占队列(一次只允许一个消费者)时,node-amqp会在队列超额订阅(已经有消费者)时抛出exception。 我试过使用.on(“error”,cb)语法。 我试过错误域(节点0.10.0) 尝试/抓住显然没有工作 这是我的订阅线,但没什么特别的: queue.subscribe({ack: true, prefetchCount: 1, exclusive: exclusive}, cbExecute).addCallback((ok) -> listeners[type] = ok.consumerTag); 当使用队列时,会得到未处理的exception: ACCESS_REFUSED – queue 'respQ' in vhost 'brkoacph' in exclusive use 看看node-amqp里面的内容,我发现它们在模块内部实现了一个独立的任务队列,所以当发生错误时,任务在独立的上下文中运行。 有没有解决方法? …或者我只是做错了什么?

当node-amqp没有exception

我正在尝试使用node-amqp。 当在连接到兔子的部分抛出一个exception,我可以得到这个exception,但它永远重新启动连接到兔子。 看那个: amqp = require("amqp") # Open a connection conn = amqp.createConnection( {url: "amqp://localhost"} , {reconnect: true}) conn.on "ready", -> console.log "Conn Ready" conn.queue "queueX", {ack:true}, (queue) -> console.log "Subscribed #{queue.name}" assdsd() #calling non-exiting method. No exception is thrown but the connection is restarted 系统循环引发错误。 我知道这是因为{recconnect:true}。 但我希望能够自行处理例外情况。 任何想法? 我的脚本的输出是这样的: Conn Ready Subscribed queueX Conn […]

Node.js中的ECONNRESET Azure中的RabbitMQ使用者

我已经看了这个问题好几天了,这让我非常难过。 我们有一个基于node.js的rabbitmq消费者,已经运行了一年多,没有任何问题。 最近,我们将应用程序部署到Azure,并将node.js组件部署到基于窗口的PAAS辅助angular色。 我们使用方形mo amqp-lib( https://github.com/squaremo/amqp.node )作为我们的客户端库接收来自RabbitMQ的消息。 angular色可以正常启动,处理请求没有问题,但会定期回收。 检查部署的VM上的C:\ resources中的WaHostBootstrapper日志显示如下: [00001180:00001548, 2015/06/09, 10:01:17.385, INFO ] Getting status from client RemoteAccessAgent.exe (2816). [00001180:00001548, 2015/06/09, 10:01:17.385, INFO ] Client reported status 0. [00001180:00001548, 2015/06/09, 10:01:17.385, INFO ] Getting status from client WaWorkerHost.exe (1380). [00001180:00001548, 2015/06/09, 10:01:17.385, INFO ] Client reported status 3. [00001180:00003288, 2015/06/09, 10:01:17.385, INFO ] […]

稳定节点JS AMQP 1.0客户端(事件中心)

我正在为NodeJS寻找一个稳定的AMQP 1.0客户端,以便我可以使用来自Azure事件中心的事件。 我曾尝试使用https://github.com/noodlefrenzy/node-amqp10 ,但它偶尔扼杀某些有效载荷与像malformed payload: Unknown code prefix: 0x30和malformed payload: Unable to decode bytes from message body: 005375b00002810c5b7b226576656e7474797065223 ( …)。 我将不胜感激人们在NodeJS中为稳定的AMQP 1.0客户提供的任何方向。 我很惊讶,迄今为止我还找不到一个,因为否则看起来Azure没有支持整个开发者基础。

我无法获取AMQP发布和订阅,从IBM MQ v9.0.1.0开始使用Node JS v6和mqlight v2.0运行

我想获得下面的示例片段发布和订阅,我不能让它与节点JS 6和mqlight v2.0运行 https://www.npmjs.com/package/mqlight?cm_mc_uid=47189062138014548006442&cm_mc_sid_50200000=1490060435 // Receive: var mqlight = require('mqlight'); var recvClient = mqlight.createClient({service: 'amqp://user:user@localhost:5672'}); recvClient.on('started', function() { recvClient.subscribe('/TEST/#','sub1'); recvClient.on('message', function(data, delivery) { console.log(data); }); }); // Send: var sendClient = mqlight.createClient({service: 'amqp://user:user@localhost:5672'}); sendClient.on('started', function() { sendClient.send('TEST'); }); 我使用节点js v6运行示例代码mqlight 2.0 $node mqlight_sample.js events.js:160 throw er; // Unhandled 'error' event ^ SecurityError: AMQXR0100E: A connection […]

单独的Web和工作进程,是否应为每个进程build立一个新的连接?

我目前正在尝试构build一个具有Web和工作进程的NodeJS Web应用程序,并使用AMQP在它们之间进行通信。 使用我当前的设置,启动应用程序包括启动Web进程的脚本( server.js )和工作进程的另一个脚本( worker.js )。 每个文件都include第三个文件, amqp.js ,它使用一个启动函数,包括创build一个连接,然后创build一个通道,然后声明队列。 然而,在试图debugging另外一个问题时,我碰到了这篇文章 ,它显示了一个不同的结构:首先创build一个连接,然后启动两个进程,每个进程创build一个通往该连接的通道并断言两个队列。 我应该为每个工作人员build立一个新的连接吗?我可以在networking和工作人员分开的环境中实现这个连接吗?

node-amqp和async ack

我正在使用rabbitmq的项目。 我必须使用的队列(让我们称之为“testq”不时得到大约35000件必须处理的项目。 基本上(很短): var q = new Queue(); q.subscribe('testq', { ack: true, prefetchCount: 100 }, function(doc, object, queueOptions, originalDocument) { //do some action originalDocument.acknowledge(); }); 我现在的问题是:我想一次获得100条消息(prefetch count = 100),但是我什么时候知道所有的100条消息都已经被处理,这样我就可以确认并获得下100条消息了? “做一些行动块”是asynchronous:( 感谢您的任何build议!