問題タブ [job-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.
php - ジョブキューでの再試行を構成するものは何ですか?
私はもともとこの質問をZendForumsに投稿しましたが、ここに投稿するのも賢明だと考えました。
ジョブを再試行するには、正確に何が必要ですか?タイムアウト、50x応答コード、およびステータスを「FAILED」に設定してみました。
私は仕事を作成する簡単なスクリプトを持っています...
私はconsumer.phpを削除し、consumer.php内から500を返し、consumer.phpにjqd.iniのzend_jobqueue.http_job_timeoutに設定された120秒より長くかかるようにすることで、ジョブの再試行をトリガーしようとしました。これらのいずれも再試行をトリガーするようには見えません。
だから、私は尋ねます、実際に何が再試行をトリガーしますか?
助けてください。
php - ギアマンとのジョブキューを延期する
時間のかかるもののいくつかをキューに抽出したいと思います。このため、Gearmanが最もよく使われていることがわかりましたが、それが私にとって正しいことかどうかはわかりません。私たちがやりたいタスクの1つは、メールの送信をキューに入れることであり、メールの送信を1分間キャンセルできる機能を提供したいと考えています。したがって、すぐには機能しないはずですが、今すぐ+1分で実行してください。そうすれば、その前にジョブをキャンセルでき、送信されることはありません。
これを行う方法はありますか?
これはdebianで実行されます。そして、phpから使用できるはずです。私がこれまでに見つけた唯一のことは、特定の日時にギアマンで仕事をスケジュールすることでしたが、それは広く普及していない何かで実行されます:(
c# - C# .NET ワークロード処理 a'la ジョブ キュー処理の例のアイデア?
アプリのスケーリングを改善するために何ができるかについての私の絶え間ない学習曲線の一部として、私は現在、キューイングの方向性を見つけようとしています。つまり、ジョブキューイングまたはワークロード処理のどちらか好きなフレーズです。
遠い昔、私は IBM MQ/Series を使用していました。これは金融アプリで機能しましたが、思い出すと非常に重かったです。
私は MSMQ を知っていますし、他にもかなりの数の MSMQ について聞いたことがあります。
しかし、最初に、ここに私のコンテキストがあります
AJAX呼び出しなどを介してJavascript(主にjQueryなど)のフロントエンドにデータなどを提供するC#/ .NETバックエンドWebアプリがあります。特定のアクションにいくつかのファイルのアップロード、いくつかのレコードの設定が含まれる状況がありますデータベースへのエントリ、一部のユーザーへのメール送信など。もちろん、時間の遅延が発生する可能性があるため、このプロセスを「オンライン」/「リアルタイム」にしたくありません。Webサーバー/データベースなどのオーバーヘッドがあると確信しています.
では、キューに入れて処理する必要がある「メッセージ」の種類を考えると、(ここで簡単に言うべきではないと思いますが!) 良い出発点は何でしょうか? MSMQ や SQL 2008 サービス ブローカ、または ZeroMQ などを使用して実行する必要がありますか? それとも、単純に独自の軽量ワークロード キュー サービスを作成する必要がありますか?
全体像を見ないと完全な推奨事項を作成するのは難しいことを改めて認識しましたが、出発点はありがたく受け取りました!
デビッド
perl - ジョブキューを自己再配置する方法
(Amazon SQSを使用して)ジョブキューがあり、HTTPを介してさまざまなドキュメントをフェッチして処理するために多くのマシンにジョブを渡します。アクセスされるホストは数百あり、ジョブの順序は予測できません。
礼儀正しくするために、私は自分のシステムが単一のホストで繰り返しハンマーを打つことを望まない。したがって、example.comから何かをフェッチするためにジョブ#123を取得したが、過去X秒間にexample.comから別のものをフェッチしたことがわかった場合は、別の何かに移動してジョブ#123を保存する必要があります。後で。
問題は、このパターンを実装するための良い方法は何ですか?
最初のステップは、ジョブランナーにすべてのドメインのリストを保持させ、そのドメインの何かに最後にアクセスしたときのようです。これは単純なDBテーブルである可能性があると思います。
その場合、メッセージプロセッサが延期する必要のあるジョブを取得した場合の対処方法には多くの可能なオプションがあります。
メッセージのコピーをキューの最後にプッシュし、実行せずに破棄するだけです。うまくいけば、次にそれが来るときまでに、十分な時間が経過するでしょう。これにより、特に同じドメインのジョブの大規模なクラスターが一度に通過する場合に、冗長なSQSメッセージが多数発生する可能性があります。
ただし、礼儀正しさがジョブの実行を指示するまで、何秒もスリープする必要があります。これにより、多くのキュープロセッサが同時に何もしない可能性があります。
ジョブを受け入れますが、各キュープロセッサのどこかにあるローカルキューに保存します。各プロセッサがこの方法で多数のジョブを「要求」し、最大の礼儀正しさを実現する順序でそれらを処理することを選択できると思います。各キュープロセッサは、他のすべてのドメインがヒットしたドメインを認識する必要があるため、これは依然として予測できない可能性があります。
ドメインごとに個別のキューを確立し、各キュー専用の1つのプロセスを用意します。各プロセスは、各ジョブを実行する間にX秒間一時停止する必要があるため、スリープ状態のプロセスのオーバーヘッドが多くなりますが、これはそれほど悪いことではないかもしれません。
このようなものをデザインした経験はありますか?どのような戦略をお勧めしますか?
c# - 遅延イベント通知を使用したC#ジョブキューの実装
.Net(3.5)で既存のジョブキューの実装を探していますが、誰かが良いものを提案してくれるかどうか疑問に思っていました。自分のやりたいことができるジョブキューはないと思いますので、簡単に拡張できるジョブキューを探しています。
基本的な要件:
- 並列または直列でジョブを実行できる必要があります。一部のジョブはシリアルに実行する必要がある場合があり、一部のジョブは、それらのシリアルジョブが実行されている間でも、並列に実行できる場合があります。
(技術的には2つのジョブキューを持つことができると思いますが、基本実装はそれでも両方を処理できる必要があります。) - ジョブで進行状況イベントを起動できるようにする必要がありますが、準備ができたときにイベントを起動できるようにするか、UIからのポーリングに基づいてキューに入れてから起動できるようにする必要があります。
(すべてのイベントをメインGUIスレッドで処理する必要があるため、GUIの更新では、最後の更新以降に発生したすべてのイベントを発生させることを望んでいます。)
ありがとう、
リロン
php - node.jsのジョブキュー
phpで呼び出すことができるnode.jsのジョブキューマネージャーを探しています。これは、電子メールの送信、PDFファイルの作成など、phpプロセスの非同期を実行する必要があるWebアプリケーション用です。
プロセスの例:
- ユーザーがphpページをリクエストする
- Phpはジョブキューマネージャーを呼び出し、タスクを追加します
- タスクは、phpとは非同期にnode.jsで実行されます。できれば、もう少し静かなときに実行してください。
- タスクは、phpスクリプトを実行することです
なぜこの「複雑な」システムなのか?
- すべてのWebアプリケーションをphp(Zend Framework)で記述します
- node.jsの学習を開始したい
- 非同期プロセスが必要です(高速応答!)
- 「実際の」タスクは、すでに作成されたphpクラスを利用し、データベース接続に簡単にアクセスし、可能な限りDRYにするために、phpスクリプトでもある必要があります。
このシステムの使用例:
- ユーザーが自分で登録すると、システムがウェルカムメールを送信します
- ユーザーがeコマース注文を完了すると、システムが請求書を送信します
最後に、node-cronも使用して、システム全体以外のcronタスク(非常にアプリケーション固有)を実行したいと思います。Node-cronはジョブキューマネージャーを呼び出し、その後phpスクリプトを実行します。
そのようなアプリケーションはすでにノードにありますか?
high-availability - 複数の Gearman サーバーが同じ libdrizzle キューを共有できますか?
libdrizzle を介して、複数の Gearmanサーバーが同じ Gearman キューを共有できますか?
これにより、単一障害点としてのギアマン サーバーが排除されるかどうか疑問に思っています。複数の Web ノードがあり、それぞれが同じギアマン サーバーと通信している場合、ギアマンが使用できなくなるとサイトが停止します。ただし、各 Web ノードが独自の Gearman サーバーを実行している (そして、そのノードによって生成されたジョブが、同じノードで実行されている Gearman サーバーのキューに入れられている) 場合、単一障害点はデータベースに移されます。(私たちのアーキテクチャでは、これはとにかく単一障害点です。)
gearman - ギアマンと信頼できない外部依存関係を持つ再試行ワーカー
私はgearmanを使用して、さまざまな異なるジョブをキューに入れています。その中には、いつでもすぐにサービスを提供できるものと、信頼性の低い外部サービスを必要とするために「失敗」するものがあります。(たとえば、電子メールを送信するには、頻繁に使用できないSMTPサーバーが必要になる場合があります。)
外部サービスがダウンした場合、そのサービスを必要とするすべてのジョブをキューに残し、サービスが再び利用可能になるまで1つのジョブをときどき(たとえば、数分ごとに)再試行したいと思います。(サービスが何時間も利用できなかった場合は、オプションで電子メールを送信することもできます。)
ただし、失敗したサービスを必要としない仕事をできるだけ早く労働者に引き継いでほしい。これはどのように達成できますか?(必要に応じて、ロジックの一部をワーカーに配置できてうれしいですが、ワーカー側でスロットルするのは少し「遅い」ようです。)
ibm-midrange - ジョブキュー内のスケジュールされたジョブのリストを取得するにはどうすればよいですか?
スケジュールされたジョブとしてジョブが現在ジョブキューに存在するかどうかを確認するタスクが割り当てられています。一致基準はジョブの名前です。ジョブ名が指定された名前と一致する限り、カウントされます。では、特定のジョブキューでスケジュールされたジョブのリストを返す簡単な方法はありますか?または、私のタスクを達成するためのより良い方法はありますか?
ruby - Resque vs. Sidekiq
私は、Rails アプリケーション内のデータ入力からのさまざまなコマンドを分単位で処理するために Resque を使用している友人と一緒にプロジェクトに取り組んでいます。
Sidekiq はマルチスレッドであり、メモリを大量に消費せず、ワーカーごとに ruby 環境を起動する必要がないため、Sidekiq を使用するというアイデアをいじっています。
Resque と Sidekiq をリアルタイムで使用している人々から考えや意見を集め、その違いを説明したいと考えています。
では、Resque に対する Sidekiq の長所と短所は何ですか?