Jeff のメカニズムは、ASP.Net が一定の間隔で自動的に再作成する、ある種のキャッシュ オブジェクトを作成することでした。これは ASP.Net 固有のソリューションのように見えたので、おそらく Java の世界ではあまり役に立ちません。
https://stackoverflow.fogbugz.com/default.asp?W13117を参照してください。
Atwood: 最初は Twitter で質問しました。軽いものが欲しかったからです。Windows サービスを書くのは本当に好きではありませんでした。それは帯域外のコードのように感じました。さらに、実際に作業を行うコードは実際には Web ページです。私にとって、それは Web サイトでの論理的な作業単位が Web ページだからです。つまり、実際には Web サイトにコールバックしているようなものであり、Web サイト内の別のリクエストのようなものです。そのため、インラインのままにしておく必要があるものと見なし、Twitter で推奨された小さなアプローチを思いつきました。基本的に、有効期限が固定されたアプリケーションキャッシュに何かを追加することでした。その後、コールバックがあり、有効期限が切れると、作業を行う特定の関数が呼び出され、同じ有効期限でキャッシュに追加されます。だから、ちょっとね、たぶん」
私のアプローチは常に、OS (つまり、Cron または Windows タスク スケジューラ) が特定の URL を一定の間隔でロードし、その URL でページをセットアップしてそのキューをチェックし、必要なタスクを実行する必要がありましたが、私はより良い方法があるかどうかを聞くことに興味があります。
トランスクリプトから、FogBugz は URL アプローチをロードする Windows サービスも使用しているようです。
Spolsky: それで、heartbeat.asp という特別なページがあります。そして、そのページはいつでも、誰でもいつでも叩くことができます。しかし、そのページが実行されると、待機中のタスクのキューをチェックして、実行する必要があるものがあるかどうかを確認します。そして、何かする必要がある場合は、1 つのことを実行してから、そのキューをもう一度調べます。他に何かする必要がある場合は、プラスを返します。返される Web ページ全体は、プラスが付いた 1 文字だけです。初期化。他に何もすることがなければ、キューは空になり、マイナスを返します。したがって、誰でもこれを呼び出して何度でも押すことができます。web ブラウザーに heartbeat.asp をロードして、プラスではなくマイナスが表示されるまで Ctrl-R Ctrl-R Ctrl-R Ctrl-R を押します。そして、あなたが' これで、FogBugz は必要なメンテナンス作業をすべて完了することができました。これが最初の部分で、2 番目の部分は非常に単純な Windows サービスで、実行されます。全体の仕事は、heartbeat.asp を呼び出し、プラスの場合はすぐにもう一度呼び出し、マイナスの場合は再度呼び出すことです。繰り返しますが、しばらくの間ではありません。基本的に、常に実行されているこの Windows サービスがあります。このサービスは、URL をヒットし、それがプラスかマイナスかを確認し、次に実行するかどうかに基づいて再実行するタイミングをスケジュールするという非常に非常に単純なタスクを実行します。プラスかマイナスになりました。もちろん、このテーマではどんな種類のバリエーションでも作成できます。たとえば、実際には、プラスまたはマイナスだけを返す代わりに、「60 秒後に電話してください」または「」と言うことができます。つまり、メンテナンス サービスは実行されるだけです。つまり、そのメンテナンス サービスを実行するコードの半分のページのようなものであり、変更する必要はなく、そこにはロジックがまったく含まれていません。これらの Web ページが特定の保証された頻度で呼び出される原因となるくすぐりが含まれています。そして、その web ページの heartbeat.asp には、実行する必要があるタスクのキューを保持し、経過時間を調べて、深夜のメンテナンスを行い、7 日ごとに古いメッセージをすべて削除するコードがあります。スパムおよびあらゆる種類のメンテナンス バックグラウンド タスクとしてマークされています。そして、ええと、それがそれを行う方法です。つまり、メンテナンス サービスは実行されるだけです。つまり、そのメンテナンス サービスを実行するコードの半分のページのようなものであり、変更する必要はなく、そこにはロジックがまったく含まれていません。これらの Web ページが特定の保証された頻度で呼び出される原因となるくすぐりが含まれています。そして、その web ページの heartbeat.asp には、実行する必要があるタスクのキューを保持し、経過時間を調べて、深夜のメンテナンスを行い、7 日ごとに古いメッセージをすべて削除するコードがあります。スパムおよびあらゆる種類のメンテナンス バックグラウンド タスクとしてマークされています。そして、ええと、それがそれを行う方法です。そこにロジックは何もありません。これらの Web ページを特定の保証された頻度で呼び出す原因となるくすぐりが含まれているだけです。そして、その web ページの heartbeat.asp には、実行する必要があるタスクのキューを保持し、経過時間を調べて、深夜のメンテナンスを行い、7 日ごとに古いメッセージをすべて削除するコードがあります。スパムおよびあらゆる種類のメンテナンス バックグラウンド タスクとしてマークされています。そして、ええと、それがそれを行う方法です。そこにロジックは何もありません。これらの Web ページを特定の保証された頻度で呼び出す原因となるくすぐりが含まれているだけです。そして、その web ページの heartbeat.asp には、実行する必要があるタスクのキューを保持し、経過時間を調べて、深夜のメンテナンスを行い、7 日ごとに古いメッセージをすべて削除するコードがあります。スパムおよびあらゆる種類のメンテナンス バックグラウンド タスクとしてマークされています。そして、ええと、それがそれを行う方法です。深夜のメンテナンスと 7 日ごとに、スパムとしてマークされたすべての古いメッセージと、あらゆる種類のメンテナンス バックグラウンド タスクのみを削除します。そして、ええと、それがそれを行う方法です。深夜のメンテナンスと 7 日ごとに、スパムとしてマークされたすべての古いメッセージと、あらゆる種類のメンテナンス バックグラウンド タスクのみを削除します。そして、ええと、それがそれを行う方法です。