問題タブ [firebase-queue]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - Firebase Queue 1 つのキューにある複数のスペックが両方とも実行されるか、間違ったスペックが選択される
同じキューに Firebase キューと 2 つの仕様があり、クライアントから開始状態を read_write_start のみにしてキューをプッシュしています。両方の仕様がデフォルトで実行されるか、間違った仕様が実行されます。 read_start" 仕様が実行される
クライアント側 :
サーバ側 :
ここで何が欠けているのかわかりません ドキュメントが明確ではありません
仕様ごとに新しいキュー参照をインスタンス化する必要がありますか? チェーンジョブのみの仕様ですか?
私はこれを行うべきですか
firebase - firebase-queue を使用してタスク結果を返す
Firebase を使用してモバイル アプリケーションに取り組んでいます。モバイル アプリでは、Whatsapp と同様に、携帯電話番号に基づいてユーザーを登録する必要があります。Nexmo を使用してユーザーの携帯電話番号を確認するつもりです。番号の確認には 2 つのステップがあります。
- ユーザーの携帯電話番号を Nexmo API に送信すると、成功すると request_id が返され、SMS 経由でユーザーの携帯電話にコードが送信されます
- コードと request_id を Nexmo に送信して番号を確認します
これらのタスクを実行するために firebase-queue を使用したいと考えています。タスクの結果をクライアントに返す方法があるかどうかを知りたいです。firebase-queue のドキュメントにそのような例はありませんでした。基本的に、携帯電話番号を Nexmo API に送信するタスクを追加し、それに応じて request_id を取得して、ユーザーが入力したコードを検証する別のタスクを追加できるようにしたいと考えています。
firebase - Firebase 3 に変更した後、Firebase Queue が何もしません
数週間前に Firebase を使い始め、node.js サーバー コードで Firebase Queue を実行していました。クライアントはメッセージをキュー/タスクにプッシュでき、サーバーはそれらを解決します。Firebase Queue が更新され、他の誰も問題を抱えていないように見えますが、Firebase がバージョン 3 に変更された後、これを再現できません。これはおそらく私のコードの小さなバグにすぎませんが、数日たっても見つかりませんでした。誰かが指摘してくれれば幸いです。
ここに私のサーバーコードがあります。タスクがキューに追加されるたびにコンソールに出力する必要がありますが、そうではありません。最後の行のプッシュは、サーバーに接続できることを示しています。
そして、これが私のクライアントコードです。キュー/タスクへのプッシュは成功しています。
firebase - firebase-queue での numWorkers の使用
firebase-queue
サーバー側の作業を処理するためにモバイルアプリで使用しています。こちらのfirebase-queue
ドキュメントでは、node.js スレッドで同時に実行できるワーカーの数を指定するオプションのパラメーターを指定できると書かれています。アプリケーションでこのパラメーターを使用する方法がよくわかりません。たとえば、私がサーバー側で行っていることの 1 つは、ユーザーが最初にアプリケーションにログインしたときに確認コードをユーザーに送信することです。これは、将来的には数百人のユーザーになる可能性があります。のユーザーをもう少しよく理解するために明確にしたい質問がいくつかありますnumWorkers
firebase-queue
numWorkers
- firebase キューに複数のワーカーを配置する必要があるのはいつですか?
- firebase キューの最適なワーカー数はいくつですか? Java のバックグラウンドから来て、アプリケーションで実行されるスレッドの数が増えると、一定の制限を超えるとオーバーヘッドになり始める可能性があると言われています。同様の原則がここに適用されるかどうかはわかりません。
- 異なるサービスを提供する複数のキューがある場合
specIds
、キューごとではなく累積レベルで合計ワーカー数を考える必要がありますか 現在、4つのキューがあります。
上記の私の質問に関して情報をお持ちでしたらお知らせください。どんな入力でも大歓迎です。
更新 - 2016 年 6 月 5 日
をいじってみると、特定の仕様で同時に実行できるタスクの数を が制御firebase-queue
していることに気付きました。numWorkers
キュー ワーカーは非同期方式で動作しないため、指定された specId のタスクが終了するまでに時間がかかる場合、キュー内に多くのタスクが取得されるのを待機することになる可能性があります。たとえば、タスクの処理にネットワーク要素がある場合、終了までに時間がかかる場合があり、これらのタスクがキューに多数存在することが予想される場合は、firebase に複数のワーカーが必要です。列。これで、最初の質問に対する答えがわかりました。
質問 2 と 3 についてまだ疑問に思っています。特定の時間に数百または数千のタスクがキューにあり、その中にはネットワーク要素が関係しているため、完了するまでにかなりの時間がかかる場合があります。1 つのキューに 100 人のワーカーを配置した場合の影響についてはわかりません。私のアプリはまだ開発段階にあり、現時点ではそのようなタスクを大量にシミュレートするためのセットアップがないため、自分でテストすることはできません。
firebase - Firebase Queue でデータをファンアウトする正しい方法
データを 4 つの異なるノードにファンアウトしたいと考えています。firebaseトランザクションプロセスが失敗する可能性があるため、4つのデータすべてが確実に保存されるようにするための正しいアプローチは何ですか?
データを保存するための 4 つの関数があり、それぞれがトランザクションを呼び出すとします。
編集:
1.最初のアプローチの使用
このアプローチでは、ネストされたコールバック関数を使用し、保存が成功するたびに progress() を呼び出します。
欠点は、保存プロセスの 1 つが失敗した場合、1 番目から 4 番目までのすべてのデータが再保存されることです。
2. 2 番目のアプローチを使用する
このアプローチにより、すべてのデータが保存されることが保証されます。保存処理が失敗した場合、1番目から4番目までではなく、失敗したスペックからリトライします。でも4セーブするだけでやり過ぎだと思いませんか?これは正しいアプローチですか?
queue/specs でスペックを定義します。
キュー コード:
正しいアプローチはどれですか? これらの 2 つは完全に異なるアプローチであり、パフォーマンスと有効性の両方に大きな影響を与えるため、この質問は好みではありません。
node.js - ワーカー dyno のみを heroku にデプロイします (firebase-queue 用)
Heroku のワーカー専用 dyno に NodeJS サーバーをデプロイしたいと考えています。いくつかのアプローチを試しましたが、常にエラーが発生します。
私のサーバーは、ファイルや API を提供する必要はありません。Heroku にデプロイする正しい方法は何ですか? 具体的には、firebase-queue 実装のみを Heroku にデプロイする正しい方法は何ですか?
私のサーバーは、キューからの作業の処理専用です。Firebase の場所を監視し、変更に反応します。具体的には、firebase-queue の実装であり、ガイドに記載されている my-queue-worker.js のほぼ正確なコピーです。
firebase - 小さな単純なタスクを処理するときの firebase キューの効率
firebase キューを使用していくつかのワーカーを作成し、チャット アプリで汚い言葉をフィルタリングしようとしています。
しかし、ブログを読んだところ、firebase キューは最初にデータを firebase キューに保存してから、フィルタリングする単語を取得することがわかりました。次のコードのように、このブログを参照してください。
私の質問
複数のサーバーを使用して多くの単純なタスク (汚い言葉をフィルター処理) を処理する場合。
2 つの方法があります。
- firebaseキューを使用し、いくつかのキューサーバーがfirebase /queue/tasksをリッスンします
- 負荷分散を使用して、Firebase キューを使用せずにフィルター作業を複数のサーバーに分散します
どちらがより効率的ですか?複雑なタスクを処理する場合、Firebase キューは優れていますか?</p>
node.js - Firebase キュー トランザクションの切断
Heroku nodejs サーバーで Firebase Queue を使用して、かなり複雑なタスクを実行しています。
時々エラーがスローされることを除いて、問題なく動作します:
そして、それが切断されると、タスクはなくなります。仕様に明記されていてもリトライは発生しません。
常に失敗するタスクの 1 つのコード
これは、16 秒後にノードを削除する必要がある単純なタスクです。