Java Apache Camel Quartz拒绝执行异常

Java Apache Camel Quartz拒绝执行异常,java,spring-boot,apache-camel,Java,Spring Boot,Apache Camel,在特定时间(cron作业)运行quartz驼峰路由时,会生成约1MB的文件并将其上载到FTP 它在错误下抛出,并且是间歇的(有时我在过程结束前不会得到错误)。 在我的本地网站上复制这个问题几乎是不可能的。但是,如果我尝试在正在进行的cron作业中更新camel路由,它将抛出完全相同的错误 我如何解决这个问题 错误: [ERROR] org.apache.camel.component.quartz2.CamelJob - Error processing exchange. Exchange[I

在特定时间(
cron作业
)运行
quartz
驼峰路由时,会生成约1MB的文件并将其上载到FTP

它在错误下抛出,并且是间歇的(有时我在过程结束前不会得到错误)。 在我的本地网站上复制这个问题几乎是不可能的。但是,如果我尝试在正在进行的
cron作业中更新camel路由,它将抛出完全相同的错误

我如何解决这个问题

错误:

[ERROR] org.apache.camel.component.quartz2.CamelJob - Error processing exchange. Exchange[ID-sw-prod-esb-01-40406-1534255789208-0-272116]. Caused by: [org.quartz.JobExecutionException - java.util.concurrent.RejectedExecutionException]

[INFO ] 2018-07-06T10:20:11,772 [test-camel-quartz-scheduler-instance-camel-1_Worker-9] [{cId=a6b1a4d6-7df3-40a3-8a70-b57aa}] org.quartz.core.JobRunShell - Job DEFAULT.quartz-endpoint528 threw a JobExecutionException: 
org.quartz.JobExecutionException: java.util.concurrent.RejectedExecutionException
    at org.apache.camel.component.quartz.QuartzEndpoint.onJobExecute(QuartzEndpoint.java:147) ~[camel-quartz-2.19.0.jar:2.19.0]
    at org.apache.camel.component.quartz.CamelJob.execute(CamelJob.java:63) ~[camel-quartz-2.19.0.jar:2.19.0]
    at org.quartz.core.JobRunShell.run(JobRunShell.java:223) [quartz-1.8.6.jar:?]
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549) [quartz-1.8.6.jar:?]
Caused by: java.util.concurrent.RejectedExecutionException
    at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:428) ~[camel-core-2.19.0.jar:2.19.0]
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198) ~[camel-core-2.19.0.jar:2.19.0]
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:120) ~[camel-core-2.19.0.jar:2.19.0]
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:83) ~[camel-core-2.19.0.jar:2.19.0]
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198) ~[camel-core-2.19.0.jar:2.19.0]
    at org.apache.camel.processor.loadbalancer.QueueLoadBalancer.process(QueueLoadBalancer.java:44) ~[camel-core-2.19.0.jar:2.19.0]
    at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109) ~[camel-core-2.19.0.jar:2.19.0]
    at org.apache.camel.processor.loadbalancer.LoadBalancerSupport.process(LoadBalancerSupport.java:97) ~[camel-core-2.19.0.jar:2.19.0]
    at org.apache.camel.component.quartz.QuartzEndpoint.onJobExecute(QuartzEndpoint.java:143) ~[camel-quartz-2.19.0.jar:2.19.0]
    ... 3 more
<?xml version="1.0" encoding="UTF-8"?>
<routes xmlns="http://camel.apache.org/schema/spring">
   <route>
      <from uri="quartz://Test/DataUpload?cron=0 50 15 ? * * *&amp;trigger.timeZone=Asia/Calcutta" />
      <log message="Starting here" />
      <to uri="bean:SomeProcessor" />
      <log message="after processor" />
      <split>
         <simple>${body}</simple>
         <to uri="bean:TransformProcessor" />
      </split>
      <log message="ending here" />
   </route>
</routes>
路由定义XML:

[ERROR] org.apache.camel.component.quartz2.CamelJob - Error processing exchange. Exchange[ID-sw-prod-esb-01-40406-1534255789208-0-272116]. Caused by: [org.quartz.JobExecutionException - java.util.concurrent.RejectedExecutionException]

[INFO ] 2018-07-06T10:20:11,772 [test-camel-quartz-scheduler-instance-camel-1_Worker-9] [{cId=a6b1a4d6-7df3-40a3-8a70-b57aa}] org.quartz.core.JobRunShell - Job DEFAULT.quartz-endpoint528 threw a JobExecutionException: 
org.quartz.JobExecutionException: java.util.concurrent.RejectedExecutionException
    at org.apache.camel.component.quartz.QuartzEndpoint.onJobExecute(QuartzEndpoint.java:147) ~[camel-quartz-2.19.0.jar:2.19.0]
    at org.apache.camel.component.quartz.CamelJob.execute(CamelJob.java:63) ~[camel-quartz-2.19.0.jar:2.19.0]
    at org.quartz.core.JobRunShell.run(JobRunShell.java:223) [quartz-1.8.6.jar:?]
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549) [quartz-1.8.6.jar:?]
Caused by: java.util.concurrent.RejectedExecutionException
    at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:428) ~[camel-core-2.19.0.jar:2.19.0]
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198) ~[camel-core-2.19.0.jar:2.19.0]
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:120) ~[camel-core-2.19.0.jar:2.19.0]
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:83) ~[camel-core-2.19.0.jar:2.19.0]
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198) ~[camel-core-2.19.0.jar:2.19.0]
    at org.apache.camel.processor.loadbalancer.QueueLoadBalancer.process(QueueLoadBalancer.java:44) ~[camel-core-2.19.0.jar:2.19.0]
    at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109) ~[camel-core-2.19.0.jar:2.19.0]
    at org.apache.camel.processor.loadbalancer.LoadBalancerSupport.process(LoadBalancerSupport.java:97) ~[camel-core-2.19.0.jar:2.19.0]
    at org.apache.camel.component.quartz.QuartzEndpoint.onJobExecute(QuartzEndpoint.java:143) ~[camel-quartz-2.19.0.jar:2.19.0]
    ... 3 more
