spring - 如何在 Service 类中使用 org.quartz.Scheduler 对象
问题描述
我创建了一个 Spring Boot 应用程序,其中我正在创建一个调度程序对象的主类。
prop.put("quartz.scheduler.instanceName", "ServerScheduler");
prop.put("org.quartz.scheduler.instanceId", "AUTO");
prop.put("org.quartz.scheduler.skipUpdateCheck", "true");
prop.put("org.quartz.scheduler.instanceId", "CLUSTERED");
prop.put("org.quartz.scheduler.jobFactory.class", "org.quartz.simpl.SimpleJobFactory");
prop.put("org.quartz.jobStore.class", "org.quartz.impl.jdbcjobstore.JobStoreTX");
prop.put("org.quartz.jobStore.driverDelegateClass", "org.quartz.impl.jdbcjobstore.StdJDBCDelegate");
prop.put("org.quartz.jobStore.dataSource", "quartzDataSource");
prop.put("org.quartz.jobStore.tablePrefix", "H1585.QRTZ_");
prop.put("org.quartz.jobStore.isClustered", "false");
prop.put("org.quartz.scheduler.misfirePolicy", "doNothing");
prop.put("org.quartz.dataSource.quartzDataSource.driver", "com.ibm.db2.jcc.DB2Driver");
prop.put("org.quartz.dataSource.quartzDataSource.URL", url);
prop.put("org.quartz.dataSource.quartzDataSource.user", user);
prop.put("org.quartz.dataSource.quartzDataSource.password", passwrd);
prop.put("org.quartz.dataSource.quartzDataSource.maxConnections", "2");
SpringApplication.run(SchedulerApplication.class, args);
try {
SchedulerFactory stdSchedulerFactory = new StdSchedulerFactory(prop);
Scheduler scheduler = stdSchedulerFactory.getScheduler();
scheduler.start();
我想在我的服务类中使用相同的调度程序对象来触发作业。我在下面的代码中使用的那个不能显示不同的实例 ID。
scheduler = StdSchedulerFactory.getDefaultScheduler();
我该如何解决这个问题?
解决方案
您可以创建一个单例Scheduler
,并在您的服务类中自动装配
@SpringBootApplication
public class SchedulerApplication {
public static void main(final String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Bean
public Scheduler scheduler() {
//create props as you above code
SchedulerFactory stdSchedulerFactory = new StdSchedulerFactory(prop);
Scheduler scheduler = stdSchedulerFactory.getScheduler();
scheduler.start();
return scheduler;
}
}
然后你可以在你的服务类中使用
@Service
public class YourServiceClass {
@Autowired
private Scheduler scheduler;
}
推荐阅读
- javascript - 比较日期时,creationDate.getTime 不是函数
- reactjs - 如何正确运行我的反应组件?
- python-3.x - 当我在 python 类中调用方法时出错
- python - 错误:没有已知父包的相对导入
- elixir - Elixir Ecto - 与 3 个或更多表关联
- typescript - 使用 Jest 在 Nestjs 中进行 Twilio API 模拟单元测试
- docker - 带有 nginx 容器的 Docker Gitlab 容器
- javascript - 用于用户名的 javascripts 正则表达式,无空格,无符号,必须是字母数字,连续字母不能超过 2 个
- python - python循环,检查以前的日期
- flutter - 在点击搜索按钮而不是加载后,颤振使用未来的构建器