标签: quartz-scheduler

Quartz.net 无法连接到 Postgres DB

这是我的配置:

["quartz.jobStore.dataSource"] = "default",
["quartz.jobStore.tablePrefix"] = "QRTZ_",
["quartz.jobStore.driverDelegateType"] = "Quartz.Impl.AdoJobStore.PostgreSQLDelegate, Quartz",
["quartz.dataSource.default.provider"] = "Npgsql",
["quartz.dataSource.default.connectionString"] = @"User ID=ttt;Password=xxx;Host=ttt.postgres;Port=5432;Database=ttt;"
Run Code Online (Sandbox Code Playgroud)

例外:

Could not parse property 'dataSource' into correct data type: No writable property 'DataSource' found

我已经尝试不同的事情一个多小时了,文档并没有真正帮助(在示例方面很薄弱),我尝试挖掘 Quartz.Net 源代码,但没有运气:/

quartz-scheduler quartz.net quartz.net-3.0

5
推荐指数
1
解决办法
2540
查看次数

将quartz数据源连接到spring boot bean

我已经在 Spring Boot 中使用 bean 建立了与数据库的连接。这一切在我们的正常应用程序中都可以正常工作。

@Bean(name="MoliDBConfig")
@Primary
public DataSource dataSource() throws SQLException {
Run Code Online (Sandbox Code Playgroud)

我想从quartz 连接到相同的数据源,但收到 JNDI 错误。(顺便说一句,值得注意的是,我已经通过手动提供配置详细信息成功地从quartz连接到数据源。请参阅下面quartz.properties中注释掉的代码。)

2019-03-19T10:51:52.342 + 00:00 [APP / PROC / WEB / 0] [OUT]错误2019-03-19 10:51:52.333 - oquJNDIConnectionProvider 126查找数据源时出错:需要在中指定类名环境或系统属性,或作为小程序参数,或在应用程序资源文件中: java.naming.factory.initial javax.naming.NoInitialContextException:需要在环境或系统属性中指定类名,或作为小程序参数,或在应用程序资源文件:java.naming.factory.initial| 在 javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:662) ~[?:1.8.0_202]| 在 javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313) ~[?:1.8.0_202]| 在 javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:350) ~[?:1.8.0_202]| 在 javax.naming.InitialContext.lookup(InitialContext.java:417) ~[?:1.8.0_202]| 在 org.quartz.utils.JNDIConnectionProvider.init(JNDIConnectionProvider.java:124) [quartz-2.3.0.jar!/:?]| 在 org.quartz.utils.JNDIConnectionProvider.(JNDIConnectionProvider.java:102) [quartz-2.3.0.jar!/:?]| 在 org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:995) [quartz-2.3.0.jar!/:?]| 在 org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1559) [quartz-2.3.0.jar!/:?]| 在 com.xxx.d3.moli.schedule.QrtzScheduler.scheduler(QrtzScheduler.java:52) [类/:?]| 在 com.xxx.d3.moli.schedule.QrtzScheduler$$EnhancerBySpringCGLIB$$aa50aa7b.CGLIB$scheduler$1() [类/:?]| 在 com.xxx.d3.moli.schedule.QrtzScheduler$$EnhancerBySpringCGLIB$$aa50aa7b$$FastClassBySpringCGLIB$$374ea1c1.invoke() [类/:?]| 在 org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) [spring-core-4.3.22.RELEASE.jar!/:4.3.22.RELEASE]| 在 org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:358) [spring-context-4.3.22.RELEASE.jar!/:4.3.22.RELEASE]| 在 com.xxx.d3.moli.schedule.QrtzScheduler$$EnhancerBySpringCGLIB$$aa50aa7b.scheduler() [类/:?]

石英特性

# Configure …
Run Code Online (Sandbox Code Playgroud)

java datasource quartz-scheduler spring-boot

5
推荐指数
1
解决办法
4353
查看次数

Quartz 集群 - @DisallowConcurrentExecution 避免跨实例并行运行

我有 springBoot 应用程序在多个实例中运行 Quarts (2.3.0),集群模式为 true 。

我已经配置了作业并在每次运行之间提供了 2 秒的延迟。

@Configuration
public class SchedulerConfig {


  @Bean
  public JobDetail jobDetail() {
    return JobBuilder.newJob()
            .ofType(BatchTriggerJob.class)
            .storeDurably()
            .withIdentity("SCHEDULER")
            .withDescription("event")
            .build();
  }

  @Bean
  public Trigger trigger() {
    return TriggerBuilder
            .newTrigger()
            .forJob(jobDetail())
            .withIdentity("BATCH")
            .withDescription("SCHEDULER")
            .withSchedule(SimpleScheduleBuilder.simpleSchedule().repeatForever().withIntervalInSeconds(2)
                    .withMisfireHandlingInstructionIgnoreMisfires())
            .build();
  }

}
Run Code Online (Sandbox Code Playgroud)

我已启用 DisallowConcurrentExecution

@DisallowConcurrentExecution
public class BatchTriggerJob extends QuartzJobBean {

  @Autowired
  private SchedulerService schedulerService;

  @Override
  protected void executeInternal(JobExecutionContext context) {
    SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
    schedulerService.processBatch(); //business logic and may take more than 2 sec
  }

}
Run Code Online (Sandbox Code Playgroud)

应用程序.yml

quartz:
    job-store-type: …
Run Code Online (Sandbox Code Playgroud)

java quartz-scheduler spring-scheduled spring-boot

5
推荐指数
1
解决办法
2682
查看次数

