私は c# を使用して Twitter と通信しています。スケジュール システムをコーディングして、ユーザー定義の日付に Twitter メッセージを送信する必要があります。
送信されるメッセージは、配信日時とともにデータベースに保存されます。
データベースでスケジュールされたメッセージをチェックし、時間になったら送信するのに最適な方法はどれですか?
私は c# を使用して Twitter と通信しています。スケジュール システムをコーディングして、ユーザー定義の日付に Twitter メッセージを送信する必要があります。
送信されるメッセージは、配信日時とともにデータベースに保存されます。
データベースでスケジュールされたメッセージをチェックし、時間になったら送信するのに最適な方法はどれですか?
タイミングはどのくらい正確である必要がありますか?「現在の時刻+5分前に配信する必要のあるすべてのメッセージを教えてください」と言って、5分ごとにデータベースをポーリングしてから、すべてを送信することをやめてもらえますか?(もちろん、データベースで送信済みとしてマークします。)少し早いか遅いかは重要ですか?
C#側でスケジューリングを実行して、より正確にすることができますが、本当に必要な場合を除いて、非常に単純なソリューションに固執します。
(データベースによっては、コールバックをトリガーする賢い方法があるかもしれません...しかし、繰り返しになりますが、私は機能する最も単純なソリューションに固執します。)
Windows サービス オプション (またはバックグラウンド スレッド) に加えて、スケジュールされたタスクを設定して、DB をポーリングし、定義された間隔ごとにツイートを送信するアプリを実行することができます。
Windows スケジュールは、必要に応じて C# を使用して設定でき、手動で簡単に設定できます。
これを行うにはいくつかの方法がありますが、送信されていないスケジュールされたツイートについてDBを定期的にポーリングする(頻度はあなた次第です)Windowsサービスを設定するのが最善の方法だと思います。
言うまでもなく、インターネット接続やDBのダウンなどのシナリオを処理する必要があります。
実際、解決策は Windows サービスを使用することですが、ASP.NET MVC アプリと直接通信することはできません。タスクを処理する Web サービスと、Web サービスを定期的に呼び出す System.Threading.Timer を Windows サービスに追加しました。