Apache Camel使用石英调度程序调度ftp端点时抛出java.lang.NullPointerException

时间:2019-01-27 10:19:09

标签: java spring spring-boot apache-camel

我正在尝试使用camel-quartz2在Spring Boot应用程序中调度FTP端点。但是,在应用程序启动时,它会引发Null Pointer Exception。

下面是FTP URI的代码段

private final String NBP_GMI_TRADE_DAILY_FTP_CONNECTION_URI = "ftp://<username>@<hostip>/NBP/GMI/?password=<password>"
        + "&disconnect=true"
        + "&idempotent=true"
        + "&idempotentKey=${file:name}-${file:size}"
        + "&sendEmptyMessageWhenIdle=true"
        + "&filter=#nbpGmiTradeDailyFileFilter"
        + "&passiveMode=true"
        + "&binary=true"
        + "&recursive=true"
        + "scheduler=quartz2"
        + "&scheduler.cron=0+0/2+*+?+*+SUN,SAT+*";

FTP骆驼配置

from(NBP_GMI_TRADE_DAILY_FTP_CONNECTION_URI)
    .routeId("NBP_GMI_TRADE_DAILY_FTP_ROUTE")
    .choice()
    .when(simple("${body} != null")).setHeader(Exchange.FILE_NAME,simple("${file:name.noext}_${date:now:yyyyMMddHHmmssSSS}.${file:ext}")).to("file://{{user.home}}/NBP/data/daily/backup/?fileName=${date:now:yyyyMMdd}/${file:name}").end();

在启动应用程序时,我遇到了异常

        org.apache.camel.spring.boot.CamelSpringBootInitializationException: java.lang.NullPointerException
        at org.apache.camel.spring.boot.RoutesCollector.onApplicationEvent(RoutesCollector.java:225) ~[camel-spring-boot-2.19.3.jar:2.19.3]
        at org.apache.camel.spring.boot.RoutesCollector.onApplicationEvent(RoutesCollector.java:52) ~[camel-spring-boot-2.19.3.jar:2.19.3]
        at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:167) ~[spring-context-4.3.10.RELEASE.jar:4.3.10.RELEASE]
        at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139) ~[spring-context-4.3.10.RELEASE.jar:4.3.10.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:393) ~[spring-context-4.3.10.RELEASE.jar:4.3.10.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:347) ~[spring-context-4.3.10.RELEASE.jar:4.3.10.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:883) ~[spring-context-4.3.10.RELEASE.jar:4.3.10.RELEASE]
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:144) ~[spring-boot-1.5.6.RELEASE.jar:1.5.6.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546) ~[spring-context-4.3.10.RELEASE.jar:4.3.10.RELEASE]
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.5.6.RELEASE.jar:1.5.6.RELEASE]
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693) ~[spring-boot-1.5.6.RELEASE.jar:1.5.6.RELEASE]
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360) ~[spring-boot-1.5.6.RELEASE.jar:1.5.6.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:303) ~[spring-boot-1.5.6.RELEASE.jar:1.5.6.RELEASE]
        at com.fis.derivatives.utility.nbp.Application.main(Application.java:36) [classes/:na]
    Caused by: java.lang.NullPointerException: null
        at org.apache.camel.impl.DefaultScheduledPollConsumerScheduler.startScheduler(DefaultScheduledPollConsumerScheduler.java:145) ~[camel-core-2.19.3.jar:2.19.3]
        at org.apache.camel.impl.ScheduledPollConsumer.startScheduler(ScheduledPollConsumer.java:456) ~[camel-core-2.19.3.jar:2.19.3]
        at org.apache.camel.component.file.remote.FtpConsumer.doStart(FtpConsumer.java:67) ~[camel-ftp-2.19.3.jar:2.19.3]
        at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) ~[camel-core-2.19.3.jar:2.19.3]
        at org.apache.camel.impl.DefaultCamelContext.startService(DefaultCamelContext.java:3514) ~[camel-core-2.19.3.jar:2.19.3]
        at org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRouteConsumers(DefaultCamelContext.java:3831) ~[camel-core-2.19.3.jar:2.19.3]
        at org.apache.camel.impl.DefaultCamelContext.doStartRouteConsumers(DefaultCamelContext.java:3767) ~[camel-core-2.19.3.jar:2.19.3]
        at org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:3687) ~[camel-core-2.19.3.jar:2.19.3]
        at org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(DefaultCamelContext.java:3451) ~[camel-core-2.19.3.jar:2.19.3]
        at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:3305) ~[camel-core-2.19.3.jar:2.19.3]
        at org.apache.camel.impl.DefaultCamelContext.access$000(DefaultCamelContext.java:202) ~[camel-core-2.19.3.jar:2.19.3]
        at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:3089) ~[camel-core-2.19.3.jar:2.19.3]
        at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:3085) ~[camel-core-2.19.3.jar:2.19.3]
        at org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:3108) ~[camel-core-2.19.3.jar:2.19.3]
        at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:3085) ~[camel-core-2.19.3.jar:2.19.3]
        at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) ~[camel-core-2.19.3.jar:2.19.3]
        at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:3022) ~[camel-core-2.19.3.jar:2.19.3]
        at org.apache.camel.spring.boot.RoutesCollector.maybeStart(RoutesCollector.java:242) ~[camel-spring-boot-2.19.3.jar:2.19.3]
        at org.apache.camel.spring.boot.RoutesCollector.onApplicationEvent(RoutesCollector.java:217) ~[camel-spring-boot-2.19.3.jar:2.19.3]
        ... 13 common frames omitted

我分别使用以下版本的spring-boot和apache camel

spring-boot: 1.5.6.RELEASE
apache-camel: 2.19.3

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

我看到在您的端点字符串中,您有:"scheduler=quartz2",应该是"&scheduler=quartz2"。您还可以检查是否包含camel-quartz2camel-quartz2-starter依赖性吗?