の機能を自動化するNode.Jsと時間内に特定の瞬間に呼び出す方法はありますか?より正確には、ノードjsを使用してリマインダーを作成したいと思います。ユーザーから日付を受け取ったら、何かを思い出させるための通知を送信する必要があります。特定の瞬間にNodeJs関数を呼び出す
私はsetTimeout()関数を知っていますが、私はユーザーの大きなデータベースを持っているときは本当に良いアイデアですか?
ありがとうございます。
の機能を自動化するNode.Jsと時間内に特定の瞬間に呼び出す方法はありますか?より正確には、ノードjsを使用してリマインダーを作成したいと思います。ユーザーから日付を受け取ったら、何かを思い出させるための通知を送信する必要があります。特定の瞬間にNodeJs関数を呼び出す
私はsetTimeout()関数を知っていますが、私はユーザーの大きなデータベースを持っているときは本当に良いアイデアですか?
ありがとうございます。
setTimeout()
を使用してサーバー内のすべての作業を行うことはできますが、多数のユーザーの場合は、1人のユーザーごとにタイムアウトを設定する必要はありません。本当に必要なのは、通知する必要がある次のユーザーのための単一のタイムアウトです。タイマーが起動すると、通知する必要がある次のユーザーのタイマーなどを設定します。
これは、通知時間で並べ替えるオブジェクトの配列で行うことができます。配列に何かを追加するたびに、現在のタイマーをキャンセルし、配列に新しい通知を追加し、配列をソートし、最も早い通知のタイマーを設定します。
タイマーが起動すると、そのアイテムをアレイから削除し、次のものをスケジュールします。
これは、サーバーの再起動後も存続する可能性が高いため、変更するたびに通知配列(おそらくJSON形式)をファイルまたはデータベースに保存して、サーバーの再起動時にそのデータを再読み込みできるようにします。
なお、node.jsのスケジューリングモジュールでは、既に他の人が書いたコードを手に入れたい場合に、このタイプの機能を提供しています。これらのモジュールのいくつかの
例:
あなたが探しているのはスケジューラまたはcronジョブです(起源はLinux OSです)。
NodeJSには、同じアイデアを実装しているnode-scheduleがあります。
私が見えた、microserviceに通知ルーチンを回して、cronジョブがサービスを実行する必要があります実行時に通知が送信され、一度送信されると通知がクリアされます。そうすれば、サーバが再起動したときにsetTimeoutsを失うことはありません。 – dandavis
良いアイデア、ありがとう –