2012-01-12 7 views
2

プロデューサには、twitterストリームから読み込み、メッセージブローカとしてrabbitmqを使用してキューにタスクを配置します。多くのジョブがタイムスタンプで実行されるようにスケジューリングする

ジョブは、通常、実行に周りに3-5秒かかり、それが行われたときに仕事の終わりに私は、ユーザーに通知します。しかし、私はまた、仕事をしてから10分/ 30分/ 60分後に、ユーザーにもっとメッセージを送ることで思い出させたいと思います。

私はこれらの追加のメッセージをスケジュールする最良の方法を理解できません。私は、特定のタイムスタンプでメッセージスクリプトを実行するcronジョブを作成することを考えましたが、それは1時間に何千ものジョブで間違っていたようでした。もう1つのアイデアは、データベースをポーリングしたり、キューから読み込んだデーモンを実行し、スケジュールされたタイムスタンプと現在時刻をチェックしてから送信することでした。これは遅れてメッセージを介してメッセージブローカ側で行うことができれば

は、理想的にはそれがはるかにきれいになるだろうが、私はRabbitMQのはそのような何かをサポートしていないことを読みました。

タイムスタンプで実行する必要のある多くのジョブのスケジュールを設定するにはどうすればよいでしょうか?

+0

cronの仕事は私にとって正しい選択です。 –

答えて

1

だけで毎分実行され、メッセージが送信されますときのタイムスタンプを持つ別のキューをチェックし、単一のcronジョブを作成します。タイムスタンプが経過したら、メッセージを送信してキューからアイテムを削除します。

+0

もっと細かくしたいのであれば、数秒ごとにcronジョブを実行して過度にチェックしますか?それより良い方法はありますか? –

+0

まず、スリープ状態でずらしていない限り、1分に1回以上cronジョブを実行することはできません。各メッセージのcronジョブをスケジュールする必要はありません。一度に50個のメッセージを送信するスクリプトはどうですか? – andrewtweber

関連する問題