How to use channel.assertQueue function from amqplib library for node.JS?

I am developing a messaging application using RabbitMQ and Node.JS. For this I use amqplib. I am new to Node.JS and find some difficulties in understanding amqplib syntax .. Ex. there is a function for declaring a queue, i.e.

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

I refer to It in the last 2-3 days, but still I do not know about it → errand ok, How to use these parameters?

An example would be greatly appreciated.

+4
source share
1 answer

The ampqlib github page provides examples of using the library using either callbacks or promises.

, , .

, , 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
            }
        });
    }
}
+7

Source: https://habr.com/ru/post/1589427/


All Articles