2017-11-29 41 views
0

このパッケージによれば、「待ち行列」内の特定のタスクを中止することは可能ですか? 私のユースケースは次の通りです:ブル・キュー内の特定のタスクを中止する方法は?

私は、mongodbコレクション "users"と、両方のユーザーの名前とアバターを保存するコレクション "friendship"を持っています。だから私は特定のユーザーの友人リストを取得するために1つのクエリが必要です。ユーザーが自分のアバターを変更すると、このユーザーのすべてのドキュメントを「友情」コレクションで更新する必要があります。これはバックグラウンドで実行したいので、パフォーマンス重視の操作です。このユースケースでは一貫性は重要ではありません。しかし、ユーザーが短い時間内にアバターを何度か更新すると、最新のものを除き、すべての古いタスク(友情コレクションを更新するためのもの)をすべて取り消したい。これは雄牛で可能ですか?

ありがとうございます、私はそれに関するすべての情報に感謝します。

答えて

1

Bull参照を見ると、Job.remove()メソッドがあることがわかります。あなたはコードを投稿していないので、どのように見えるのかしかわかりません。それで私はあなたができることを述べました。

しかし、Promise<Job>Queue.add()で返されるMap<string, Map<string, Promise<Job>>に保存する必要があります。文字列はユーザ​​ーの_idPromise<Job>[]は特定のユーザーのすべてのキューに登録されたジョブを含む配列です。ジョブが解決されたら(Job.finished()で解決済みの仕事を待つことができます)、マップからPromiseを削除する必要があります。

ユーザーが自分のアバターを変更するたびに、ジョブを削除する必要がある場合は、マップを調べることができます。上記のMapの値は別のMap(キーは文字列で、JobIdを表す)であり、JobIdによってジョブを簡単に削除できます。それは少し複雑に聞こえるかもしれませんが、恐れてはいけません。マップの仕組みを理解すれば、それは問題ではありません:-)。

+0

ありがとうございました!それは今、完璧に動作します。 – BestPractice2Go

関連する問題