Spring下Quartz Scheduler设置DataSource

问题描述 投票:0回答:1

我有一个使用 Spring boot 和 Quartz Job Scheduler 的项目。 我想将一个数据库拆分为两种模式:一个用于项目数据,另一个用于石英数据。我怎样才能做到这一点?

我现在的 应用程序.属性

spring.datasource.url=jdbc:postgresql://localhost:5432/main-service
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.hikari.schema=main-service
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.flyway.default-schema=main-service
spring.flyway.create-schemas=true
spring.datasource.username=${USER}
spring.datasource.password=${PASSWORD}

quartz 的示例架构名称:main-service-quartz

我还听说过 @QuartzDataSource 注解用于为quartz设置数据源,但不明白如何制作它。

java spring quartz-scheduler
1个回答
0
投票

为此,您不需要在 Spring 中预先构建任何内容。如果它确实存在,请使用它,但我不知道。 我会做什么,而且我之前已经做过,所以我知道它是有效的,我将在我的

quartz
中配置第二个
application.properties
数据源,并使用该配置创建一个
QuartzDatasource
bean 并根据需要使用该 bean。

quqrtz.datasource.url=jdbc:postgresql://localhost:5432/quartz-service
quqrtz.datasource.driver-class-name=org.postgresql.Driver
quqrtz.datasource.hikari.schema=quartz-service
quqrtz.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
quqrtz.flyway.default-schema=quartz-service
quqrtz.flyway.create-schemas=true
quqrtz.datasource.username=${QUARTZ_USER}
quqrtz.datasource.password=${QUARTZ_PASSWORD}

然后创建一个指向

@Configuration
前缀的
quartz
类,加载此配置后,您将能够创建
quartzDatasource
bean,如果您使用 JPA 第二个
entity manager

虽然看起来很简单,但我不会这样做,特别是如果涉及到 JPA。这是一个很大的挑战。我不知道如何使 Flyway 针对两个数据源运行。有一个

@FlywayDatasorce
注释,我在给定的应用程序中从未多次使用过它。

对我来说,最好的方法是在数据库级别向应用程序用户授予对

relations
架构中的
quartz
的读写访问权限,并使用单个数据源来访问这两者。

或者如果主服务的功能和石英服务的功能之间存在逻辑分离,那么可能会更清楚,有两个独立的微服务,每个服务都做自己的工作。如果你采取简单的做法,以后就可以避免很多令人头痛的事情。

© www.soinside.com 2019 - 2024. All rights reserved.