私は、おそらくワーカープールを使用してバックグラウンドタスクを実装する方法があるのだろうかと思っています。方向性を教えてもらえますか、このためのパッケージを書くことを考えていますか?
何かのためにパッケージを書くことを考える前に、まずあなたが必要なことをする既存のパッケージがあるかどうか見てください。 Meteorの世界では、これはAtmosphereで「ジョブ/キュー/タスク/ワーカー管理/スケジューリング」パッケージを探し、次に同じ検索語でnpmを探すことを意味します。また、要件をより正確に定義する必要があります。
放棄されたパッケージ:
Meteorは数年前からnpmパッケージを直接使用できるため、この質問はNPMで job/worker/queue management packages を見つけることになります。永続性を気にしない場合:
map
、reduce
、filter
、each
を含む約70個の関数を提供します。 ..)および非同期制御フローの一般的なパターン(parallel
、series
、waterfall
...) "永続性が必要な場合、MeteorはすでにMongoDBを使用しているため、MongoDbに対する永続性を備えたジョブスケジューリングパッケージを使用すると有利な場合があります。最も強力で人気のあるものは Agenda のようですが、残念ながら数か月間維持されておらず、 issues のかなりのバックログがあります。
redis によって裏付けられた依存関係をプロジェクトに追加する場合は、さらに選択肢があります。
MongoDBと同様に、Redisは(Redis Sentinelを介して)高可用性を提供することもできます。複数のワーカーマシン間でジョブを分散する場合は、 同じRedisサーバーですべてをポイントする を使用できます。
Meteorに固有の何かを探しているなら、Steve Jobsと呼ばれる新しいパッケージがあります。メソッドを呼び出すのと同じくらい簡単にバックグラウンドジョブを実行できます。
ジョブを1回だけ実行する、失敗したジョブを再試行するなど、予想されるすべての標準機能を備えています。 GitHubで詳細を確認できます。
特定の間隔または日付でタスクをスケジュールするために使用できるCronジョブに基づくパッケージがあります。パッケージは次のとおりです。 https://atmosphere.meteor.com/package/cron
そして、そのパッケージのソースを調べると、彼らは単に次のものを使用していることに気付くでしょう。
Meteor.setInterval( ... , delay );
したがって、タスクをデータベースに保存し、起動時にタスクを間隔にロードすると、おそらく正しい軌道に乗ることができます。
ロードマップには適切なサポートがあると思いますが、その間にsetInterval
を介してなんとかハッキングすることができました。 cron-tick パッケージを参照してください。