ホームページ >ウェブフロントエンド >jsチュートリアル >キューデータ構造:ノードタスクの構築方法キュー

キューデータ構造:ノードタスクの構築方法キュー

Christopher Nolan
Christopher Nolanオリジナル
2025-02-12 08:23:09326ブラウズ

このチュートリアルでは、キューデータ構造について説明し、電子メールニュースレター配信などの長期にわたるタスクの処理によく使用されるキューイングシステムでのアプリケーションを実証します。 MongoDBをメッセージブローカーとして使用して、シンプルなノードタスクキューを作成します。

Queue Data Structures: How to Build a Node Task Queue要求に応じてすぐにタスクを実行することは、必ずしも実行可能ではありません。 電子メールニュースレターシステムを想像してみてください。何千もの電子メールを即座に送信すると、システムが圧倒されます。 同様に、すぐに変更されたアップロードされた画像を変更すると、受け入れられない遅延が生じます。 デカップリングタスクは、バックグラウンドプロセスがワークロードを処理する間、インスタントユーザー応答を提供します。

重要な概念:

mongodbを使用した効率的なキューイング:
    スケーラブルなノードタスクキューを構築するためのmongodbの機能を活用します。 改善されたユーザーエクスペリエンスのためのデカップリング
  • ユーザーインタラクションからのタスク処理をより高速な応答のために個別に処理します。
  • 基本キューの実装:
  • キュー管理にjavaScriptアレイ()またはES6クラスを使用します。
  • 堅牢なキューイングプラットフォーム:エンタープライズレベルのアプリケーションについては、Redis、Rabbitmq、Amazon SQSなどを探索します。 push()shift()モジュール:
  • mongodb
  • キューデータ構造:
  • キューは、FIFO(ファーストインファーストアウト)データ構造です。 アイテムが後部に追加(enqued)され、前面から取り外されます(dequeued)。 queue-mongodb基本的なjavaScriptキュー:

JavaScriptアレイを使用して簡単なキューを実装できます。 より構造化されたアプローチでは、ES6クラスを使用しています:

これらは、それほど重要ではないクライアント側のタスクに適していますが、持続性とマルチアプリケーションアクセスがありません。

キューイングプラットフォーム(redis、rabbitmqなど):

複雑なサーバーアプリケーションの場合、専用のメッセージブローカーが提供します:

<code class="language-javascript">const queue = [];
queue.push('item 1');
queue.push('item 2');
console.log(queue.shift()); // item 1
console.log(queue.shift()); // item 2</code>

データの永続性

<code class="language-javascript">class Queue {
  constructor() { this.q = []; }
  send(item) { this.q.push(item); }
  receive() { return this.q.shift(); }
}</code>
複数のアクセスプロトコル

複数のキュー

メッセージングの遅延

トランザクションのようなサポート

公開パターン
    を公開します
  • メッセージブローカーとしてmongodbを使用:
  • モジュールを使用して、堅牢で簡単に実装されたノードタスクキューに使用します。
  • ノードタスクキュープロジェクトのセットアップ:
    1. node.js 14。
    2. をインストールします
    3. プロジェクトフォルダー(queue-test)を作成します。
    4. createpackage.json
    <code class="language-javascript">const queue = [];
    queue.push('item 1');
    queue.push('item 2');
    console.log(queue.shift()); // item 1
    console.log(queue.shift()); // item 2</code>
    1. 依存関係のインストール:npm install
    2. mongodb接続の詳細を使用して.envファイルを作成します(例:QUEUE_DB_HOSTQUEUE_DB_PORTなど)。
    3. (オプション)MongodbインスタンスにDocker Composeを使用します

    (キューに追加): send.js

    <code class="language-javascript">class Queue {
      constructor() { this.q = []; }
      send(item) { this.q.push(item); }
      receive() { return this.q.shift(); }
    }</code>

    (キューからの処理): receive.js

    <code class="language-json">{
      "name": "queue-test",
      "version": "1.0.0",
      "type": "module",
      "scripts": {
        "send": "node ./send.js",
        "receive": "node ./receive.js"
      },
      "dependencies": {
        "@craigbuckler/queue-mongodb": "^1.0.0", // Adjust version as needed
        "dotenv": "^16.0.3" // Add dotenv for environment variables
      }
    }</code>

    モジュールの詳細:queue-mongodb モジュールはMongoDBを保存に使用します。

    メソッドはドキュメントを追加し、

    が最も古いアイテムを取得して削除します。 send()receive()、およびremove()は、追加のキュー管理機能を提供します。purge() count()

    結論:

    このチュートリアルは、mongoDBを使用してnode.jsにタスクキューを実装する実用的で効率的な方法を示しています。 このアプローチは、シンプルさとスケーラビリティのバランスを取り、幅広いアプリケーションに適しています。 コードと構成を特定のニーズと環境に適応させることを忘れないでください。 完全なコードはgithubで利用できます(実際のgithubリポジトリが利用可能な場合はリンクが提供されます)。

以上がキューデータ構造:ノードタスクの構築方法キューの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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