6

node.js と mongodb を使用して Web アプリを構築しています。遅延ジョブを追加する必要があります。たとえば、サインアップの 1 か月後にユーザーにメールを送信します。Kue 以外の遅延ジョブに対する既存のソリューションは見つかりませんでしたが、Redis を使用しており、Web アプリに別のリソースを追加する前に、既存の Mongodb を使用したいと考えています。

そのための既存のソリューションはありますか?

4

4 に答える 4

8

短い答え

短い答えはいいえです。Kue を MongoDB に移植する予定はありません。現時点では、同様の機能を提供するオープンソースの人気プロジェクトは他にありません。さらに、Redis はこの種のプロジェクトにより適しているようです。

長い答え

Kue は非常に興味深いものであり、遅延タスク以上のものを提供しますが、要件は非常に単純なようです。

サインアップしてから1か月後にユーザーにメールを送信するだけでよい場合、またはそのようなことは、通常、OSレベルに組み込まれています。

sendEmailあなたが方法を持っていると仮定して(一般的に、タスクがどのように行われるかを理解していれば)、私があなたに提案することは次のとおりです。

  1. オペレーティング システムに応じてsendEmailHandler、タスクを 1 日に 1 回実行するようにスケジュールします。Windows では、これは で行われます"Scheduled Tasks"。OS X、BSD、および Linux では、これは を使用して行われcronます。( cronチュートリアル)。ほとんどの PaaS オプションには、この種のオプションもあります (nodejitsu、Azure など)。
  2. そのタスクは、長時間実行されるタスク (つまり、1 か月、1 週間、またはそれ以上実行されるタスク) のリストを反復処理する node.js スクリプトである必要があります。
  3. MongoDB使用することを選択したタスクのコレクションを保持し、それぞれに「開始時間」を指定します。このようなタスクの例として、特定のユーザーが 1 か月後にメールを受信することがあります。
  4. sendEmailHandlerスクリプトで、どのタスクを実行する必要があるかを確認して実行します。その後、MongoDB collection.

これは手間のかかる作業のように思えますが、それほど時間はかかりません。ここで説明するコードはすべて非常に簡単です。

Kue を使用すると、優先度、試行、進行状況など、私の理解が正しければ必要のないことを実行できます。デガッギングとメンテナンスは通常より困難であるため、単純なことを行うために多くのことを行うライブラリを使用すると、最終的にあなたを苦しめる可能性があります。

幸運を!特定の部分について詳しく説明してほしい場合は、遠慮なくお知らせください。

于 2013-03-23T15:49:59.427 に答える
7

別のオプションは議題です

Agenda は、Node.js 用の軽量ジョブ スケジューリング ライブラリです。

于 2015-09-02T20:17:26.220 に答える