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. ****************************************************************************