プッシュ通知サービス (SignalR/WebAPI 経由で行った) と、特定の日時または定期的な間隔で実行できる将来のタスク ランナー/スケジューラーを作成する必要があります。
ユース ケースの例としては、支払いリマインダー サービスがあります。支払いが期日までに支払われない場合、システムは「管理者」に通知を送信し、「消費者」に電子メール/SMS を送信します。リマインダーは、手動または自動で、別の日付にスヌーズしたり、新しい日付変更線に更新したりできます。
スケジューラ サービスは、手動の Todo の設定、定期的なリマインダー、将来の電子メール/SMS 送信日など、他の用途にも使用できる可能性があります。また、日時ごとに潜在的に数千のニュースレターの電子メールを見ています。
私はいくつかのオプションを調べました
1) Quartz.net / Hangfire / バックグラウンド タスク
--> asp.net または Windows サービスとして実行できます。
--> スケジュールされたタスク/定期的なサポートなどがあります...
--> 私には非常に複雑に思えます。また、スケーラブルではない asp.net サービスと組み合わせると、おそらく効率的ではなく、将来の校正のために適切に設計する必要があります...追加のストアをセットアップする必要がありますか?
2) タスクスケジューラ
--> 私の焦土/不死鳥の展開シナリオではあまり実現可能ではありません
3) 外部サービス
--> Azure スケジューラ
--> AWS Cloudwatch スケジューラ / イベント (SNS / Lambda などもトリガーできます...)
--> 非常に優れた分離ソリューションのようですが、メンテナンス/テスト/耐久性が問題になる可能性がありますか? ソリューションに応じて適切にセットアップする必要があります...「12 Factor's App」の製品/開発パリティテストなどを取得する方法がわからない...
4) イベント駆動メッセージバス
--> バスは耐久性や信頼性に優れていますが、キャンセルしたい場合などは複雑になります..?
--> 今後のスケジュールの制限、SQS は 15 日間の制限しかないと思います。
5) アクターモデル
--> Akka.net または Orleans、セットアップは簡単に思えますが、まだ使用していませんが、特定のタスクを実行する小さなアクター、スケジューラー、高性能、クラスターの追加が容易な、目的に合ったものがたくさんあるようですより多くのジョブ (すべてのロジックはアクターごと、残りは構成) の場合、ローカルで簡単に再現でき、優れています...単一の作業単位アクターは私にとって非常に理にかなっています。
--> 経験はありませんが、私のシナリオではやり過ぎでしょうか? 本格的なスケジューラーにとっては、将来的にも良いことのように思えます。
--> 否定。dotnet コアのサポートはまだありません
その他の提案は歓迎します...2 週間以内に完了する必要があります。
PS Google Now Reminders のアーキテクチャとは何なのか本当に疑問に思っています。