java - Apache Camel 在使用石英调度程序调度 ftp 端点时抛出 java.lang.NullPointerException
问题描述
我正在尝试camel-quartz2
用于在 Spring Boot 应用程序中调度 FTP 端点。但是,在应用程序开始时,它会抛出空指针异常。
下面是 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
任何帮助将不胜感激。
解决方案
我看到在您的端点字符串中有 : "scheduler=quartz2"
,这应该是"&scheduler=quartz2"
。您是否还可以检查是否包含了camel-quartz2
orcamel-quartz2-starter
依赖项?
推荐阅读
- java - 如何在 UIMA RUTA 中设置变量
- javascript - Laravel:Vue.js 页面未在生产环境中显示
- python - 在循环中将所有 numpy 数组写入二进制文件
- php - 在 WooCommerce 商店页面上显示 ACF
- powershell - Windows 窗体中的 PowerShell 变量 IF 语句
- python - 如何在气流中将列表作为变量传递给 SQL
- python - 从具有不同级别的一个处理程序创建两个单独的日志文件
- if-statement - 当其他变量占据最高值时,如何根据国家/地区的条件创建一个变量?
- javascript - 我想知道如何让函数返回以下内容
- r - 闪亮的应用程序初始加载在每次重新加载时定期花费更长的时间(性能问题)