Apache camel 骆驼泉DSL中的石英团簇

Apache camel 骆驼泉DSL中的石英团簇,apache-camel,quartz-scheduler,Apache Camel,Quartz Scheduler,我试图在两台不同的机器上实现故障转移场景中的请求恢复,它们的时钟也同步 我的配置如下: 步骤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=

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

我的配置如下:

步骤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>
目前,我正在本地的两个不同实例中运行同一个camel应用程序,集群工作正常。但当我尝试测试“请求恢复”时,我得到了以下异常

例外情况:

[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
关闭当前正在执行作业的instance1后,实例2正试图立即恢复作业,但无法执行作业。它正在下一个间隔内拾取相同的作业(这很好)

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


提前感谢。

如果可恢复作业为真,我认为我们可以避免检查EnsureRenoDupTriggerKey。我只是为它创作的。

非常感谢威廉。我什么时候能得到包含这些更改的最新jar?我今天已经将补丁提交到Apache Camel git存储库中,您应该能够使用Camel 2.14.1-SNAPSHOT对其进行测试。嗨,Willem,我已经用上面的jar进行了测试,异常得到了解决,但我的bean处理器没有从qaurtz端点调用。我已经在下面的链接中发布了有关我的问题的详细信息
你好,Willem,我已经在camelJob.java中找到了问题并进行了临时修复。请检查并执行所需操作。
补丁已合并到Apache camel存储库中,请查看最新快照以进行验证。
[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