遅延したシンプルな拡張性の高い仕事/メッセージキュー
-
23-09-2019 - |
質問
私はそれが自由に作業者がすぐに拾っていないように、タスクのための遅延時間を設定するオプションを持つジョブ/メッセージ・キューを設定する必要がありますが、一定時間後(タスクからタスクに異なります)。私は、Linuxキューソリューション(RabbitMQの、gearman、memcacheq)のカップルに見えたが、それらのどれも箱から出して、この機能を提供するように見えるん。
私はこれを達成できる方法上の任意のアイデア?
ありがとうございます。
解決
私はアイテムが予約されるために利用可能になりまで数秒待つように新しいジョブを挿入する上で遅延オプションを使用して、大きな効果にBeanstalkDを使用しました。
すべてのデーモンのクラッシュは、まだ記録を持っているなるようにあなたが長期的に行っている場合、遅延(例えば30秒以上)、またはジョブが(後でabeit)を実行するために、やや重要ですが、それはまた、バイナリロギングシステムを持っています仕事の。それは私がBeanstalkdインスタンスと私はいつも、サーバよりも問題として書いた労働者を使用して、ライブジョブの数十万人を入れている、と述べています。
他のヒント
あなたが(例えばRabbitMQのような)AMQPブローカーを使用することができると私は交換に傍受特定のメッセージ(特定のrouting_key
)に座って「エージェント」(pyton-amqplibを使用して構築され、例えばA Pythonのプロセス)を有します。タイマーが経過すると、異なるrouting_key
との交流にメッセージを送り返します。
私はこの手段「翻訳/マッピング」routing keys
を実現するが、それは動作します。 RabbitMQのとのpython-amqplibでの作業は非常に簡単です。