首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nodejs amqp只能接收一次消息

nodejs amqp只能接收一次消息
EN

Stack Overflow用户
提问于 2015-04-14 01:55:41
回答 1查看 276关注 0票数 0
代码语言:javascript
复制
var amqp=require('amqp');
var conn=amqp.createConnection({/**/});

conn.on('ready',function() {
        console.log('Server Connected');
        conn.exchange('order',options={type:'topic'},function(exchange) {
                console.log('Exchange connected');
                conn.queue('order-consumer',function(queue) {
                        queue.bind(exchange,'');
                        console.log('Queue Connected');
                        queue.subscribe({ack:true},function(msg) {
                                //conn.end();
                                console.log(msg);
                        });
                });
        });
});

注意,conn.end()被注释掉了。经过大量的研究,我仍然不明白为什么这里需要它。虽然它创造了魔力,但每次连接都会结束,并且在每次消息后都必须再次连接到服务器。

AMQP是这样设计的吗?或者这是node-amqp实现的问题?

EN

回答 1

Stack Overflow用户

发布于 2015-04-14 02:34:29

正如fine manual所说的:

将options参数设置为{ ack: true } (缺省为false)将使

服务器一次只发送一条消息。当您需要下一条消息时,调用q.shift()

你不能给queue.shift()打电话

代码语言:javascript
复制
queue.subscribe({ ack : true }, function(msg) {
  console.log(msg);
  queue.shift(); // <-- necessary
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29611869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档