【问题标题】:How to avoid running duplicate tasks in a High Avaliability Clustered JBoss EAP如何避免在高可用性集群 JBoss EAP 中运行重复任务
【发布时间】:2015-05-12 09:41:01
【问题描述】:

我正在开发一个需要一些后台作业的应用程序,例如发送有关待处理警报的电子邮件。在独立配置中,作业已配置并与 Spring 调度程序和计划任务一起正常工作。 但我不知道如何使它们在具有高可用性 JBoss 环境的集群上同步工作。主要问题是避免不同节点上的作业同时运行。

我读过这篇关于 Quartz 的文章:

http://quartz-scheduler.org/documentation/quartz-2.x/configuration/ConfigJDBCJobStoreClustering

但不建议在高可用性场景中使用:

切勿在单独的机器上运行集群,除非它们的时钟是 使用运行的某种形式的时间同步服务(守护进程)进行同步 非常有规律(时钟必须在一秒钟之内)。看 http://www.boulder.nist.gov/timefreq/service/its.htm 如果你是 不熟悉如何做到这一点。

现在我已经用自制的阻塞系统 (Why my pessimistic Locking in JPA with Oracle is not working) 解决了同步问题。但我想知道 JBoss 是否为这个普遍存在的问题提供了一些解决方案。

【问题讨论】:

  • 我想标题可能是“如何避免在使用 Spring 计划任务的集群 JBoss EAP 中运行重复任务”
  • 好的,我会编辑我的问题。

标签: java spring jboss cron


【解决方案1】:

您可以尝试 HA Singleton,它是一种配置为仅在集群中的一个节点上运行的 EJB Singleton。然后,该单例可以使用 EJB 计时器服务来安排您的作业。参见关于 HA 单例的文档:https://access.redhat.com/documentation/en-US/JBoss_Enterprise_Application_Platform/6/html/Development_Guide/Implement_an_HA_Singleton.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    • 2016-05-21
    • 1970-01-01
    • 1970-01-01
    • 2016-01-20
    相关资源
    最近更新 更多