像往常一样,我在为Quartz作业设置Cron计时器表达式时遇到了麻烦.如果我想每天2245时开始工作,那么表达式应该是:
0 45 22**?
我正在关注这个例子,http://www.quartz-scheduler.org/documentation/quartz-2.1.x/quick-start
在该示例的一部分中,它提到"如果您尚未设置日志记录,则所有日志都将发送到控制台,您的输出将看起来像这样"
我尝试了这个例子,但是我无法在控制台中看到输出.
我唯一的信息是
log4j:WARN No appenders could be found for logger (org.quartz.impl.StdSchedulerFactory).
log4j:WARN Please initialize the log4j system properly.
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
使用Spring的集成API Quartz,对具有未捕获异常的cron作业有什么影响?由于cronbean/worker线程没有捕获异常,这是否意味着该线程已经死亡并且无法返回到SimpleThreadPool?如果它死了并且没有返回池将意味着SimpleThreadPool将需要创建新线程,如果这样多次发生,从而清空池?
这是堆栈跟踪的示例:
org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:276) - Invocation of method 'doCronJob' on target class [abc.package.ServiceImpl] failed
java.io.FileNotFoundException: http://www.website.com
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1457)
at abc.package.ServiceImpl.doCronJob(ServiceImpl.java:453)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:283)
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:272)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86)
at org.quartz.core.JobRunShell.run(JobRunShell.java:208)
**at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520)**
Run Code Online (Sandbox Code Playgroud) Quartz和RabbitMQ,这些技术有什么区别?它们可以一起使用吗?这些技术可以安装在托管Web服务器的硬件上,还是最好为它们安装专用硬件?
我正在使用Quartz Scheduler运行一些计划的作业。我的应用程序中的所有作业都是JobDetailBean作业。
我知道使用MethodInvokingJobDetailFactoryBean,我们可以使作业像这样并发:
<property name="concurrent"><value>false</value></property>
Run Code Online (Sandbox Code Playgroud)
我想知道如何使JobDetailBean作业非并行。默认情况下,JobDetailBean作业并发运行。
要求是:jobA需要每5分钟运行一次,但前提是前一个实例已经完成。
谢谢,
什卡
BackGround :
I am using Quartz scheduler with Spring to schedule a cronjob.
Question:
我正在我的applicationconfig文件中配置调度程序选项.相反,我想在我的java类中以编程方式指定这些选项.关于如何实现这一点的任何想法?我的代码如下,
ApplicationConfig
<!-- Cron Trigger -->
<bean id="SimpleTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="TaskJobDetail" />
<property name="cronExpression" value="0 19 14 * * ?" />
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="jobDetails">
<list>
<ref bean="TaskJobDetail" />
</list>
</property>
<property name="triggers">
<list>
<ref bean="SimpleTrigger" />
</list>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
我想在我的java类中以编程方式设置cronExpression.有什么想法吗?
目前我正在使用Windows服务继续在后台运行一些作业.这些工作是通过Quartz.Net安排的.通常这些是长期工作,跨度从5分钟到15分钟.如果作业当前正在运行,并且用户将尝试关闭Windows服务,则会抛出异常:Windows服务未及时响应.
实际上是WindowsService的OnShutdown()方法,我也试图关闭Quartz.Net.我正在调用scheduler.Shutdown(true)来停止调度程序并等待运行作业.如果我将此设置为False,则Windows Service会正常停止,但它会使正在运行的Job处于Unstable状态.请帮帮我.
我想现在每14分钟就找一份工作.
例如,如果我在上午11:04安排工作,使用0 0/14 * * * ?cron表达式.然后预计火灾时间为11:18,11:32,11:46,依此类推.但它将在11:00,11:14:11,28:11:42,11:56,12:00开火,这是不可预期的.为什么它在11:56之后的中午12点开火,差距只有4分钟.
提前致谢.
我是Quartz.net的新手,现在感觉很好.我正在设置Quartz.net作业以从我的Windows服务运行.
我的Windows服务有两种启动模式:a)如果项目作为Windows服务运行,它将作为普通服务运行.b)如果项目是从Visual Studio中以调试模式运行的,它将以交互模式运行(这样我就可以根据上下文将调试信息输出到控制台与记录器).它在Main()中执行如下操作(只是摘录):
if (Environment.UserInteractive && System.Diagnostics.Debugger.IsAttached) {
System.Reflection.MethodInfo onStartMethod = typeof(ServiceBase).GetMethod("OnStart", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
onStartMethod.Invoke(myService, new object[] { new string[] { } });
Console.WriteLine("Service started.");
Console.WriteLine("Press a key to stop service and finish process...");
Console.ReadKey();
System.Reflection.MethodInfo onStopMethod = typeof(ServiceBase).GetMethod("OnStop", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
onStopMethod.Invoke(myService, null);
Console.WriteLine("Service stopped.");
} else {
ServiceBase.Run(myService);
}
Run Code Online (Sandbox Code Playgroud)
现在在MyService中我有以下工作,这个工作似乎按预期正确运行:
protected override void OnStart(string[] args)
{
_schedulerFactory = new StdSchedulerFactory();
IScheduler scheduler = _schedulerFactory.GetScheduler();
scheduler.Start();
IJobDetail syncJob = JobBuilder.Create<MySyncJob>()
.WithIdentity("syncJob")
.Build();
ITrigger trigger = TriggerBuilder.Create()
.StartAt(new DateTimeOffset(DateTime.UtcNow.AddSeconds(5))) …Run Code Online (Sandbox Code Playgroud) 我所做的是:
spring.application.name=QuartzTestWithMySQL
server.port=8081
## Data source
#docker run -d --rm -p 3306:3306 --name=mysql-docker -e MYSQL_ROOT_PASSWORD=root -e MYSQL_USER=test -e MYSQL_PASSWORD=test -e MYSQL_DATABASE=testDB mysql:latest
spring.datasource.name = myDS
spring.datasource.url=jdbc:mysql://localhost:3306/testDB
spring.datasource.username=test
spring.datasource.password=test
## Hibernate Properties
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
# The SQL dialect makes Hibernate generate better SQL for the chosen database
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
# Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto = create-drop
## QuartzProperties
#spring.quartz.job-store-type=memory
spring.quartz.job-store-type=jdbc
spring.quartz.properties.org.quartz.threadPool.threadCount=5
#spring.quartz.jdbc.initialize-schema=always
#spring.quartz.properties.org.quartz.scheduler.instanceName = MyScheduler
#spring.quartz.properties.org.quartz.threadPool.threadCount = 3
#spring.quartz.properties.org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
spring.quartz.properties.org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX …Run Code Online (Sandbox Code Playgroud) quartz-scheduler ×10
java ×3
spring ×3
c# ×2
cron ×2
.net ×1
log4j ×1
logging ×1
quartz.net ×1
rabbitmq ×1
spring-boot ×1
threadpool ×1