我打算用石英计划后立即开始紧急工作.我的代码在下面.我将当前时间作为startTime.Bnt计划后需要30-40秒才能完成工作.如何立即运行.
// Trigger the job to run now, and then repeat every 40 seconds
jobTrigger= newTrigger()
.withIdentity(Long.toString(emergencyJob.getId()), Long.toString(emergencyJob.getVariant().getId()))
.withPriority(emergencyJob.getPriority())
.startAt(new Date(ctime))
.withSchedule(simpleSchedule().withMisfireHandlingInstructionFireNow()
)
.build();
scheduler.scheduleJob(jobDetail, jobTrigger);
Run Code Online (Sandbox Code Playgroud) 我刚刚开始学习Quartz调度,在第一步中我遇到了问题.
我在其主要网站上查看它的示例,但是当我尝试在我的工作区中开发它时,它给了我错误.
package testing.quartz.scheduler;
import java.util.Date;
import java.util.logging.Logger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;
public class TesterMain {
/**
* @param args
*/
public void run() throws Exception {
// First we must get a reference to a scheduler
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
// computer a time that is on the next round minute
Date runTime = evenMinuteDate(new Date());<--Here its giving me error
// define the job and tie it to …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用@Scheduled功能.我已经按照这个和本教程,但我不能让我的计划任务被执行.
我创造了一个工人:
@Component("syncWorker")
public class SyncedEliWorker implements Worker {
protected Logger logger = Logger.getLogger(this.getClass());
public void work() {
String threadName = Thread.currentThread().getName();
logger.debug(" " + threadName + " has began to do scheduled scrap with id=marketwatch2");
}
}
Run Code Online (Sandbox Code Playgroud)
和SchedulingService:
@Service
public class SchedulingService {
protected Logger logger = Logger.getLogger(this.getClass());
@Autowired
@Qualifier("syncWorker")
private Worker worker;
@Scheduled(fixedDelay = 5000)
public void doSchedule() {
logger.debug("Start schedule");
worker.work();
logger.debug("End schedule");
}
}
Run Code Online (Sandbox Code Playgroud)
并尝试在我的applicationcontext中进行不同的布线.最终版本如下:
<beans xmlns=...
xmlns:task="http://www.springframework.org/schema/task"
...
xsi:schemaLocation=" ..
http://www.springframework.org/schema/task …Run Code Online (Sandbox Code Playgroud) 我在基于 maven 的应用程序中使用 Quartz 调度程序和 MySql 作为 JobStore,我想实现 Quartz 的集群功能,但我不知道如何在集群中添加多个节点以及 Quartz 如何了解节点并管理它们?
简而言之,我想了解 Quartz 的实际工作原理以及如何设置集群环境。
任何帮助将不胜感激。
谢谢
我正在尝试安装和使用Grails的Quartz插件.我的grails版本是2.3.7
我添加compile ":quartz:1.0.1"到我的Build.config中; 并下载quartz-2.2.1.jar和quartz-jobs-2.2.1.jar; 然后将这些.jar文件添加到我的/lib文件夹中.
当我尝试时grails run-app,出现以下错误:
Compile error during compilation with javac.
C:\Users\username\Documents\NetBeansProjects\Siscoserv-web\target\work\plugins\quartz-1.0-RC11\src\java\grails\plugins\quartz\CustomTriggerFactoryBean.java:51: error: inconvertible types
if(customTrigger instanceof AbstractTrigger){
^
required: AbstractTrigger
found: Trigger
C:\Users\username\Documents\NetBeansProjects\Siscoserv-web\target\work\plugins\quartz-1.0-RC11\src\java\grails\plugins\quartz\CustomTriggerFactoryBean.java:52: error: inconvertible types
AbstractTrigger at =(AbstractTrigger) customTrigger;
^
required: AbstractTrigger
found: Trigger
C:\Users\username\Documents\NetBeansProjects\Siscoserv-web\target\work\plugins\quartz-1.0-RC11\src\java\grails\plugins\quartz\CustomTriggerFactoryBean.java:56: error: no suitable method found for setJobKey(Key)
at.setJobKey(jobDetail.getKey());
^
method AbstractTrigger.setJobKey(JobKey) is not applicable
(actual argument Key cannot be converted to JobKey by method invocation conversion)
method …Run Code Online (Sandbox Code Playgroud) 我使用quartz 2.2.1和mysql als jdbc store,我有一个简单的工作是这样的:
package foo;
import org.quartz.*;
@PersistJobDataAfterExecution
@DisallowConcurrentExecution
public class FooJob2 implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
int count = (int) jobExecutionContext.getJobDetail().getJobDataMap().get("foobar");
System.out.println("lala neu 3 " + count);
jobExecutionContext.getJobDetail().getJobDataMap().put("foobar", count++);
}
}
Run Code Online (Sandbox Code Playgroud)
我像这样安排作业,但是任何时候作业打印 foobar 编号都不会增加。我该怎么做才能使作业持久化 jobdatamap?
public class TestStore {
public static void main(String[] args) throws SchedulerException, InterruptedException {
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start();
JobDataMap data = new JobDataMap();
data.put("foobar", 12);
// data.put("foobar", "12");
// define the job and tie it to …Run Code Online (Sandbox Code Playgroud) 要求:
2015-02-11 到 2015-02-15 / 10:30 到 11:30 作业要执行,当 11:30 时间到来时,它应该停止它应该发生的作业,直到第 15 天到来。
在这里,我有 Quartz 1.8.6 lib,但无法为此获得正确的实现。请帮助我们解决这个问题。
示例程序:
SimpleDateFormat formateDate = new SimpleDateFormat("mm/DD/yyyy HH:mm");
SchedulerFactory sf = new StdSchedulerFactory(AppConstants.QUARTZ_PROP_FILE);
log.info("------- invoking scheduler ----------------------");
System.out.println("------- invoking scheduler ----------------------");
Scheduler sched = sf.getScheduler();
java.util.Calendar startCal = java.util.Calendar.getInstance();
startCal.setTime(formateDate.parse(startDate));
java.util.Calendar endCal = java.util.Calendar.getInstance();
endCal.setTime(formateDate.parse(endDate));
System.out.println("start/end : " + startCal.getTime() + "/"+endCal.getTime());
DailyCalendar cal = new DailyCalendar(startTime, endTime);
// cal.setTimeRange(startTime, endTime);
cal.setInvertTimeRange(true);
Calendar quartzCal = cal;
sched.addCalendar("quartzCal", quartzCal, true, true);
//makeDailyTrigger(tgName, 12, 15)
JobDetail …Run Code Online (Sandbox Code Playgroud) 我想在我的网络应用程序中每五秒发布一条消息,我正在使用 Quatz 来安排这个任务。这是我的代码
public class InvoiceGenerationSchedular implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent arg0) {
System.out.println("Listener is off");
}
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
System.out.println("Listener initialized.");
JobDetail job = JobBuilder.newJob(HelloJob.class)
.withIdentity("dummyJobName", "group1").build();
Trigger trigger = TriggerBuilder
.newTrigger()
.withIdentity("dummyTriggerName", "group1")
.withSchedule(
CronScheduleBuilder.cronSchedule("0/5 * * * * ?")).build();
//schedule it
Scheduler scheduler;
try {
scheduler = new StdSchedulerFactory().getScheduler();
scheduler.start();
scheduler.scheduleJob(job, trigger);
} catch (SchedulerException e) {
e.printStackTrace();
}
}
class HelloJob implements Job
{
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException …Run Code Online (Sandbox Code Playgroud) 我目前正在使用 spring boot 开发一个应用程序,让用户创建一个约会。所以基本上约会有一个 startDateTime 和一个 endDateTime 字段 + 一个电子邮件。约会的创建在 MySql 数据库的约会表中添加了一个新行。
我想要做的是在数据库中定义的 startDateTime 之前一小时通过电子邮件通知用户。我寻找了一种解决方案,但找不到。我发现工作(春季批次)可以做到这一点,但工作依赖于频率检查(天、周、月),我正在寻找的是实时通知。欢迎任何有关实现此类任务的解决方案的帮助或指导。
你好
如果在 Spring Batch 中触发作业执行,我有几个 Spring Batch 作业可以正常工作。这些作业将使用 JpaItemWriter 读取和写入数据库,其中需要事务。
我的问题是,我有配置为定期运行这些作业的石英调度程序,我收到“javax.persistence.TransactionRequiredException: no transaction is in progress”错误。我知道目前石英正在实例化作业 bean 而不是 spring 本身,这使得 bean 不知道 spring 管理的正在进行的事务,如果我错了,请纠正我。
但是,我尝试了很多方法,但都没有奏效。以下是我目前的配置:
石英属性
org.quartz.scheduler.instanceName=sample_instance
org.quartz.scheduler.instanceId=AUTO
org.quartz.threadPool.threadCount=5
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreCMT
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.MSSQLDelegate
org.quartz.jobStore.useProperties=true
org.quartz.jobStore.misfireThreshold=60000
org.quartz.jobStore.tablePrefix=QRTZ_
org.quartz.jobStore.isClustered=true
org.quartz.jobStore.clusterCheckinInterval=20000
Run Code Online (Sandbox Code Playgroud)
调度程序配置文件
@EnableScheduling
@Configuration
public class SchedulerConfig {
@Inject
private DataSource dataSource;
@Inject
private JobsListenerService jobsListenerService;
@Bean
public JobFactory jobFactory(ApplicationContext applicationContext) {
AutowiringSpringBeanJobFactory jobFactory = new AutowiringSpringBeanJobFactory();
jobFactory.setApplicationContext(applicationContext);
return jobFactory;
}
@Bean
public SchedulerFactoryBean schedulerFactoryBean(JobFactory jobFactory)
throws IOException {
SchedulerFactoryBean factory = new SchedulerFactoryBean();
factory.setJobFactory(jobFactory);
factory.setDataSource(dataSource); …Run Code Online (Sandbox Code Playgroud) quartz-scheduler ×10
java ×5
spring ×2
spring-boot ×2
annotations ×1
grails ×1
maven ×1
quartz-core ×1
scheduler ×1
spring-batch ×1
spring-mvc ×1