如何将 amqplib 库中的 channel.assertQueue 函数用于 node.JS?
How to use channel.assertQueue function from amqplib library for node.JS?
我正在使用 RabbitMQ 开发消息传递应用程序,并且 Node.JS。为此,我正在使用 amqplib。我是 Node.JS 的新手,在理解 amqplib 的语法方面发现了一些困难。
例如有一个声明队列的函数,
即
channel.assertQueue([queue, [options, [function(err, ok) {...}]]]);
过去 2-3 天我一直在参考 This,但我仍然不清楚这些 -> err
和 ok
。如何使用这些参数?
一个例子将不胜感激。
ampqlib github page 有一些关于如何使用该库的示例,使用回调或承诺。
我复制了他们的第一个示例并添加了一些注释来解释发生了什么。
可能值得检查他们的 tutorial examples as well, that follows the official RabbitMQ tutorials。
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
}
});
}
}
我正在使用 RabbitMQ 开发消息传递应用程序,并且 Node.JS。为此,我正在使用 amqplib。我是 Node.JS 的新手,在理解 amqplib 的语法方面发现了一些困难。 例如有一个声明队列的函数, 即
channel.assertQueue([queue, [options, [function(err, ok) {...}]]]);
过去 2-3 天我一直在参考 This,但我仍然不清楚这些 -> err
和 ok
。如何使用这些参数?
一个例子将不胜感激。
ampqlib github page 有一些关于如何使用该库的示例,使用回调或承诺。
我复制了他们的第一个示例并添加了一些注释来解释发生了什么。
可能值得检查他们的 tutorial examples as well, that follows the official RabbitMQ tutorials。
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
}
});
}
}