【问题标题】:Quartz clustering in camel spring DSL骆驼弹簧 DSL 中的石英聚类
【发布时间】:2014-11-20 04:48:27
【问题描述】:

我正在尝试在两台不同机器的故障转移场景中实现“请求恢复”,同时它们的时钟也同步。

我的配置如下:

第 1 步:camel-context.xml

我在 camel-context.xml 文件中定义了以下路由。

<route id="quartz" trace="true">
  <from uri="quartz2://cluster/quartz?cron=0+0/2+++*+?&durableJob=true&stateful=true&recoverableJob=true">
<route>

第 2 步:quartz.properties:

我已启用

org.quartz.jobStore.isClustered = true
org.quartz.scheduler.instanceId = AUTO
org.quartz.scheduler.instanceName =ClusteredScheduler

目前我在本地的两个不同实例中运行相同的骆驼应用程序,并且集群工作正常。但是当我尝试测试“请求恢复”时,我遇到了异常。

例外:

[QuartzScheduler_ClusteredScheduler-camelContext-16308243724_ClusterManager] INFO org.quartz.impl.jdbcjobstore.JobStoreTX - ClusterManager: detected 1 failed or restarted instances.
[QuartzScheduler_ClusteredScheduler-camelContext-16308243724_ClusterManager] INFO org.quartz.impl.jdbcjobstore.JobStoreTX - ClusterManager: Scanning for instance "6308270818"'s failed in-progress jobs.
[QuartzScheduler_ClusteredScheduler-camelContext-16308243724_ClusterManager] INFO org.quartz.impl.jdbcjobstore.JobStoreTX - ClusterManager: ......Scheduled 1 recoverable job(s) for recovery.
[ClusteredScheduler-camelContext_Worker-1] WARN org.apache.camel.component.quartz2.CamelJob - Cannot find existing QuartzEndpoint with uri: quartz2://cluster/quartz?cron=0+0%2F2+*+*+*+%3F&durableJob=true&recoverableJob=true&stateful=true. Creating new endpoint instance.
[ClusteredScheduler-camelContext_Worker-1] ERROR org.apache.camel.component.quartz2.CamelJob - Failed to execute CamelJob.
**org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: quartz2://cluster/quartz?cron=0+0%2F2+*+*+*+%3F&durableJob=true&recoverableJob=true&stateful=true due to: Trigger key cluster.quartz is already in used by Endpoint[quartz2://cluster/quartz?cron=0+0%2F2+*+*+*+%3F&durableJob=true&recoverableJob=true&stateful=true]**
      at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:545)
      at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:558)
      at org.apache.camel.component.quartz2.CamelJob.lookupQuartzEndpoint(CamelJob.java:123)
      at org.apache.camel.component.quartz2.CamelJob.execute(CamelJob.java:49)
      at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
      at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: java.lang.IllegalArgumentException: Trigger key cluster.quartz is already in used by Endpoint[quartz2://cluster/quartz?cron=0+0%2F2+*+*+*+%3F&durableJob=true&recoverableJob=true&stateful=true]
      at org.apache.camel.component.quartz2.QuartzEndpoint.ensureNoDupTriggerKey(QuartzEndpoint.java:272)
      at org.apache.camel.component.quartz2.QuartzEndpoint.addJobInScheduler(QuartzEndpoint.java:254)
      at org.apache.camel.component.quartz2.QuartzEndpoint.doStart(QuartzEndpoint.java:202)
      at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
      at org.apache.camel.impl.DefaultCamelContext.startService(DefaultCamelContext.java:2158)
      at org.apache.camel.impl.DefaultCamelContext.doAddService(DefaultCamelContext.java:1016)
      at org.apache.camel.impl.DefaultCamelContext.addService(DefaultCamelContext.java:977)
      at org.apache.camel.impl.DefaultCamelContext.addService(DefaultCamelContext.java:973)
      at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:541)
      ... 5 more

在关闭当前正在执行作业的实例 1 后,实例 2 正在尝试立即恢复作业,但未能执行作业。它在下一个间隔选择相同的作业(这很好)。

我的要求是活动节点立即恢复失败的作业

提前致谢。

【问题讨论】:

    标签: apache-camel quartz-scheduler


    【解决方案1】:

    如果recoverableJob 为真,我认为我们可以避免检查ensureNoDupTriggerKey。我刚刚为它创建了a JIRA CAMEL-8076

    【讨论】:

    • 非常感谢威廉。我什么时候可以获得包含这些更改的最新 jar?
    • 我今天已经将补丁提交到 Apache Camel git 存储库中,您应该可以使用 camel 2.14.1-SNAPSHOT 对其进行测试。
    • 嗨,Willem,我已经用上面的 jar 进行了测试,异常已解决,但我的 bean 处理器没有从 qaurtz 端点调用。我已在以下链接中发布了有关我的问题的详细信息camel.465427.n5.nabble.com/…
    • 您好 Willem,我发现了问题并在 camelJob.java 中进行了临时修复,请检查并执行必要的操作。
      camel.465427.n5.nabble.com/…
    • 补丁已合并到Apache camel仓库中,请查看最新快照进行验证。
    猜你喜欢
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    • 1970-01-01
    相关资源
    最近更新 更多