为什么我的 Quartz 触发器在重新启动 Spring boot 应用程序时没有更新更改的 Cron 表达式?

我在 Spring Boot 应用程序中创建了一个 Cron 计划触发器,如下所示,它被完美地触发。问题是,当我更改下面代码中的 Cron 计划表达式并重新启动 Spring Boot 应用程序时,Cron 计划触发器没有更新,并且仍然触发旧的 Cron 计划表达式值。

在检查数据库表时,我发现表 qrtz_cron_triggers 中的记录没有更新。

qrtz_cron_triggers表中的记录是

“quartzScheduler”“Qrtz_NEReportProcessor_Job_Trigger”“默认”“0 30 22?* *”“亚洲/加尔各答”

如何确保在重新启动我的 Spring Boot 应用程序时, cron 计划表达式值得到更新?我的代码如下。

    @Bean(name = "nRJobDetail")
    public JobDetail nRJobDetail() {
        return newJob().ofType(NEReportJob.class).storeDurably().withIdentity(JobKey.jobKey("Qrtz_NEReportProcessor_Job_Detail")).withDescription("Invoke NEReportProcessor Job service...").build();
    }

    @Bean
    public Trigger nRTrigger(@Qualifier("nRJobDetail") JobDetail job) {
        return newTrigger().forJob(job).withIdentity(TriggerKey.triggerKey("Qrtz_NEReportProcessor_Job_Trigger")).withDescription("NEReportProcessor trigger")
                .withSchedule(CronScheduleBuilder.cronSchedule("0 00 23 ? * *")
                )
                .build();
    }
Run Code Online (Sandbox Code Playgroud)

java cron quartz-scheduler spring-boot

5
推荐指数
1
解决办法
4392
查看次数

Spring Boot Quartz - 显示 SQL 语句

我将 Quartz 与 Spring Boot 和 postgres 数据库一起使用作为 Quartz 内容的持久存储。我想在控制台中查看 sql 日志,quartz 正在后台执行。我尝试了许多配置属性来启用它,但没有一个起作用。有人可以告诉我如何启用它吗?到目前为止我使用了以下道具:

spring:
  quartz:
    job-store-type: jdbc
    jdbc:
      initialize-schema: NEVER
    properties:
      org:
        quartz:
          jobStore:
            driverDelegateClass: org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
  jpa:
    show-sql: true
    properties:
      hibernate:
        show_sql: true
        use_sql_comments: true
        format_sql: true

logging:
  level:
    org:
      quartz: DEBUG
      hibernate:
        SQL: DEBUG
      postgres: DEBUG
      springframework:
        jdbc:
          core:
            JdbcTemplate: DEBUG
            StatementCreatorUtils: TRACE
Run Code Online (Sandbox Code Playgroud)

java spring quartz-scheduler spring-boot quartz

5
推荐指数
0
解决办法
602
查看次数

Quartz with MongoDB - 有维护的替代方案吗?

我们正式支持 Quartz 和 MongoDB 吗?我看到有一个库https://github.com/michaelklishin/quartz-mongodb。但它被提及是因为它不再被维护。在这个阶段,我们的应用程序正在使用 MongoDB,仅适用于 Quartz,不想在我们的项目中添加另一个数据库(MySQL)。请建议是否建议使用两个数据库或者 Quartz 是否支持 MongoDB。

我知道这是征求建议/意见。任何投入都会对我们有很大帮助。

先感谢您!

java scheduler quartz-scheduler mongodb spring-boot

5
推荐指数
0
解决办法
1603
查看次数

如何在独立模式下启动Quartz?

根据其功能列表 "Quartz可以作为独立程序运行(在自己的Java虚拟机中),通过RMI使用".

但是,我找不到任何文档如何在独立模式下启动它.

"java -jar quartz.jar"没有做任何事情(甚至在mainfest中都没有指定Main-Class).

分发中的所有示例都使用Quartz作为嵌入式库.

那么这是如何工作的呢?

java quartz-scheduler

4
推荐指数
1
解决办法
1915
查看次数

Java EE 5的Cron语法?

Java EE中的计时器任务不是很舒服.是否有任何util,用cron语法配置定时器,如"0 20 20**"?

我想知道,如果这是一个使用Quartzinside(集群)Java EE应用程序的好方法.根据http://www.prozesse-und-systeme.de/serverClustering.html(德语页面),Quartz和Java EE集群存在限制:

  • JDBC必须用作Quartz的作业存储
  • 只允许与集群关联的Quartz实例使用此JDBC作业存储
  • 必须将所有群集节点同步到分秒节点
  • 所有群集节点必须使用相同的quartz.properties文件

我更喜欢一种更简单的方法来配置计时器服务,而不是Java EE管理的调度程序.

cron scheduling timer quartz-scheduler java-ee-5

4
推荐指数
1
解决办法
2995
查看次数

Cron表达式的时间范围

我正在使用Quartz.Net在我的应用程序中安排我的工作.我只是想知道是否可以构建以下场景的CRON表达式:

每天在凌晨2:15到5:20之间

cron quartz-scheduler

4
推荐指数
2
解决办法
1万
查看次数

受Quartz DisallowConcurrentExecution影响的工作会发生什么

由于禁止注释而导致作业未运行时会发生什么.

在当前运行的实例死后,它是否排队等待运行?它的重复"运行"是否被丢弃,永远不会被再次听到?

我已经尝试过在代码中测试,但是我对语言和库的经验不足导致了一些困难.

java concurrency quartz-scheduler

4
推荐指数
1
解决办法
1913
查看次数