我有一个 Spring 服务,这是为了运行每天在特定的时间:
@Service
@RequiredArgsConstructor
public class MyServiceScheduler {
private final MyService myService;
@Timed("my.service")
@Scheduled(cron = "${my.service}")
@SchedulerLock(name = "MyService_start")
public void scheduledMyService(){
myService.doTheJob(Constants.FORWARD_DAYS_TO_EXPORT_WEEK);
}
这个服务大约需要6分钟才能完成。然而,我还创建了一个spring控制器,以便按需调用完全相同的服务:
@RestController
@RequiredArgsConstructor
@RequestMapping("/myservice")
public class MyServiceController {
private final MyService myService;
@PatchMapping("onDemand")
public void onDemandMyService() {
myService.doTheJob(Constants.FORWARD_DAYS_TO_EXPORT_WEEK);
}
这里的区别是,如果通过http请求调用到该端点,则服务需要大约6小时。我的问题是这种差异的潜在原因是什么。
感谢您的关注。
1条答案
按热度按时间wvt8vs2t1#
我不认为SpringBoot是这种情况的可能原因。相反,仔细看看MyService的实际实现,如果它的速度与一天中的时间,空闲资源或要处理的数据量有关。
您没有提供任何关于MyService实现的信息。但无论哪种方式,6分钟,更不用说6小时是一段很长的时间。这可能意味着完成了一些广泛的I/O操作,数据库处理或计算。所需的时间可能取决于各种条件...