【问题标题】:nodejs amqp can only receive message oncenodejs amqp 只能接收一次消息
【发布时间】:2015-04-13 17:55:41
【问题描述】:
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 实现的问题?

【问题讨论】:

    标签: node.js amqp node-amqp


    【解决方案1】:

    正如fine manual 所说:

    将选项参数设置为{ ack: true }(默认为false)将使AMQP 服务器一次只传递一条消息。当您需要下一条消息时,请致电q.shift()

    你没有打电话给queue.shift()

    queue.subscribe({ ack : true }, function(msg) {
      console.log(msg);
      queue.shift(); // <-- necessary
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 2017-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      相关资源
      最近更新 更多