Apache Camel молча терпит неудачу, если отсутствуют какие-либо зависимости - PullRequest
0 голосов
/ 02 апреля 2019

Я использую DSL для построения асинхронного процессора очередей.

Код маршрута выглядит примерно так:

from("seda://exportListQueue")
                .setProperty("originalRequest", simple("${body}"))
                .setHeader("CamelRedis.Key", Builder.simple("Something"))
                .setHeader("CamelRedis.Value", Builder.simple("Some Json"))
                .to("spring-redis://the_host:the_port?serializer=#stringSerializer")                .setBody(exchangeProperty("originalRequest").convertTo(MyClass::class.java))
                .process(queueProcessor)
                .to("http4:some_url)

(Это, кстати, kotlin, но на самом делене имеет значения)

Конечно, я изменил имена, потому что не могу раскрыть неуниверсальные части.Моя проблема в том, что когда я пытаюсь запустить приложение, Camel немедленно останавливается.Журналы выглядят примерно так:

[INFO ] [2019-04-01 18:57:46,089] [] [] [o.a.c.l.i.Jdk14Logger->log:87] | Detected @ExceptionHandler methods in exceptionHandlerController
[INFO ] [2019-04-01 18:57:46,995] [] [] [o.a.c.l.i.Jdk14Logger->log:87] | Registering beans for JMX exposure on startup
[INFO ] [2019-04-01 18:57:46,998] [] [] [o.a.c.l.i.Jdk14Logger->log:87] | Bean with name 'dataSource' has been autodetected for JMX exposure
[INFO ] [2019-04-01 18:57:47,010] [] [] [o.a.c.l.i.Jdk14Logger->log:87] | Located MBean 'dataSource': registering with JMX server as MBean [com.zaxxer.hikari:name=dataSource,type=HikariDataSource]
[INFO ] [2019-04-01 18:57:47,079] [] [] [o.a.c.s.b.RoutesCollector->loadXmlRoutes:279] | Loading additional Camel XML routes from: classpath:camel/*.xml
[INFO ] [2019-04-01 18:57:47,080] [] [] [o.a.c.s.b.RoutesCollector->loadXmlRests:296] | Loading additional Camel XML rests from: classpath:camel-rest/*.xml
[INFO ] [2019-04-01 18:57:47,084] [] [] [o.a.c.i.DefaultCamelContext->start:3138] | Apache Camel 2.23.1 (CamelContext: RED) is starting
[INFO ] [2019-04-01 18:57:47,085] [] [] [o.a.c.i.DefaultCamelContext->doStartCamel:3312] | MDC logging is enabled on CamelContext: RED
[INFO ] [2019-04-01 18:57:47,085] [] [] [o.a.c.m.ManagedManagementStrategy->doStart:205] | JMX is enabled
[INFO ] [2019-04-01 18:57:47,249] [] [] [o.a.c.i.DefaultCamelContext->doStop:3496] | Apache Camel 2.23.1 (CamelContext: RED) is shutting down
[INFO ] [2019-04-01 18:57:47,256] [] [] [o.a.c.i.DefaultCamelContext->doStop:3596] | Apache Camel 2.23.1 (CamelContext: RED) uptime 0.171 seconds
[INFO ] [2019-04-01 18:57:47,256] [] [] [o.a.c.i.DefaultCamelContext->doStop:3597] | Apache Camel 2.23.1 (CamelContext: RED) is shutdown in 0.007 seconds

При ведении журнала с уровнем трассировки мы получаем корень проблемы:

[TRACE] [2019-04-01 19:01:06,419] [] [] [o.a.c.u.EventHelper->doNotifyEvent:1091] | Notifier: org.apache.camel.spring.boot.RoutesCollector$2@7dd847a2 is not enabled for the event: Failed to start Camel: RED due to Failed to create route route1 at: >>> To[spring-redis://the_port:the_host?serializer=#stringSerializer] <<< in route: Route(route1)[[From[seda://exporQueue]] -> [SetProperty... because of Failed to resolve endpoint: spring-redis://the_host:the_port?serializer=%23stringSerializer due to: No component found with scheme: spring-redis

В конце концов, это была просто отсутствующая зависимость.Но мой вопрос заключается в том, должен ли Кэмел дать мне исключение или хотя бы предупреждение, объясняющее, почему он закрывается более дружественным образом.

Я что-то упускаю или это действительно не красивое поведение верблюда, которое заслуживает билета?

--- EDIT ---

Это зависимости, связанные сзапуск

dependencies {

    // spring web
    compile("org.springframework.boot:spring-boot-starter-web")
    compile("org.springframework.boot:spring-boot-starter-jetty")

    // cache
    compile("org.springframework.boot:spring-boot-starter-cache")

    // spring retry
    compile("org.springframework.retry:spring-retry:1.1.5.RELEASE")

    // monitoring
    compile("org.springframework.boot:spring-boot-starter-actuator")
    compile("org.springframework.boot:spring-boot-starter-logging")

    // camel
    compile('org.apache.camel:camel-spring-boot-starter:2.23.1')
    compile('org.apache.camel:camel-spring-redis:2.23.1')
    compile('org.apache.camel:camel-http4:2.23.1')

    // eaio uuid
    compile("com.eaio.uuid:uuid:3.2")

    // apache
    compile("org.apache.commons:commons-lang3:3.7")
    compile("commons-codec:commons-codec:1.11")
    compile("org.apache.httpcomponents:httpclient:4.5.3")

}
...