#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 выполняется через регулярные промежутки времени, я не думаю, что вам нужно возвращать из него значение.