Help with using application.properties entries with Camel and Spring Boot

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Help with using application.properties entries with Camel and Spring Boot

VNKeaton
Hello-
I'm new to Camel and excited about it's use.  However, I find myself very frustrated with what seems to be the simplest of things.  I have several questions, but will try and keep them in separate posts.

I am using Eclipse, Camel 2.24.0, Spring Boot 2.2.0, Java 1.8, and I can not use any xml.

I would like to dynamically build my URIs based on properties from an application.properties file that is on the classpath, as well as use exchange header parameters.
I thought I could use toD() to create dynamic URIs?  This seems to be blank.  What am I doing wrong?  Also, please note that I tried to print my application.properties value for the key "data.trans.vm", and I get nothing.

My goal is to be able to use the applications.properties file as well as header parameters.  Thanks in advance for your help.


My ~/src/main/resources/applications.properties file:
data.trans.greeting=Hello Viki

@Component
public class DataTransRouteBuilder extends RouteBuilder {
@Override
               public void configure() throws Exception {

from("jetty:http://localhost:8081/foobar").tracing()
                              .log("data mart id is: ${header.dataMartId}")
                              .to("direct:getDataMart");


               from("direct:getDataMart").tracing()
                   .log("at direct:getDataMart")
                   .log("properties: DATA_TRANS_VM is properties:{{data.trans.greeting}}")
                   .setBody().constant(null)
                   .setHeader(Exchange.HTTP_METHOD, simple("GET"))
                   .setHeader("Content-Type", constant("application/json"))
                   .setHeader("Accept", constant("application/json"))
                   .setHeader("Accept-Encoding", constant("identity"))
                   .setHeader("Authorization", constant(BASIC_AUTH))
                   .log("call data mart url for id=${header.dataMartId}")
                   .toD("http://<MY REMOTE REST SERIVE>:<PORT>/${header.dataMartId}/build?bridgeEndpoint=true")
                   .choice()
                                  .when().simple("${header.CamelHttpResponseCode} != 200")
               .log("Failure to call: " + DATA_TRANS_DATAMART_URL)
               .to("direct:ERROR")
         .end()

                   .unmarshal().json(JsonLibrary.Jackson, JobInfo.class)
                   .bean(dataTransJobInfoProcessor, "process")
...
From my console:
...
2019-08-03 23:39:32.195  INFO 7612 --- [           main] o.a.camel.spring.SpringCamelContext      : Apache Camel 2.24.0 (CamelContext: camel-1) started in 0.918 seconds
2019-08-03 23:39:32.254  INFO 7612 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2019-08-03 23:39:32.258  INFO 7612 --- [           main] a.r.l.a.ReckonLineageAdaptersApplication : Started ReckonLineageAdaptersApplication in 16.714 seconds (JVM running for 17.413)
2019-08-03 23:39:41.859  INFO 7612 --- [tp1955991197-25] route1                                   : data mart id is: 12345
2019-08-03 23:39:41.860  INFO 7612 --- [tp1955991197-25] route2                                   : at direct:getDataMart
2019-08-03 23:39:41.860  INFO 7612 --- [tp1955991197-25] route2                                   : properties: DATA_TRANS_VM is properties:{{data.trans.vm}}
2019-08-03 23:39:41.861  INFO 7612 --- [tp1955991197-25] route2                                   : call data mart url for id=12345
2019-08-03 23:39:42.197 ERROR 7612 --- [tp1955991197-25] o.a.camel.processor.DefaultErrorHandler  : Failed delivery for (MessageId: ID-vkeat01116-1564893569848-0-3 on ExchangeId: ID-vkeat01116-1564893569848-0-1). Exhausted after delivery attempt: 1 caught: com.fasterxml.jackson.databind.exc.MismatchedInputException: No content to map due to end-of-input
at [Source: (org.apache.camel.converter.stream.CachedOutputStream$WrappedInputStream); line: 1, column: 0]
...

Message History
---------------------------------------------------------------------------------------------------------------------------------------
RouteId              ProcessorId          Processor                                                                        Elapsed (ms)
[route1            ] [route1            ] [jetty:http://localhost:8081/foobar                                            ] [       338]
[route1            ] [log1              ] [log                                                                           ] [         2]
[route1            ] [to1               ] [direct:getDataMart                                                            ] [         0]
[route2            ] [log2              ] [log                                                                           ] [         0]
[route2            ] [log3              ] [log                                                                           ] [         0]
[route2            ] [setBody1          ] [setBody[{null}]                                                               ] [         0]
[route2            ] [setHeader1        ] [setHeader[CamelHttpMethod]                                                    ] [         1]
[route2            ] [setHeader2        ] [setHeader[Content-Type]                                                       ] [         0]
[route2            ] [setHeader3        ] [setHeader[Accept]                                                             ] [         0]
[route2            ] [setHeader4        ] [setHeader[Accept-Encoding]                                                    ] [         0]
[route2            ] [setHeader5        ] [setHeader[Authorization]                                                      ] [         0]
[route2            ] [log4              ] [log                                                                           ] [         0]
[route2            ] [toD1              ] [                                                                              ] [       309]
[route2            ] [choice1           ] [when[simple{${header.CamelHttpResponseCode} != 200}]choice[]                  ] [         8]
[route2            ] [unmarshal1        ] [unmarshal[org.apache.camel.model.dataformat.JsonDataFormat@f6e1ef6]           ] [        13]

Stacktrace
---------------------------------------------------------------------------------------------------------------------------------------

com.fasterxml.jackson.databind.exc.MismatchedInputException: No content to map due to end-of-input
at [Source: (org.apache.camel.converter.stream.CachedOutputStream$WrappedInputStream); line: 1, column: 0]
               at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59) ~[jackson-databind-2.9.9.jar:2.9.9]
               at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4145) ~[jackson-databind-2.9.9.jar:2.9.9]
               at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4000) ~[jackson-databind-2.9.9.jar:2.9.9]
               at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3070) ~[jackson-databind-2.9.9.jar:2.9.9]
               at org.apache.camel.component.jackson.JacksonDataFormat.unmarshal(JacksonDataFormat.java:194) ~[camel-jackson-2.24.0.jar:2.24.0]
               at org.apache.camel.processor.UnmarshalProcessor.process(UnmarshalProcessor.java:69) ~[camel-core-2.24.0.jar:2.24.0]
               at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548) [camel-core-2.24.0.jar:2.24.0]
               at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) [camel-core-2.24.0.jar:2.24.0]
               at org.apache.camel.processor.Pipeline.process(Pipeline.java:138) [camel-core-2.24.0.jar:2.24.0]
               at org.apache.camel.processor.Pipeline.process(Pipeline.java:101) [camel-core-2.24.0.jar:2.24.0]
               at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) [camel-core-2.24.0.jar:2.24.0]
               at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:76) [camel-core-2.24.0.jar:2.24.0]
               at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:148) [camel-core-2.24.0.jar:2.24.0]
               at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548) [camel-core-2.24.0.jar:2.24.0]
               at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) [camel-core-2.24.0.jar:2.24.0]
               at org.apache.camel.processor.Pipeline.process(Pipeline.java:138) [camel-core-2.24.0.jar:2.24.0]
               at org.apache.camel.processor.Pipeline.process(Pipeline.java:101) [camel-core-2.24.0.jar:2.24.0]
               at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) [camel-core-2.24.0.jar:2.24.0]
               at org.apache.camel.component.jetty.CamelContinuationServlet.doService(CamelContinuationServlet.java:220) [camel-jetty-common-2.24.0.jar:2.24.0]
               at org.apache.camel.http.common.CamelServlet.service(CamelServlet.java:79) [camel-http-common-2.24.0.jar:2.24.0]
               at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) [tomcat-embed-core-9.0.21.jar:9.0.21]
               at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:876) [jetty-servlet-9.4.19.v20190610.jar:9.4.19.v20190610]
               at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1623) [jetty-servlet-9.4.19.v20190610.jar:9.4.19.v20190610]
               at org.eclipse.jetty.servlets.MultiPartFilter.doFilter(MultiPartFilter.java:150) [jetty-servlets-9.4.19.v20190610.jar:9.4.19.v20190610]
               at org.apache.camel.component.jetty.CamelFilterWrapper.doFilter(CamelFilterWrapper.java:43) [camel-jetty-common-2.24.0.jar:2.24.0]
               at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610) [jetty-servlet-9.4.19.v20190610.jar:9.4.19.v20190610]
               at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540) [jetty-servlet-9.4.19.v20190610.jar:9.4.19.v20190610]
               at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) [jetty-server-9.4.19.v20190610.jar:9.4.19.v20190610]
               at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1347) [jetty-server-9.4.19.v20190610.jar:9.4.19.v20190610]
               at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203) [jetty-server-9.4.19.v20190610.jar:9.4.19.v20190610]
               at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480) [jetty-servlet-9.4.19.v20190610.jar:9.4.19.v20190610]
               at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201) [jetty-server-9.4.19.v20190610.jar:9.4.19.v20190610]
               at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1249) [jetty-server-9.4.19.v20190610.jar:9.4.19.v20190610]
               at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) [jetty-server-9.4.19.v20190610.jar:9.4.19.v20190610]
               at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) [jetty-server-9.4.19.v20190610.jar:9.4.19.v20190610]
               at org.eclipse.jetty.server.Server.handle(Server.java:505) [jetty-server-9.4.19.v20190610.jar:9.4.19.v20190610]
               at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370) [jetty-server-9.4.19.v20190610.jar:9.4.19.v20190610]
               at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267) [jetty-server-9.4.19.v20190610.jar:9.4.19.v20190610]
               at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305) [jetty-io-9.4.19.v20190610.jar:9.4.19.v20190610]
               at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) [jetty-io-9.4.19.v20190610.jar:9.4.19.v20190610]
               at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) [jetty-io-9.4.19.v20190610.jar:9.4.19.v20190610]
               at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:781) [jetty-util-9.4.19.v20190610.jar:9.4.19.v20190610]
               at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:917) [jetty-util-9.4.19.v20190610.jar:9.4.19.v20190610]
               at java.lang.Thread.run(Thread.java:748) [na:1.8.0_144]


***************************************************************************
The information contained in this communication is confidential, is
intended only for the use of the recipient named above, and may be legally
privileged.

If the reader of this message is not the intended recipient, you are
hereby notified that any dissemination, distribution or copying of this
communication is strictly prohibited.

If you have received this communication in error, please resend this
communication to the sender and delete the original message or any copy
of it from your computer system.

Thank You.
****************************************************************************