java 通过HTTPSpring控制器调用的服务需要更长的时间

pxq42qpu  于 2023-04-19  发布在  Java
关注(0)|答案(1)|浏览(98)

我有一个 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小时。我的问题是这种差异的潜在原因是什么。
感谢您的关注。

wvt8vs2t

wvt8vs2t1#

我不认为SpringBoot是这种情况的可能原因。相反,仔细看看MyService的实际实现,如果它的速度与一天中的时间,空闲资源或要处理的数据量有关。
您没有提供任何关于MyService实现的信息。但无论哪种方式,6分钟,更不用说6小时是一段很长的时间。这可能意味着完成了一些广泛的I/O操作,数据库处理或计算。所需的时间可能取决于各种条件...

相关问题