ホームページ > 記事 > ウェブフロントエンド > ノードでメッセージキューを使用する方法を簡単に分析した記事
メッセージキューとは何ですか?次の記事では、メッセージ キューの基本概念を説明し、ノードでメッセージ キューを使用する方法を紹介します。
##メッセージ キューとは
メッセージ キューは、メッセージ送信プロセス中にメッセージを保存するコンテナであり、本質的にはキュー (先入れ先出し)#Message
は、送信する必要があるデータを指します。これは、テキスト、文字列、オブジェクトなどの情報です。Message Queue
プロデューサ は、メッセージを待たずに、メッセージ キューにデータを格納した後、すぐに戻ることができます。
受信機が応答します。つまり、
Producer はデータがキューに挿入されることを保証し、誰がこのメッセージを受け取るかについて心配する必要はありません。メッセージの
受信者 は、メッセージの受信と処理のみに重点を置いています。 [関連チュートリアルの推奨事項:
nodejs ビデオ チュートリアル 、
プログラミング教育 ]
メッセージの受信者 によって処理されます。
上記のプロデューサ
とコンシューマ
Link (接続): サービス プログラム間のリンクを表します。そしてメッセージキュー。
チャネル: メッセージ キュー リンク間のチャネル。
キュー (キュー): メッセージ キューにデータを保存するキュー。メッセージ キュー サービスは複数のキューを持つことができます。
Exchange )
メッセージ キューメッセージを送信するときは、スイッチが必要です。指定しない場合は、デフォルトのスイッチが使用されます。スイッチの役割は、メッセージを対応するキューにプッシュすることです。メッセージキューには全部で4種類のスイッチがあります
Direct: キューモードを指定 メッセージが来ると指定したQueueのみに送信し、それ以外のQueueには送信します受け取りません。
PortalMAC では、brew コマンドを直接使用して、brew install rabbitmq
をインストールできます。
##node プロジェクトのインストール amqplib
amqplib是node中使用消息队列的一套工具,可以让我们快速地使用消息队列
地址: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('amqplib'); const config = require('./config'); const { connectUrl } = config; (async () => { let connection = await amqplib.connect(connectUrl); const exchangeName = 'testExchange'; const key = 'testQueue'; // 创建两个通道 const channel1 = await connection.createChannel(); const channel2 = await connection.createChannel(); // 指定一个交换机 await channel1.assertExchange(exchangeName, 'fanout', { durable: true, }); // 指定一个队列 await channel1.assertQueue(key); await channel1.bindQueue(key, exchangeName, key); channel1.consume(key, (msg) => { console.log('channel 1', msg.content.toString()); }); await channel2.assertExchange(exchangeName, 'fanout', { durable: true, }); await channel2.assertQueue(key); await channel2.bindQueue(key, exchangeName, key); channel2.consume(key, (msg) => { console.log('channel 2', msg.content.toString()); }); })();
执行后可以看到,两个通道可以同时工作接收消息
更多node相关知识,请访问:nodejs 教程!
以上がノードでメッセージキューを使用する方法を簡単に分析した記事の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。