目次
1. メッセージ キュー
ホームページ ウェブフロントエンド jsチュートリアル メッセージキューとは何ですか?ノードでメッセージキューを使用するにはどうすればよいですか?

メッセージキューとは何ですか?ノードでメッセージキューを使用するにはどうすればよいですか?

Jun 02, 2022 am 10:05 AM
nodejs​ node.js node

メッセージキューとは何ですか?次の記事では、メッセージ キューの基本概念を説明し、node でメッセージ キューを使用する方法を紹介します。

メッセージキューとは何ですか?ノードでメッセージキューを使用するにはどうすればよいですか?

1. メッセージ キュー

メッセージ キューとは

メッセージ キューは、メッセージ送信プロセス中にメッセージを保存するコンテナであり、本質的にはキュー (先入れ先出し)

メッセージキューとは何ですか?ノードでメッセージキューを使用するにはどうすればよいですか?

##Message は、送信する必要があるデータを指します。これは、テキスト、文字列、オブジェクトなどの情報です。

Message Queue は、2 つのアプリケーション間の通信サービスです。メッセージの プロデューサ は、メッセージを待たずに、メッセージ キューにデータを格納した後、すぐに戻ることができます。 受信機が応答します。つまり、Producer はデータがキューに挿入されることを保証し、誰がこのメッセージを受け取るかについて心配する必要はありません。メッセージの 受信者 は、メッセージの受信と処理のみに重点を置いています。

メッセージキューとは何ですか?ノードでメッセージキューを使用するにはどうすればよいですか?

#メッセージ キューでできること

  • 分離

    上で紹介したように、メッセージ キューはメッセージのプロデューサーとメッセージの受信者を分離しており、どちらも他方の影響を受けません。

  • 非同期

    非同期とは、リクエストの応答時間を短縮することです。メッセージのプロデューサーは、単純なロジックを処理し、データをメッセージ キューに入れて返すだけで済みます。 . データベース操作、IO 操作などの複雑なロジックは、 メッセージの受信者 によって処理されます。

  • ピークシェービング

    メッセージ キュー アプリケーションは、処理中に、瞬間的に流入するリクエスト情報をメッセージ キューに保存し、すぐに返すことができます。その後、リクエストはメッセージの受信者によってデータに基づいて処理されます。

  • アプリケーション シナリオ

    ゲーム アクティビティ、フラッシュ セール アクティビティ、注文などのアプリケーションでは、トラフィックが突然増加します。

2. メッセージ キューの概念

メッセージ キューの基本情報を紹介した後、開発する前にメッセージ キューの一部を紹介しましょう。メッセージ キュー。基本概念~

メッセージのプロデューサとコンシューマ

上記のプロデューサ

コンシューマ

# リンク、チャネル、キューを提供します

    Link (接続): サービス プログラム間のリンクを表します。そしてメッセージキュー。
  • サービス プログラムは複数のリンクを作成できます

  • チャネル: メッセージ キュー リンク間のチャネル。
  • 1 つのリンクに複数のチャネルを含めることができます。

    キュー (キュー): メッセージ キューにデータを保存するキュー。メッセージ キュー サービスは複数のキューを持つことができます。
  • #要約すると、リンクとチャネル キューの関係は次のようになります。

メッセージキューとは何ですか?ノードでメッセージキューを使用するにはどうすればよいですか?Exchange )

メッセージ キューメッセージを送信するときは、

スイッチが必要です。指定しない場合は、デフォルトのスイッチが使用されます。スイッチの役割は、メッセージを対応するキューにプッシュすることです。メッセージキューには全部で4種類のスイッチがあります

Direct: キューモードを指定 メッセージが来ると指定したQueueのみに送信し、それ以外のQueueには送信します受け取りません。

  • fanout: ブロードキャスト モード。メッセージが到着すると、すべてのキューに送信されます。

  • トピック: ファジー マッチング モード、ファジー マッチングによる対応する転送。

  • header: ダイレクト モードに似ています。

  • #3.node は RabbitMQ を使用します

##rabbitMQ をインストールします

#RabbitMQ のインストールは、公式 Web サイトからダウンロードしてインストールできます。PortalMAC では、brew コマンドを直接使用して、

brew install rabbitmq
ログイン後にコピー
をインストールできます。

    インストールが完了したら、rabbitmq サービスを開始します。 complete
  • 次に、ローカルで http://localhost:15672/ にアクセスして、rabbitmq サービスの背景を確認します。初期アカウントとパスワードは
  • guest

メッセージキューとは何ですか?ノードでメッセージキューを使用するにはどうすればよいですか?

##node プロジェクトのインストール amqplib

メッセージキューとは何ですか?ノードでメッセージキューを使用するにはどうすればよいですか? amqplib です。ノードでメッセージ キューを使用するためのツールのセットです。これにより、メッセージ キューをすばやく使用できるようになります。

地址:https://www.npmjs.com/package/amqplib

创建生产者

/** product.js 消费者 */


const amqplib = require('amqplib');
const config = require('./config');

const { connectUrl } = config;

(async () => {
  const connection = await amqplib.connect(connectUrl);

  const channel = await connection.createChannel();
  const exchangeName = 'testExchange';
  const key = 'testQueue';
  const sendMsg = 'hello rabbitmq';
    
  // 知道交换机类型
  await channel.assertExchange(exchangeName, 'fanout', {
    durable: true,
  });
    
  // 指定一个队列
  await channel.assertQueue(key);

  for (let i = 0; i < 100; i++) {
    channel.publish(exchangeName, key, Buffer.from(`${sendMsg} ${i}`));
  }

  await channel.close();
  await connection.close();
})();
ログイン後にコピー

