我在 Azure 中部署了一个 Spring Boot 微服务,该微服务应该使用 @Scheduled
Spring 注解以固定速率运行。
当我在本地运行它时,它的性能完全符合预期。
当部署在 Azure 中时,关于何时按计划运行似乎是一个复杂的问题。
在非高峰时段(~00:00 - 8:00AM),它似乎按计划工作,但有时会有一些变化。 但是,在高峰营业时间(中午 12:00 - 晚上 18:00),预定时间可能会有很大变化。
在此期间,应每分钟运行一次的服务可能每 5 分钟运行一次。 要求服务保持正常运行(不能在计划时重新启动服务),它有一个循环的客户列表(每当第一次启动或通过列表时,都会从数据库中获取该列表) )。它每次安排时都会服务一定数量的客户,然后继续处理下一组固定的客户,直到处理完所有客户,然后重新开始该流程。
这是由于高峰时段的节流造成的吗?
有谁知道让我的服务按计划启动的好方法,或者 @Scheduled
注释的 Azure 替代方案?
谢谢
最佳答案
使用fixedRate
fixedRate
:使 Spring 定期运行任务,即使最后一次调用可能仍在运行。
fixedDelay
:专门控制上次执行完成后下次执行的时间。在代码中:
@Scheduled(fixedDelay=5000)
public void updateEmployeeInventory(){
}
@Scheduled(fixedRate=5000)
public void updateEmployeeInventory(){
}
我从那里得到了答案How wait @Scheduled till previous task is not finished?
关于java - 为什么我的 @Scheduled Spring Boot 任务在 Azure 中运行不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68214867/