Nest.jsでのCronジョブの作成と使用方法


  1. Nest.jsプロジェクトのセットアップ: Nest.jsプロジェクトを作成し、必要な依存関係をインストールします。ターミナルで以下のコマンドを実行します:

    $ npm install -g @nestjs/cli
    $ nest new my-project
  2. Cronジョブクラスの作成: srcディレクトリ内にjobsディレクトリを作成し、その中にCronジョブクラスを作成します。例えば、my-cron.job.tsというファイル名でクラスを作成します。

    import { Injectable } from '@nestjs/common';
    import { Cron } from '@nestjs/schedule';
    @Injectable()
    export class MyCronJob {
     @Cron('0 * * * *') // Cronジョブのスケジュール(毎時0分)
     handleCron() {
       // 実行したいバックグラウンドタスクのコードをここに記述します
       console.log('Cronジョブが実行されました');
     }
    }
  3. Cronジョブの登録: app.module.tsファイルでCronジョブを登録します。imports配列にScheduleModule.forRoot()を追加し、providers配列にCronジョブクラスを追加します。

    import { Module } from '@nestjs/common';
    import { ScheduleModule } from '@nestjs/schedule';
    import { MyCronJob } from './jobs/my-cron.job';
    @Module({
     imports: [
       ScheduleModule.forRoot(),
     ],
     providers: [
       MyCronJob,
     ],
    })
    export class AppModule {}
  4. Cronジョブの実行: Nest.jsアプリケーションを起動し、Cronジョブが自動的に実行されるようになります。

    $ npm run start

    コンソールには、Cronジョブの実行ログが表示されます。

これで、Nest.jsでCronジョブを作成し、スケジュールされたバックグラウンドタスクを実行する準備が整いました!必要に応じてスケジュールを変更し、実行したいバックグラウンドタスクのコードをCronジョブのhandleCronメソッドに追加してください。