java - 为什么我的 @Scheduled Spring Boot 任务在 Azure 中运行不一致?

标签 java spring spring-boot azure scheduler

我在 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/

相关文章:

spring - 嵌套验证组,Spring,JSR 303

mongodb - Spring Mongo 仅通过新 POJO 的非空字段进行更新

java - 为什么在删除实体时会出现 StaleObjectStateException?

Java 泛型返回类型

java - 初始化任何对象都会导致跳过部分代码

postgresql - JPQL 获得列与现在之间的天数差异

java - 带有嵌入式tomcat的Spring引导+带有身份验证用户的访问日志

java - 设计具有共同接口(interface)但不同行为的类

java - 我们是否允许在实例化期间使用通配符

spring - p :remoteCommand only update ="@all" PF5