2017-09-27 11 views
0

私は、Webアプリケーション(Asp Net MVCとWebApi)を持っています。そこにはイベントを作成するときに、そのことを知らせるアジェンダがあります。電子メール...それはどこに問題があるのですか?私はWebApiの中で一日中アクティブになるメソッドが必要です。イベントのために30分を忘れた場合は、通知メールを送信してください...Asp.Net Webでリアルタイムで電子メールを送信するAPi

私はこれを行うには、私はインテルネットを探していましたが、私はSignalRとRx .NETについて何かを見ました...これらは本当にこの問題に役立っていますか?これを行うことができる他の技術はありますか?

+1

あなたの質問はおそらくあまりにも漠然としていると思いますが、今後の予定や予定を確認するサービスが必要なように聞こえます。それはWebアプリケーションなので、私はHangfire https://www.hangfire.io/や、.netコアの新しいHostedServiceのようなものを探してみることをお勧めしますhttps://www.stevejgordon.co.uk/asp-net-core -2-ihostedservice –

答えて

0

ASP.NETは、多くのWebサーバーテクノロジと同様に、この種のリアルタイムタスクを実行するようには設計されていません。可能であれば、いくつかの癖でも、多くの問題に遭遇する可能性があります。サーバはいつでも再起動したり、クラスタ上で実行したりすることができます。

私はそれをどうやって解決するのかを提案できます。

"リアルタイム"の精度は必要ないかもしれませんが、1分(または5分)ごとに間隔を空けて、この時点で予定されているすべての電子メールを送信するだけで十分でしょう例:

// Of course, I don't know where your Data is coming from etc... asume some services doing that 
public ActionResult SendDueEMails() 
{ 
    // Query everything older then 30 minutes... 
    var dueEMails = SomeReminderRepository.GetReminders(); 
    foreach (var dueEMail in dueEMails) 
    { 
     // Process sending of e-Mails 
     EMailService.SendReminder(dueEMail); 
    } 

    return Content(dueEMails.Count + " e-Mails sent."); 
} 

その後、あなたはこのURLごとに1分を要求しているいくつかの外部で構成されたタスク(ここでは可能性のトン)を持つことができます。

これはリアルタイムではなく、よりスケジュールされていますが、問題が解決されます。

+0

私は、あなたがリアルタイムで、一定の間隔で滞在する必要はないかもしれないことに同意します。 しかし、アプリケーションが開いていなくても、このサービスを にすることはできますか?モバイルアプリケーションにこのサービスを使用する予定があるので、 – Jeff0103

+0

上記のURLはhttp://mysuperbapp.example.com/Home/SendDueEMailsに解決されると仮定します。 https://www.pingdom.com/freeやhttps://uptimerobot.com/のような無料のオンライン監視サービスを利用すれば、そのURLを毎分トリガーするように設定することができます。 – thmshd

関連する問題