<?xml version="1.0" encoding="UTF-8"?>
<routes xmlns="http://camel.apache.org/schema/spring">
   <route>
      <from uri="quartz://Test/DataUpload?cron=0 50 15 ? * * *&amp;trigger.timeZone=Asia/Calcutta" />
      <log message="Starting here" />
      <to uri="bean:SomeProcessor" />
      <log message="after processor" />
      <split>
         <simple>${body}</simple>
         <to uri="bean:TransformProcessor" />
      </split>
      <log message="ending here" />
   </route>
</routes>

${body}
编辑:

[ERROR] org.apache.camel.component.quartz2.CamelJob - Error processing exchange. Exchange[ID-sw-prod-esb-01-40406-1534255789208-0-272116]. Caused by: [org.quartz.JobExecutionException - java.util.concurrent.RejectedExecutionException]

[INFO ] 2018-07-06T10:20:11,772 [test-camel-quartz-scheduler-instance-camel-1_Worker-9] [{cId=a6b1a4d6-7df3-40a3-8a70-b57aa}] org.quartz.core.JobRunShell - Job DEFAULT.quartz-endpoint528 threw a JobExecutionException: 
org.quartz.JobExecutionException: java.util.concurrent.RejectedExecutionException
    at org.apache.camel.component.quartz.QuartzEndpoint.onJobExecute(QuartzEndpoint.java:147) ~[camel-quartz-2.19.0.jar:2.19.0]
    at org.apache.camel.component.quartz.CamelJob.execute(CamelJob.java:63) ~[camel-quartz-2.19.0.jar:2.19.0]
    at org.quartz.core.JobRunShell.run(JobRunShell.java:223) [quartz-1.8.6.jar:?]
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549) [quartz-1.8.6.jar:?]
Caused by: java.util.concurrent.RejectedExecutionException
    at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:428) ~[camel-core-2.19.0.jar:2.19.0]
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198) ~[camel-core-2.19.0.jar:2.19.0]
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:120) ~[camel-core-2.19.0.jar:2.19.0]
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:83) ~[camel-core-2.19.0.jar:2.19.0]
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198) ~[camel-core-2.19.0.jar:2.19.0]
    at org.apache.camel.processor.loadbalancer.QueueLoadBalancer.process(QueueLoadBalancer.java:44) ~[camel-core-2.19.0.jar:2.19.0]
    at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109) ~[camel-core-2.19.0.jar:2.19.0]
    at org.apache.camel.processor.loadbalancer.LoadBalancerSupport.process(LoadBalancerSupport.java:97) ~[camel-core-2.19.0.jar:2.19.0]
    at org.apache.camel.component.quartz.QuartzEndpoint.onJobExecute(QuartzEndpoint.java:143) ~[camel-quartz-2.19.0.jar:2.19.0]
    ... 3 more
<?xml version="1.0" encoding="UTF-8"?>
<routes xmlns="http://camel.apache.org/schema/spring">
   <route>
      <from uri="quartz://Test/DataUpload?cron=0 50 15 ? * * *&amp;trigger.timeZone=Asia/Calcutta" />
      <log message="Starting here" />
      <to uri="bean:SomeProcessor" />
      <log message="after processor" />
      <split>
         <simple>${body}</simple>
         <to uri="bean:TransformProcessor" />
      </split>
      <log message="ending here" />
   </route>
</routes>
在分析日志时,我可以看到日志“从这里开始”,当它进入SomeProcessor.java时,也不例外,但日志“在处理器之后”不会打印

SomeProcessor.java

Map<String, String> searchAttributes = buildSearchFilterAttr(exchange);
        Set<Order> orderSet = new HashSet<Order>();
        logger.info("fetching {}", searchAttributes);
        try {
            dataSet = cleint.someAPI(....);
            logger.info("total number {} ", dataSet.size());//300
            exchange.getIn().setBody(dataSet);
        } catch (IOException | BadRequestException ex) {
            logger.error("error");
            throw new SomeCustomException(errMsg, ex);
        }
Map searchAttributes=buildsearchfilteratr(交换);
Set orderSet=new HashSet();
info(“获取{}”,searchAttributes);
试一试{
dataSet=cleint.someAPI(…);
logger.info(“总数{}”,dataSet.size());//300
exchange.getIn().setBody(数据集);
}捕获(IOException | BadRequestException ex){
记录器错误(“错误”);
抛出新的SomeCustomException(errMsg,ex);
}

您可以发布您的路线定义吗?“没有它很难回答这个问题。”贝德拉补充了路线定义。我看不出路线有任何问题。只是猜测一下,您是在代码中自己停止此路由,还是正在关闭上下文?如果仍在进行重新交付,则在某些关机情况下会出现此异常。@Bedla不,我没有停止/关机任何东西,我已用java代码更新了问题。