sue.spring.quartz.cron=*/5 * * * * ?
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency>
package com.luke.demo.schedule; import org.quartz.*; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class QuartzConfig { @Value("${sue.spring.quartz.cron}") private String testCron; /** * 创建定时任务 */ @Bean public JobDetail quartzTestDetail() { JobDetail jobDetail = JobBuilder.newJob(QuartzTestJob.class) //添加认证信息 .withIdentity("quartzTestDetail", "QUARTZ_TEST") .build(); return jobDetail; } /** * 创建触发器 */ @Bean public Trigger quartzTestJobTrigger() { //执行频率 CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(testCron); //创建触发器 Trigger trigger = TriggerBuilder.newTrigger() .forJob(quartzTestDetail()) //添加认证信息 .withIdentity("quartzTestJobTrigger", "QUARTZ_TEST_JOB_TRIGGER") //添加执行规则 .withSchedule(cronScheduleBuilder) .build(); return trigger; } }
여기 QuartzTestJob은 다음과 같으며, ExecutionInternal 메소드에는 정기적으로 실행해야 하는 작업이 포함되어 있습니다.
public class QuartzTestJob extends QuartzJobBean { @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { System.out.println("现在是"+ new Date()); } }
프로젝트가 시작되면 설정된 빈도에 따라 다음과 같이 출력됩니다.
물론 작업 중일 때 세 당사자의 반환 결과를 쿼리하기 위해 예약된 작업을 시작할 수도 있습니다. 자동차론 사업 리스크 관리 시스템에서는 3자에게 데이터를 수집하여 적극적으로 요청하고, 예정된 업무별로 결과를 폴링하도록 요청하셨습니다.
이제 메시지 대기열을 사용한 구현도 매우 빠른 것 같습니다. 지연된 메시지는 데이터를 요청한 다음 시간이 다 되면 지연된 메시지를 요청하면 됩니다. 좋지 않습니다. 지연된 메시지를 메시지 대기열에 넣으세요. 예약된 작업과 비교할 때 이 방법의 장점은 CPU 유휴를 방지하고 성능을 향상시킨다는 것입니다.
위 내용은 Quartz를 사용하여 Java에서 예약된 작업을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!