2011-01-14 7 views
2

をブロックせずに一括通知メールの送信、私は、ユーザー(技術者)が電子メールを介してマーク例への変更の通知を受けることにしたいです。私のクライアントのカスタムビルドのCRMについて

これは、ユーザとケース間の単純なサブスクリプションマッピングテーブルと、ロギングメソッド内からケースが変更されるたびに自動化された電子メールが送信されることを保証します。私は私のログ記録方法を停滞することなく、加入ユーザに10-100メールを送るにはどうすればよい

?私のSMTPサーバーは私のLAN上のピア上にあるので、送信はすばやく行うべきですが、理想的にはこれは外部のキューイングプロセスで処理する必要があります。

私はcronジョブが未処理のメールを10分ごとに送信させることができますが、この特定のクライアントの例があるため、非常に時間に敏感とすることができます(電子メールなどの瞬間など)インスタント通知は素晴らしいことです。

は、どのように私は私のロギング方法を停滞せずにASP.NET MVC内から大量の通知メールを送信することができますか?それは貴重なサーバリソースを独占する可能性があるとして、ASP.NETアプリケーションから電子メールを送信する

答えて

2

は良いアイデアではありません。 Windowsサービスをセットアップしてこのタスクを実行するか、Windowsスケジューラで実行するようにスケジュール設定できるコンソールアプリケーションを作成することも、より良い解決策です。 Quartz.NETは、ジョブをスケジュールできるようにすることをお勧めします。

これらの電子メール送信を特定のコントローラーアクションからトリガーする場合は、非同期で呼び出すことのできる別のWCFサービスを使用することもできます。

+0

どのように? –

+0

@FreshCode、yes MSMQはこの種のタスクにも非常に適しています。 –

3

2007年に戻って、Web Serverが突然停止して503エラーを送信し、数分後に復帰するケースを調べるように頼まれました。短いストーリーを切っておくと、最終的にサーバーをブロックしていた電子メールを送信していたことが判明しました(いくつかの悪いコードに加えて)。

MicrosoftのSMTPサーバーは、基本的にシングルスレッドサービスとして実装されています。これは、要求を処理する貴重なASP.NETスレッドが、緊急ではない電子メールを送信するために、単一スレッドのモノリシックアプリケーションにキューイングする必要があることを意味します。あなたはあなたのウェブサイトを電子メールから切り離す必要があります - それは皆がしていることであり、それには正当な理由があります。

電子メールをキューに書き込み、プロセスに電子メールの読み取りと送信を依頼してください。 MSMQについて

関連する問題