我试图使用Spring batch Java配置和Quartz作为调度程序来编写一个批处理作业。
@Configuration
@EnableBatchProcessing
@EnableScheduling
public class BatchProcessingConfig {
@Autowired
private JobBuilderFactory jobBuilderFactory;
@Autowired
private EntityManagerFactory entityManagerFactory;
@Autowired
private StepBuilderFactory stepBuilderFactory;
@Bean
@Qualifier("theJob")
public Job job() {
return jobBuilderFactory.get("theJobName")
.start(jobStep()).build();
}
@Bean
public Step jobStep() {
StepBuilder stepBuilder = stepBuilderFactory.get("stepName");
SimpleStepBuilder<Person, Person> chunk = stepBuilder
.<Person, Person> chunk(10);
return chunk.reader(personeReader())
.processor(jobProcessor()).build();
}
@Bean
public JobProcessor<Person, Person> invoiceRejobProcessorminderProcessor() {
return new JobProcessor();
}
我可以探索的所有示例都通过扩展QuartzJobBean创建了自己的作业类,但我希望上面配置的作业被调度运行。
如何对调度程序功能进行单元测试。
我就是这样做的,当我有这样的要求时
public class Schedule {
public Schedule()throws Exception{
SchedulerFactory sf=new StdSchedulerFactory();
Scheduler sched=sf.getScheduler();
sched.start();
JobDetail jd=new JobDetailImpl("myjob",sched.DEFAULT_GROUP,QuartzJob.class);
SimpleTrigger st=new SimpleTriggerImpl("mytrigger",sched.DEFAULT_GROUP,new Date(),
null,SimpleTrigger.REPEAT_INDEFINITELY,60L*1000L);
sched.scheduleJob(jd, st);
}
public static void main(String args[]){
try{
new Schedule();
}catch(Exception e){}
}
}
=====================================
public class QuartzJob implements Job{
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
String[] springConfig =
{
"resources\\spring-batch.xml" ,"SPRING_BATCH_JOB_NAME"
};
CommandLineJobRunner.main( springConfig );
System.out.println("Done");
}
}
问题内容: 请考虑这个例子。 一个示例Web应用程序要求其启动。调度程序配置为将其作业存储在DB中。 该应用程序被复制到六个Web服务器上。 因此,如果我们启动六个Web服务器,则在单个DB上将有六个具有相同名称的调度程序。如https://quartz- scheduler.org/documentation/quartz-2.1.x/cookbook/MultipleSchedulers中所述
请考虑这个例子。 示例web应用程序在启动时调用。配置为将其作业存储在DB中的计划程序。 该应用程序被复制到六个Web服务器上。 还有更好的方法吗?!
有人能帮帮我吗。我对Quartz调度器很陌生。
1、调度的概念 在多道程序系统中,进程的数量往往多于处理器的个数,进程争用处理器的情况在所难免。处理器调度是对处理器进行分配,就是从就绪队列中,按照一定的算法,选择一个进程并将处理器分配给他运行,以实现进程的并发执行。 处理器调度是多道程序操作系统的基础,它是操作系统设计的核心问题。 一个作业从提交开始知道完成,往往要经历一下三级调度: 1)作业调度。作业调度又称高级调度:其主要任务是按一定的原则
我使用Quartz Scheduler(使用JobDetailFactoryBean)和Spring来安排一些作业。现在我通过XmlApplicationContext通过spring配置实现了这一点,我必须将其更改为AnnotationConfigApplicationContext。那么,我如何在AnnotationConfigApplicationContext中实现这个cronjob呢。这
我们有一个使用Spring Framework在Tomcat中运行的Web应用程序。我们需要为循环操作添加一些计划作业。为此,我们遇到了Quartz Scheduler,并遵循了使用Quartz with Spring配置作业的教程,并按预期计划并运行了作业。 所以我们有一些任务是在应用程序启动时安排的。现在我们希望用户手动运行作业并更改作业的触发器,但是我们需要将这些更改持久化到数据库中。因此,