0

保留中の電子メール データベース レコードを生成するいくつかの異なるアプリケーション (主に ASP.NET Web アプリ) があります。

毎分、保留中の電子メール バッファをクリアする Windows タスクで実行可能ファイルを起動します。

私の目標は、この 1 分間隔を 1 秒に短縮することです。

Windows サービスを使用する予定です。

pending-email データベース テーブルを毎秒単にポーリングするよりも良い方法はありますか?

MSSQL は永遠に毎秒トランザクションを処理できると確信していますが、1 日に 80 通の電子メールしか送信できないアプリケーションにとって理想的なソリューションとは思えません。

4

2 に答える 2

2

sp_send_dbmailSQL Server には、手順を介して、これを行うために必要なインフラストラクチャが既に用意されています。コードでは、保留中の電子メール テーブルにデータを入力する代わりに呼び出しsp_send_dbmail、SQL Server がメール配信を駆動できるようにします。

sp_send_dbmailService Broker Activationに基づいています。DBMail を使用したくない場合は、非ポーリング方式でメッセージのキューを監視できるアクティベーション メカニズムを直接活用できます。アクティブ化すると、毎秒変更をポーリングする必要がなく、ほぼ瞬時の遅延 (1 秒未満) になります。

于 2012-08-23T05:35:26.993 に答える
1

あなたの実装は 100% 完璧です。Windows サービスを使用するか、Windows スケジューラを使用して高頻度のジョブをスケジュールできます。

ここでキャッシュを実装する場合。必要のない実装を不必要に増やします。実装をそのままにしておくことをお勧めします。これは、1 秒間隔でジョブをポーリングすることを意味します。

于 2012-08-23T03:43:50.827 に答える