Home > Web Front-end > JS Tutorial > Getting started with RabbitMq using NodeJs

Getting started with RabbitMq using NodeJs

王林
Release: 2024-09-07 15:00:37
Original
414 people have browsed it

Introduction to RabbitMq

RabbitMq is a message broker that allows sending and receiving messages between different services. It is a message broker that implements the Advanced Message Queuing Protocol (AMQP). Written with Erlang Programming Language.

Installing RabbitMq

RabbitMq can be installed on different operating systems Using there respective package managers. RabbitMQ requires Erlang/OTP to be installed beforehand, please refer to the official documentation for more information.

  • Linux
sudo apt-get install rabbitmq-server
Copy after login
  • Mac
brew install rabbitmq
Copy after login

Once installed, we can start the RabbitMq server using the following command:

sudo rabbitmq-server
Copy after login

Getting started with RabbitMq using NodeJs

Once the server is started, we can access rabbitmq from our application using the default port 5672.

To enable the RabbitMq management console, we can run the following command:

sudo rabbitmq-plugins enable rabbitmq_management
Copy after login

we can access the RabbitMq management console by visiting http://localhost:15672/ in your browser. The default username and password are guest.

Getting started with RabbitMq using NodeJs

Setting up RabbitMq with NodeJs

To interact with RabbitMq from NodeJs, we can use the amqplib library. We can install the library using the following command:

npm install amqplib
Copy after login

To connect to RabbitMq from NodeJs and create a channel to interact with RabbitMq, we can use the following code:

const amqp = require("amqplib");

const connect = async (url) => {
  const connection = await amqp.connect(url);
  const channel = await connection.createChannel();

  return channel;
};

connect("amqp://localhost:5672").then((channel) => {
  console.log("Connected to RabbitMQ");
  channel.close();
  process.exit(0);
});

Copy after login

Now, we have a channel to interact with RabbitMq. We can use this channel to send and receive messages from RabbitMq. let name our queue mq-test-queue and send a message to the queue.

connect("amqp://localhost:5672").then((channel) => {
  console.log("Connected to RabbitMQ");
  channel.assertQueue("mq-test-queue");
  console.log("Queue created");
  channel.sendToQueue("mq-test-queue", Buffer.from("Hello World!"));
  console.log("Message sent");
});

Copy after login

We have created a queue mq-test-queue and sent a message Hello World! to the queue. To create a Queue, we have used the assertQueue method and to send a message to the queue, we have used the sendToQueue method.

To receive a message from the queue, we can use the consume method.

connect("amqp://localhost:5672").then((channel) => {
  console.log("Connected to RabbitMQ");
  channel.assertQueue("mq-test-queue");
  console.log("Queue created");
  channel.sendToQueue("mq-test-queue", Buffer.from("Hello World!"));
  console.log("Message sent");
  channel.consume("mq-test-queue", (msg) => {
    console.log("Message received", msg.content.toString());
  });
});
Copy after login

The consume method takes a callback function and passes the message object to the callback function to access the message content using msg.content.toString().

After consuming the message, we need to ack or nack the message to remove the message from the queue. We can use the ack method to acknowledge the message and the nack method to reject the message.

For this example, we will ack the message after consuming the message.

const amqp = require("amqplib");

const connect = async (url) => {
  const connection = await amqp.connect(url);
  const channel = await connection.createChannel();

  return channel;
};

connect("amqp://localhost:5672").then((channel) => {
  console.log("Connected to RabbitMQ");
  channel.assertQueue("mq-test-queue");
  console.log("Queue created");
  channel.sendToQueue("mq-test-queue", Buffer.from("Hello World!"));
  console.log("Message sent");
  channel.consume("mq-test-queue", (msg) => {
    console.log("Message received", msg.content.toString());
    channel.ack(msg);
  });
});
Copy after login

Getting started with RabbitMq using NodeJs

We can see messages sent and received successfully from the queue. using rabbitmq management console.

Conclusion

In this article, we have learned how to set up RabbitMq and interact with RabbitMq from NodeJs using the amqplib library. We have created a queue, sent a message to the queue, and received a message from the queue.

The above is the detailed content of Getting started with RabbitMq using NodeJs. For more information, please follow other related articles on the PHP Chinese website!

source:dev.to
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template