Spring 启动休息 API 调度程序在 Heroku 上不工作
Spring Boot Rest API Scheduler Not Working on Heroku
我已经在 Heroku Free Tier 上部署了我的 Spring Boot Rest Api 后端。该应用程序有一个 Scheduled 方法,该方法应该是每天中午 12 点 运行 一次。我知道 Heroku 免费层 Dyno 在 30 分钟不活动后进入睡眠状态。因此,除非 dyno 处于活动状态,否则特定方法不会 运行。我已经确认该方法 运行 是 Dyno 处于活动状态时的预期方式。我做了一些研究,在这里找到了一些相关的答案:
答案建议,“定义一个逻辑并每 30 分钟调用一次应用程序自己的端点。调度程序将在应用程序启动时开始工作。因此您可以保证应用程序 运行 全部时间。”
我对此有几个问题:
- 调用终点的逻辑到底是什么?我相信 Spring 在随机控制器方法上使用 Cron 进行引导计划不是正确的方法吗?
- Heroku 提供了自己的免费调度程序,但不保证调度程序会 运行。所以我正在寻找在 Api 本身中解决它的方法。
任何帮助将不胜感激。
您可以开发一个简单的 REST
端点,例如 /ping
或 /heath-check
来获取状态。
样本
@RestController
public class PingRestController {
@RequestMapping(method = RequestMethod.GET, path = "/api/ping")
public ResponseEntity<String> getPing() {
return ResponseEntity.ok("OK");
}
}
因为 Spring-Boot
已经 Actuator
支持健康指标,您也可以调用它来检查状态。
Example
我相信您可能已经配置了调度程序。如果没有,那么你可以参考link
我已经在 Heroku Free Tier 上部署了我的 Spring Boot Rest Api 后端。该应用程序有一个 Scheduled 方法,该方法应该是每天中午 12 点 运行 一次。我知道 Heroku 免费层 Dyno 在 30 分钟不活动后进入睡眠状态。因此,除非 dyno 处于活动状态,否则特定方法不会 运行。我已经确认该方法 运行 是 Dyno 处于活动状态时的预期方式。我做了一些研究,在这里找到了一些相关的答案:
答案建议,“定义一个逻辑并每 30 分钟调用一次应用程序自己的端点。调度程序将在应用程序启动时开始工作。因此您可以保证应用程序 运行 全部时间。” 我对此有几个问题:
- 调用终点的逻辑到底是什么?我相信 Spring 在随机控制器方法上使用 Cron 进行引导计划不是正确的方法吗?
- Heroku 提供了自己的免费调度程序,但不保证调度程序会 运行。所以我正在寻找在 Api 本身中解决它的方法。 任何帮助将不胜感激。
您可以开发一个简单的 REST
端点,例如 /ping
或 /heath-check
来获取状态。
样本
@RestController
public class PingRestController {
@RequestMapping(method = RequestMethod.GET, path = "/api/ping")
public ResponseEntity<String> getPing() {
return ResponseEntity.ok("OK");
}
}
因为 Spring-Boot
已经 Actuator
支持健康指标,您也可以调用它来检查状态。
Example
我相信您可能已经配置了调度程序。如果没有,那么你可以参考link