整个集群中的Quartz调度器待机模式

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

我在集群模式下使用 Quartz Scheduler。出于调试目的,我想将所有服务器实例置于待机模式。

假设我们有三个服务器实例:

  • 节点1
  • 节点2
  • 节点3

每个节点上运行一个单独的调度程序。如果我调用“scheduler.standby()”,它只会将一个调度程序置于待机模式。如何让所有调度器同时进入待机模式?这可以从单个节点完成吗?

java cluster-computing quartz-scheduler quartz
1个回答
0
投票

您可以通过在公共数据库表中存储和跟踪所有节点的状态来做到这一点。 要做到这一点:

  1. 创建一个名为
    server_node_state
    的表,其中包含列 node_id 、 Scheduler_status
  2. 在表中插入默认值作为

1,N 2、N 3、N

  1. 一旦到达节点
    scheduler.standby()
    ,就调用更新表中的
    scheduler_status
    列,并将该特定节点 ID 的标志值设置为
    Y
  2. 对于其他节点,持续检查
    all node ids
    列 Scheduler_status 的值,如果任何节点 id Scheduler_status 为 Y,则为它们调用
    scheduler.standby()
  3. 当您再次将调度程序从待机模式中移除时,请使用
    N
    更新该列。

注意: 对于将来添加的任何节点,您只需在表中插入条目并遵循相同的逻辑即可。

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