如何从amqplib库使用node.JS的channel.assertQueue函数?

我正在开发一个使用RabbitMQ和Node.JS的消息应用程序。 我正在使用amqplib来达到这个目的。 我是Node.JS的新手,在理解amqplib的语法时遇到了一些困难。例如有一个声明队列的函数,那就是

channel.assertQueue([queue, [options, [function(err, ok) {...}]]]); 

我从前2-3天一直提到这一点 ,但我仍然不清楚这些 – > errok 。 如何使用这些参数?

一个例子将非常感激。

ampqlib github页面有一些关于如何使用库的例子,使用callbacks或promise。

我复制了他们的第一个例子,并添加了一些注释来解释发生了什么。

也许值得检查他们的教程示例 ,以及官方的RabbitMQ教程 。

 var amqp = require('amqplib/callback_api'); var q = 'tasks'; // connects to rabbitmq amqp.connect('amqp://localhost', function(err, conn) { // this function will be called when the connection is created // `err` will contain the error object, if any errors occurred // `conn` will contain the connection object if (err != null) bail(err); // calls `bail` function if an error occurred when connecting consumer(conn); // creates a consumer publisher(conn); // creates a publisher }); function bail(err) { console.error(err); process.exit(1); } // Publisher function publisher(conn) { conn.createChannel(on_open); // creates a channel and call `on_open` when done function on_open(err, ch) { // this function will be called when the channel is created // `err` will contain the error object, if any errors occurred // `ch` will contain the channel object if (err != null) bail(err); // calls `bail` function if an error occurred when creating the channel ch.assertQueue(q); // asserts the queue exists ch.sendToQueue(q, new Buffer('something to do')); // sends a message to the queue } } // Consumer function consumer(conn) { var ok = conn.createChannel(on_open); // creates a channel and call `on_open` when done function on_open(err, ch) { // this function will be called when the channel is created // `err` will contain the error object, if any errors occurred // `ch` will contain the channel object if (err != null) bail(err); // calls `bail` function if an error occurred when creating the channel ch.assertQueue(q); // asserts the queue exists ch.consume(q, function(msg) { //consumes the queue if (msg !== null) { console.log(msg.content.toString()); // writes the received message to the console ch.ack(msg); // acknowledge that the message was received } }); } }