web-dev-qa-db-ja.com

Node JSのセロリに相当

Node JSで非同期タスクを実行するためにJSでセロリに相当するものを提案してください。私は以下を検索できました:

  1. 後で
  2. クエ( Kue )、
  3. coffee-resque( coffee-resque
  4. cron( cron
  5. ノードセロリ( ノードセロリ

手動スレッドと自動スレッドの両方をバックグラウンドで実行し、MongoDBとやり取りしました。

node-celeryは、Mongo DBではなくredis DBを使用しています。これを変更する方法はありますか?node-celery redisをインストールしたときに、依存関係としてインストールされました。

私はセロリは初めてです、ご案内ください。ありがとうございます。

18
garima

Celeryは基本的にはRabbitMQクライアントです。プロデューサー(タスク)、コンシューマー(ワーカー)、およびタスクとワーカーの間でメッセージを配信するAMQPメッセージブローカーがあります。

それを知ることで node.jsに自分のセロリを書く が可能になります。

enter image description here

ここのnode-celeryは、ノードプロセスがセロリクライアント(プロデューサー/パブリッシャー)と セロリワーカー(コンシューマー) の両方として機能できるようにするライブラリです。

https://abhishek-tiwari.com/post/amqp-rabbitmq-and-celery-a-visual-guide-for-dummies を参照してください

13
Vanuan

行くKue、それはPython Word;のセロリに似た全体的な解決策です。それは、プロデューサー/コンシューマー、遅延タスク、タスク再試行、タスクTTL、同じキューをリッスンしている複数のコンシューマ間でタスクをラウンドロビンする機能など。

おそらく、Celeryはより多くの機能を備え、より多くのブローカーをサポートするより高度であり、必要に応じてnode-celeryを使用できますが、私の意見では、インストールを必要とするハイブリッドソリューションに行く必要はないと思いますof python and node when you can use only language that's 90%of the Cases(もちろんない限り)。

––––––––––––––––––––––––––––––––––––––––

編集-1/2018

私は、Kueを使用しないことをお勧めします。停止したプロジェクトのように見えるため、代わりにCeleryを使用してください。コミュニティによって非常によくサポートおよび維持されており、多数のユースケースをサポートしています。

6
securecurve

Python Word;生産者/消費者、遅延タスク、タスク再試行、タスクTTL、タスク全体のラウンドロビン機能同じキューをリッスンしている複数のコンシューマなど.

Kue、非常に長い時間が経過した後も、まだ同じ古いコアの問題が未解決のままです:

  • github.com/Automattic/kue/issues/514
  • github.com/Automattic/kue/issues/130
  • github.com/Automattic/kue/issues/53

これを読んでいる人がKueを書き直したくない場合は、それから始めないでください。単純なタスクに適しています。しかし、それらの多く、並行、またはタスクチェーン(1つのタスクが別のタスクを作成する場合)に対処する場合は、時間の浪費をやめます

Kueをデバッグしようとして1か月無駄にしてしまいましたが、まだ成功していません。最良の選択は、RabbitMQおよび Rabbot のKue for Pubs/subメッセージングキューを変更することでした(別のRabbitMQのまとめ)。

個人的には、私はセロリをあまり使っていないので、セロリの代替品を探していて、誰かがクエに助言しているところ、私の血が沸騰していた。

遅延メールを送信したい場合( Kueの例のように )、エラーを気にすることなく、何でもやりたいことができます。ただし、信頼性の高いシステムタスク/メッセージキューが必要な場合は、Kueから始めないでください。個人的には5で行きます。node-celery(node celery)

4

私たちの経験では、キューは信頼できず、仕事を失っていました。確かに、以前のバージョンを使用していたため、おそらく修正されています。これは、TJがプロジェクトを中止し、新しいメンテナが選ばれなかった時期でもありました。 beanstalkdに切り替えて、とても満足しています。 beanstalkdへのノードインターフェースとして https://github.com/ceejbot/fivebeans を使用しています。

1
Bryan Larsen

言及する価値もあります https://github.com/OptimalBits/bull 。これは、安定性と原子性のために作成された、高速で信頼性の高い、Redisベースのキューです。

Bull 4は現在ベータ版で、いくつかの素晴らしい機能があります https://github.com/taskforcesh/bullmq

0
jsbroks