我可以通过属性设置关闭quartz调度程序吗?
我们通过在 jobs.xml 文件中注释掉调度程序工厂 bean 来在本地禁用quartz 调度程序。
quartz.properties 文件中是否有执行类似操作的设置?
We disable the quartz scheduler locally by commenting out the scheduler factory bean in the jobs.xml
file.
Is there a setting for doing something similar in the quartz.properties
file?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
如果您使用 Spring Framework,您可以从 org.springframework.scheduling.quartz.SchedulerFactoryBean 创建子类并覆盖 afterPropertiesSet() 方法。
然后更改 xml 文件中工厂的声明,并在属性文件中设置“enable.quartz.tasks”属性。就这样。
当然,您可以编写和使用setter方法,然后添加
到xml中的MySchedulerFactoryBean声明中,而不是使用@Autowired。
If you use Spring Framework you can make subclass from org.springframework.scheduling.quartz.SchedulerFactoryBean and override afterPropertiesSet() method.
Then change declaration of factory in xml file and set "enable.quartz.tasks" property in properties file. That's all.
Of course, instead using @Autowired you can write and use setter method and add
to MySchedulerFactoryBean declaration in xml.
看来
org.springframework.scheduling.quartz.SchedulerFactoryBean
中有一个属性autoStartup
。所以你可以像这样在 XML 配置中配置它:感谢 https ://chrisrng.svbtle.com/configure-spring-to-turn-quartz-scheduler-onoff
It seems that there is a property
autoStartup
inorg.springframework.scheduling.quartz.SchedulerFactoryBean
. So you can configure it in XML config like this:Thanks to https://chrisrng.svbtle.com/configure-spring-to-turn-quartz-scheduler-onoff
不。但是属性文件不会启动调度程序。
除非某些代码调用scheduler.start(),否则调度程序不会启动。
No. But the properties file doesn't start the scheduler.
The scheduler doesn't start until/unless some code invokes scheduler.start().
如果您使用 Spring Framework 3.1 创建和启动 Quartz Scheduler,则可以禁用 Quartz Scheduler。
在我的 Spring 配置文件中,我以这种方式使用 Spring 3.1 的新配置文件功能:
仅当我想启动 Scheduler 时(例如在生产环境中),我设置
spring.profiles.active
系统属性,包含活动配置文件列表:-Dspring.profiles.active="product"
更多信息:
You can disable Quartz Scheduler if you use Spring Framework 3.1 for creating and starting it.
On my Spring configuration file I use the new profiles feature of Spring 3.1 in this way:
Only when I want to start the Scheduler (for example on the production environment), I set the
spring.profiles.active
system property, with the list of active profiles:-Dspring.profiles.active="production"
More info here:
我个人喜欢 Demis Gallisto 的答案。如果您可以使用配置文件,这将是我的建议。
如今,人们很可能更喜欢使用注释,因此作为他的答案的补充。
仅当配置文件
test
或prod
处于活动状态时,才会触发调度程序。因此,如果您设置不同的配置文件,例如-Dspring.profiles.active=dev
则不会发生任何情况。如果由于某些原因您无法使用配置文件方法,例如配置文件重叠...
miso.belica 的解决方案似乎也去工作。
定义一个属性。例如在
application.properties
中:dailyRecalculationJob.cron.enabled=false
并在您的SchedulerConfig
中使用它。I personally like the answer from Demis Gallisto. If you can work with profiles, this would be my recommendation.
Nowadays people most likely prefer to work with Annotations, so as an addition to his answer.
This will trigger the scheduler only when the profile
test
ORprod
is active. So if you set an different profile, e.g.-Dspring.profiles.active=dev
nothing will happen.If for some reasons you cannot use the profile approach, e.g. overlap of profiles ...
The solution from miso.belica seems also to work.
Define a property. e.g. in
application.properties
:dailyRecalculationJob.cron.enabled=false
and use it in yourSchedulerConfig
.我有类似的问题:在测试范围中禁用调度程序。
这是我的 applicationContext.xml 的一部分
,我已经使用“primary”属性和 Mockito 禁用了调度程序。这是我的 applicationContext-test.xml
希望有帮助!
I had similar issue: disable scheduler in test scope.
Here is part of my applicationContext.xml
And I've disabled scheduler using 'primary' attribute and Mockito. Here is my applicationContext-test.xml
Hope this help!
我在 Spring Boot 上下文中发现的最简单的测试方法就是:
The simplest way I've found in a spring boot context for tests is to simply:
这个scala代码有效:
This scala code works: