有没有办法在 Quartz Scheduler 中拆分读/写查询以使用 mysql 主从复制?

Posted

技术标签:

【中文标题】有没有办法在 Quartz Scheduler 中拆分读/写查询以使用 mysql 主从复制?【英文标题】:Is there a way to split read/write queries in Quartz Scheduler to use mysql master slave replication? 【发布时间】:2015-10-21 13:49:24 【问题描述】:

我在我的应用程序中使用 Quartz 调度程序,并且我还在为我的其他数据库查询使用主从复制。我也想为 Quartz 调度程序使用主从复制,因此我想知道是否有一种方法可以更改石英分别对主/从进行的写入/读取查询?

我尝试更改“quartz.properties”,但所有调用都只发送到主节点

org.quartz.dataSource.quartzDS.driver=com.mysql.jdbc.ReplicationDriver
org.quartz.dataSource.quartzDS.URL=jdbc:mysql:replication://localhost:3306,localhost:3307/quartz?useUnicode=true&characterEncoding=utf8&useTimezone=true&serverTimezone=UTC&useLegacyDatetimeCode=false
org.quartz.dataSource.quartzDS.user=root
org.quartz.dataSource.quartzDS.password=root
org.quartz.dataSource.quartzDS.maxConnections=10
org.quartz.dataSource.quartzDS.validationQuery=select 1

【问题讨论】:

【参考方案1】:

您可以在quartz.properties 中定义多个数据源。

quartzDS 是一个特定的数据源。您可以通过使用您想要的名称(如org.quartz.dataSource.quartzDSTheSecond)标记属性来添加更多具有不同名称的属性。

见:http://www.quartz-scheduler.org/documentation/quartz-1.x/configuration/ConfigDataSources

然后您可以使用DBConnectionManager.getInstance().getConnection("quartzDSTheSecond") 获得connection;

【讨论】:

这是一种创建多个数据源的方法,但石英如何拆分读/写数据库查询。我正在使用石英的 api 来安排作业,这意味着我无法控制在复制中哪个调用转到 master 以及哪个调用转到 slave。我在这里错过了什么吗? 我误解了您的问题,并认为您在执行工作时指的是连接。抱歉,但我不知道如何告诉quartz 在管理其jobstore 时使用不同的来源。也许您想看看 JobStoreCMT (quartz-scheduler.org/documentation/quartz-1.x/configuration/…),它可能提供您需要的功能,但我对此表示怀疑。

以上是关于有没有办法在 Quartz Scheduler 中拆分读/写查询以使用 mysql 主从复制?的主要内容,如果未能解决你的问题,请参考以下文章

Quartz Scheduler 开源框架 学习记录

Quartz

quartz 浅谈 Scheduler

Java + Spring + Quartz-scheduler:在其他工作结束后解雇一个工作

Spring Boot集成Spring Scheduler和Quartz Scheduler

利用spring+quartz-scheduler+MySql实现定时任务动态调整