Услуга хрона NestJS

#cron #scheduled-tasks #nestjs #httpservice

Вопрос:

Я пытаюсь создать службу расписания с помощью декоратора Cron NestJS

У меня есть метод, украшенный Хроном, ниже:

 @Cron(CronExpression.EVERY_5_SECONDS)  triggerDataloaderCron() {  this.logger.debug('called every 10 seconds');  return this.healthService.getPCFHealth();  }  

И это задание хрона вызывает метод в другой службе, как показано ниже

 getHealth() {  //code to form up an endpoint, saved as the variable fullUrl  //Does not come into this block  return this.httpService.get(fullUrl).pipe(  map((axiosResponse: AxiosResponse) =gt; {  return axiosResponse.data;  }),  catchError((err) =gt; {  console.log("in error", err);  throw new CustomException(ExceptionConstants.EurekaConnectionException);  })  );  }  

Когда выполняется задание cron, я могу ввести метод getHealth (), но блок кода this.HTTPService и т. Д…. Не запускается.

Есть какие-нибудь предложения о том, как этого можно достичь? Или если я иду по этому неправильному пути?

Спасибо!

Ответ №1:

Метод getHealth возвращает наблюдаемое. Наблюдаемое не выполняется, если только нет хотя бы одного подписчика.

В своем методе хрона добавьте подписку следующим образом:

 this.healthService.getPCFHealth()  .subscribe(response =gt; console.log(response))  

Поскольку метод cron выполняется через регулярные промежутки времени, я не думаю, что вам нужно возвращать из него значение.