spring-data-jpa 如何在quartz排程中设定dataSource,[错误] org.quartz.SchedulerException:无法初始化数据源:我的DS

rqcrx0a6  于 2022-11-10  发布在  Spring
关注(0)|答案(4)|浏览(222)

这是我的配置文件quartz.properties

org.quartz.scheduler.instanceName= LivingOrdering
org.quartz.scheduler.instanceId=99199
org.quartz.scheduler.rmi.export=false
org.quartz.scheduler.rmi.proxy=false
org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount=3
org.quartz.context.key.QuartzTopic=QuartzPorperties
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.tablePrefix=qrtz_
org.quartz.jobStore.dataSource=quartzDataSource
org.quartz.dataSource.quartzDataSource.driver=org.postgresql.Driver
org.quartz.dataSource.quartzDataSource.URL=jdbc:postgresql://localhost:5432/quartz
org.quartz.dataSource.quartzDataSource.user=admin
org.quartz.dataSource.quartzDataSource.password=admin
org.quartz.dataSource.quartzDataSource.maxConnections=300

我在以下行收到错误-:
第一个

falq053o

falq053o1#

SpringBoot有Quartz自动配置功能,你不需要通过www.example.com来配置Quartzquartz.properties,因为它对Spring一无所知,所以你不能只在那里输入一个数据源名称。阅读文档。
开始使用Quartz所需要的只是在pom.xml中包含启动程序:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-quartz</artifactId>
</dependency>

配置标准Spring Data 源(application.properties):

spring.datasource.url = jdbc:postgresql://localhost:5432/quartz
spring.datasource.username = admin
spring.datasource.password = admin

然后添加(在www.example.com中application.properties):

spring.quartz.job-store-type=jdbc

# Add the below line to have Spring Boot auto create the Quartz tables

spring.quartz.jdbc.initialize-schema=always

如果您想将其他属性传递给Quartz,您可以在属性名称前加上spring.quartz.properties,如下所示:

spring.quartz.properties.org.quartz.scheduler.instanceName=LivingOrdering
ssm49v7z

ssm49v7z2#

这里需要注意的是,在quartz.properties文件中,属性名称以org.quartz...开头;对于较新版本的quartz(如果我没猜错的话,在2.5.6之后),它们以spring.quartz.properties.org.quartz...开头。
当我将SpringBoot版本从2.1.2更新到2.6.3(包括石英库)时,刚刚遇到了这个问题,错误与此帖子中的问题相同。

f5emj3cl

f5emj3cl3#

从www.example.com文件中删除spring.datasource.*application.properties,然后添加spring.datasource.name= quartzDataSource

  • 您可能还需要配置您的org.quartz.dataSource.quartzDataSource.provider(hikaricp或c3 po-默认)
p8ekf7hl

p8ekf7hl4#

我知道这个问题很老了,
但由于我最终在这里寻找一个解决方案,而且还不清楚该怎么做,我将为其他仍在寻找的人提供我的解决方案。
如果您希望为您的应用程序和quartz提供一个数据源,则可以使用以下配置。
例如,我用它来测试。

spring:
  datasource:
    url: jdbc:h2:mem:db;DB_CLOSE_DELAY=-1
    driverClassName: org.h2.Driver
    username: sa
    password: sa
  quartz:
    job-store-type: jdbc
    jdbc:
      initialize-schema: never
    properties:
      org:
        quartz:
          jobStore:
            class: org.springframework.scheduling.quartz.LocalDataSourceJobStore
            driverDelegateClass: org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
            tablePrefix: TB_PR_QRTZ_

但是如果你需要2个数据源,你必须在spring.quartz.properties. org.quartz.dataSource中指定一个自定义的数据源,这是我对应用程序的配置

spring:
  datasource:
    byq:
      url: jdbc:oracle:thin:@//app-db/schema-name
      driverClassName: oracle.jdbc.OracleDriver
      username: ZZZ
      password: XXX
  quartz:
    job-store-type: jdbc
    wait-for-jobs-to-complete-on-shutdown: true
    jdbc:
      initialize-schema: never
    properties:
      org:
        quartz:
          dataSource:
            quartzDataSource:
              URL: jdbc:postgresql://scheduler-db/scheduler
              driver: org.postgresql.Driver
              user: ZZZ
              password: XXX
          jobStore:
            dataSource: quartzDataSource
            class: org.quartz.impl.jdbcjobstore.JobStoreTX
            driverDelegateClass: org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
            tablePrefix: TB_QRTZ_

相关问题