NestJs 定时服务
NestJs Cron Service
我正在尝试使用 nestJs 的 Cron 装饰器创建一个计划服务
我下面有一个 Cron 修饰的方法:
@Cron(CronExpression.EVERY_5_SECONDS)
triggerDataloaderCron() {
this.logger.debug('called every 10 seconds');
return this.healthService.getPCFHealth();
}
并且这个 cron 作业调用了另一个服务中的方法,如下所示
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) => {
return axiosResponse.data;
}),
catchError((err) => {
console.log("in error", err);
throw new CustomException(ExceptionConstants.EurekaConnectionException);
})
);
}
当 cron 作业 运行s 时,我能够进入 getHealth() 方法,但是 this.httpService 等...代码块没有 运行。
关于如何实现这一点有什么建议吗?或者如果我以错误的方式解决这个问题?
谢谢!
getHealth 方法return是一个 Observable。除非至少有一个订阅者,否则不会执行可观察对象。
在您的 cron 方法中,按如下方式添加订阅:
this.healthService.getPCFHealth()
.subscribe(response => console.log(response))
由于 cron 方法定期执行,我认为您不需要 return 它的值。
我正在尝试使用 nestJs 的 Cron 装饰器创建一个计划服务
我下面有一个 Cron 修饰的方法:
@Cron(CronExpression.EVERY_5_SECONDS)
triggerDataloaderCron() {
this.logger.debug('called every 10 seconds');
return this.healthService.getPCFHealth();
}
并且这个 cron 作业调用了另一个服务中的方法,如下所示
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) => {
return axiosResponse.data;
}),
catchError((err) => {
console.log("in error", err);
throw new CustomException(ExceptionConstants.EurekaConnectionException);
})
);
}
当 cron 作业 运行s 时,我能够进入 getHealth() 方法,但是 this.httpService 等...代码块没有 运行。
关于如何实现这一点有什么建议吗?或者如果我以错误的方式解决这个问题?
谢谢!
getHealth 方法return是一个 Observable。除非至少有一个订阅者,否则不会执行可观察对象。
在您的 cron 方法中,按如下方式添加订阅:
this.healthService.getPCFHealth()
.subscribe(response => console.log(response))
由于 cron 方法定期执行,我认为您不需要 return 它的值。