运行后在后台可以看到新增了一个有100条消息的队列

メッセージキューとは何ですか?ノードでメッセージキューを使用するにはどうすればよいですか?

创建消费者

/** customer.js 消费者 */

const amqplib = require(&#39;amqplib&#39;);
const config = require(&#39;./config&#39;);

const { connectUrl } = config;

(async () => {
  let connection = await amqplib.connect(connectUrl);
  const exchangeName = &#39;testExchange&#39;;
  const key = &#39;testQueue&#39;;
  // 创建两个通道
  const channel1 = await connection.createChannel();
  const channel2 = await connection.createChannel();
  // 指定一个交换机
  await channel1.assertExchange(exchangeName, &#39;fanout&#39;, {
    durable: true,
  });
  // 指定一个队列
  await channel1.assertQueue(key);
  await channel1.bindQueue(key, exchangeName, key);
  channel1.consume(key, (msg) => {
    console.log(&#39;channel 1&#39;, msg.content.toString());
  });

  await channel2.assertExchange(exchangeName, &#39;fanout&#39;, {
    durable: true,
  });
  await channel2.assertQueue(key);
  await channel2.bindQueue(key, exchangeName, key);
  channel2.consume(key, (msg) => {
    console.log(&#39;channel 2&#39;, msg.content.toString());
  });
})();
ログイン後にコピー

执行后可以看到,两个通道可以同时工作接收消息

メッセージキューとは何ですか?ノードでメッセージキューを使用するにはどうすればよいですか?

更多node相关知识,请访问:nodejs 教程

以上がメッセージキューとは何ですか?ノードでメッセージキューを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Nodeのメモリ制御に関する記事 Nodeのメモリ制御に関する記事 Apr 26, 2023 pm 05:37 PM

ノンブロッキングおよびイベント駆動に基づいて構築されたノード サービスには、メモリ消費量が少ないという利点があり、大量のネットワーク リクエストの処理に非常に適しています。大量のリクエストを前提として、「メモリ制御」に関する問題を考慮する必要があります。 1. V8 のガベージ コレクション メカニズムとメモリ制限 Js はガベージ コレクション マシンによって制御されます

Node V8 エンジンのメモリと GC の詳細な図による説明 Node V8 エンジンのメモリと GC の詳細な図による説明 Mar 29, 2023 pm 06:02 PM

この記事では、NodeJS V8 エンジンのメモリとガベージ コレクター (GC) について詳しく説明します。

Express を使用してノード プロジェクトでファイルのアップロードを処理する方法 Express を使用してノード プロジェクトでファイルのアップロードを処理する方法 Mar 28, 2023 pm 07:28 PM

ファイルのアップロードをどのように処理するか?次の記事では、Express を使用してノード プロジェクトでファイルのアップロードを処理する方法を紹介します。

Node の File モジュールについて詳しく説明しましょう Node の File モジュールについて詳しく説明しましょう Apr 24, 2023 pm 05:49 PM

ファイル モジュールは、ファイルの読み取り/書き込み/開く/閉じる/削除の追加など、基礎となるファイル操作をカプセル化したものです。ファイル モジュールの最大の特徴は、すべてのメソッドが **同期** と ** の 2 つのバージョンを提供することです。 asynchronous**、sync サフィックスが付いているメソッドはすべて同期メソッドであり、持たないメソッドはすべて異種メソッドです。

Nodeのプロセス管理ツール「pm2」を徹底分析 Nodeのプロセス管理ツール「pm2」を徹底分析 Apr 03, 2023 pm 06:02 PM

この記事では、Node のプロセス管理ツール「pm2」について説明し、pm2 が必要な理由、pm2 のインストール方法と使用方法について説明します。皆様のお役に立てれば幸いです。

PIノードティーチング:PIノードとは何ですか? PIノードをインストールしてセットアップする方法は? PIノードティーチング:PIノードとは何ですか? PIノードをインストールしてセットアップする方法は? Mar 05, 2025 pm 05:57 PM

ピン張りのノードの詳細な説明とインストールガイドこの記事では、ピネットワークのエコシステムを詳細に紹介します - PIノードは、ピン系生態系における重要な役割であり、設置と構成の完全な手順を提供します。 Pinetworkブロックチェーンテストネットワークの発売後、PIノードは多くの先駆者の重要な部分になり、テストに積極的に参加し、今後のメインネットワークリリースの準備をしています。まだピン張りのものがわからない場合は、ピコインとは何かを参照してください。リストの価格はいくらですか? PIの使用、マイニング、セキュリティ分析。パインワークとは何ですか?ピン競技プロジェクトは2019年に開始され、独占的な暗号通貨PIコインを所有しています。このプロジェクトは、誰もが参加できるものを作成することを目指しています

Nodeのイベントループについて話しましょう Nodeのイベントループについて話しましょう Apr 11, 2023 pm 07:08 PM

イベント ループは Node.js の基本的な部分であり、メイン スレッドがブロックされていないことを確認することで非同期プログラミングが可能になります。イベント ループを理解することは、効率的なアプリケーションを構築するために重要です。次の記事では、Node のイベント ループについて詳しく説明します。お役に立てれば幸いです。

ノードがnpmコマンドを使用できない場合はどうすればよいですか? ノードがnpmコマンドを使用できない場合はどうすればよいですか? Feb 08, 2023 am 10:09 AM

ノードが npm コマンドを使用できない理由は、環境変数が正しく設定されていないためです。解決策は次のとおりです: 1. 「システムのプロパティ」を開きます; 2. 「環境変数」->「システム変数」を見つけて、環境を編集します。変数; 3.nodejs フォルダーの場所を見つけます; 4.「OK」をクリックします。

See all articles