首页 > 其他 > 详细

9.quartz的集群以及分布式

时间:2021-02-21 23:58:39      阅读:46      评论:0      收藏:0      [点我收藏+]

集群和分布式的处理方式都是一样的,就是要告诉quartz每个服务都有不同的标识,这样我们的任务会负载均衡到每个服务上去执行。

我们的需求是这样:

一个程序集群部署到两个服务上,两个服务共用一个quartz库,但是我们的一个任务只希望在一个服务上运行,有多个任务的话,会负载均衡到每个服务去执行。

集群1:

server:
  port: 8080

spring:
  quartz:
    properties:
      org.quartz.threadPool.threadCount: 4
      org.quartz.scheduler.instanceName: Orderservice
      org.quartz.scheduler.instanceId: Order_1
      org.quartz.jobStore.isClustered: true

集群2:

server:
  port: 8081

spring:
  quartz:
    properties:
      org.quartz.scheduler.instanceName: Orderservice
      org.quartz.scheduler.instanceId: Order_2
      org.quartz.jobStore.isClustered: true

 

Orderservice表示多个集群都是一个quartz服务名
Order_1  Order_2代表多个实例名
org.quartz.jobStore.isClustered: true这个一定要配置成true

在分布式环境下:
org.quartz.scheduler.instanceName  
org.quartz.scheduler.instanceId都不一样


---------------注意点---------------
spring.quartz.jdbc.initialize-schema: xxx 
集群部署的话,这个参数要是always的话是不行的,因为每个服务重启都要清空数据再插入,所以第一台服务用always 后面的用Nerver 这样比较麻烦,再看看有么有好的办法

我们在spring环境下结合quartz有3种方式,前两种方式是启动服务的时候持久化到数据库,那么集群模式下,每个都去持久化会导致问题,所以当时推荐用第3种方式也是这个原因

 

9.quartz的集群以及分布式

原文:https://www.cnblogs.com/johnzhao/p/14426005.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!