5

データ処理後に非同期でメールを送信するシステムを構築しています(処理に最大10秒かかる場合があります)。

私の最初のアイデアは、Windowsサービスで、最初のレコードが処理されるように3秒ごとにデータ処理要求でデータベースをポーリングすることでした。完了したら、ポーリングして、処理する新しい最初のレコードを取得します。

レコードが残っていない場合は、3秒待ってから、再度ポーリングしてレコードを確認します。

これが良い考えかどうかはわかりません。私の意見では、タイマーの使用はプログラムするのに最適な方法ではありません。また、データベースのパフォーマンスと使用が不要な場合でも問題になります。

この場合のベストプラクティスは何ですか?

使用されているテクノロジ:.net 3.5、SQL Server、サーバーはファーム内にあります。

4

2 に答える 2

3

それはすべて、作成するオーバーヘッドの量によって異なります。

データベースを効率的にポーリングでき(つまり、単純なクエリを使用して)、そのようなポーリングが大規模なネットワークトラフィックを必要としない場合(通常は必要ありません)、3秒ごとにポーリングしませんか?

どのようにして3位に到達しましたか?それは恣意的ですか、それとも3秒ごとに正確にチェックする理由がありますか?

クエリを単純にするために、2つのクエリを使用できます。1つは新しいデータがあるかどうかを検出するためのもので、もう1つは実際にデータをフェッチするためのものです。このようにして、最も頻繁に発生するもの(明らかに最初のもの)を最適化できます。

于 2012-11-06T12:49:53.340 に答える
1

なぜ一度に1つのリクエストしか受け取らないのですか?

そして通知を検討してください

クエリ通知の操作

于 2012-11-06T12:54:47.647 に答える