首頁 > web前端 > js教程 > 主體

使用 NodeJs 開始使用 RabbitMq

王林
發布: 2024-09-07 15:00:37
原創
354 人瀏覽過

RabbitMq 簡介

RabbitMq 是一個訊息代理,允許在不同服務之間發送和接收訊息。它是一個實作高階訊息佇列協定(AMQP)的訊息代理程式。用 Erlang 程式語言寫成。

安裝 RabbitMq

RabbitMq 可以使用各自的套件管理器安裝在不同的作業系統上。 RabbitMQ 需要預先安裝 Erlang/OTP,更多資訊請參閱官方文件。

  • Linux
sudo apt-get install rabbitmq-server
登入後複製
  • 麥克
brew install rabbitmq
登入後複製

安裝後,我們可以使用以下命令啟動 RabbitMq 伺服器:

sudo rabbitmq-server
登入後複製

Getting started with RabbitMq using NodeJs

伺服器啟動後,我們可以使用預設連接埠 5672 從我們的應用程式存取rabbitmq。

要啟用 RabbitMq 管理控制台,我們可以執行以下命令:

sudo rabbitmq-plugins enable rabbitmq_management
登入後複製

我們可以透過瀏覽器存取http://localhost:15672/來存取RabbitMq管理控制台。預設使用者名稱和密碼是 guest。

Getting started with RabbitMq using NodeJs

使用 NodeJs 設定 RabbitMq

要從 NodeJs 與 RabbitMq 交互,我們可以使用 amqplib 函式庫。我們可以使用以下命令安裝該程式庫:

npm install amqplib
登入後複製

要從 NodeJs 連接到 RabbitMq 並建立與 RabbitMq 互動的通道,我們可以使用以下程式碼:

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

登入後複製

現在,我們有了一個與 RabbitMq 互動的通道。我們可以使用此通道從 RabbitMq 發送和接收訊息。讓我們將佇列命名為 mq-test-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");
});

登入後複製

我們建立了一個佇列 mq-test-queue 並發送了一條訊息 Hello World!到隊列中。為了建立隊列,我們使用了assertQueue方法,為了向隊列發送訊息,我們使用了sendToQueue方法。

要從佇列接收訊息,我們可以使用consume方法。

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());
  });
});
登入後複製

consum方法接受一個回呼函數,並將訊息物件傳遞給回呼函數,以使用msg.content.toString()存取訊息內容。

消費訊息後,我們需要ack或nack訊息以將訊息從佇列中刪除。我們可以使用 ack 方法來確認訊息,使用 nack 方法來拒絕訊息。

對於這個例子,我們將在消費消息後確認訊息。

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);
  });
});
登入後複製

Getting started with RabbitMq using NodeJs

我們可以看到訊息從佇列中發送和接收成功。使用rabbitmq管理控制台。

結論

在本文中,我們學習如何使用 amqplib 函式庫設定 RabbitMq 並從 NodeJs 與 RabbitMq 互動。我們創建了一個隊列,向隊列發送了一條訊息,並從隊列中接收了一條訊息。

以上是使用 NodeJs 開始使用 RabbitMq的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!