I'm using Camel 2.10.4 with my routes defined in Blueprint. I'm trying to
use a property placeholder to configure the completionTimeout for my
aggregator, and it's complaining:
Camel (postingResultsCamelContext) thread #6 - seda://start ERROR
[org.apache.camel.processor.DefaultErrorHandler] - Failed delivery for
(MessageId: ID-elysium-local-64760-1376927985149-0-1 on ExchangeId:
ID-elysium-local-64760-1376927985149-0-6). Exhausted after delivery
attempt: 1 caught: org.apache.camel.TypeConversionException: Error during
type conversion from type: java.lang.String to the required type:
java.lang.Long with value {{processor.posting.aggregation_timeout_millis}}
due java.lang.NumberFormatException: For input string:
"{{processor.posting.aggregation_timeout_millis}}"
org.apache.camel.TypeConversionException: Error during type conversion from
type: java.lang.String to the required type: java.lang.Long with value
{{processor.posting.aggregation_timeout_millis}} due
java.lang.NumberFormatException: For input string:
"{{processor.posting.aggregation_timeout_millis}}"
at
org.apache.camel.impl.converter.BaseTypeConverterRegistry.convertTo(BaseTypeConverterRegistry.java:126)
at
org.apache.camel.core.osgi.OsgiTypeConverter.convertTo(OsgiTypeConverter.java:102)
at
org.apache.camel.support.ExpressionAdapter.evaluate(ExpressionAdapter.java:37)
at
org.apache.camel.builder.SimpleBuilder.evaluate(SimpleBuilder.java:82)
at
org.apache.camel.processor.aggregate.AggregateProcessor.isCompleted(AggregateProcessor.java:333)
at
org.apache.camel.processor.aggregate.AggregateProcessor.doAggregation(AggregateProcessor.java:258)
at
org.apache.camel.processor.aggregate.AggregateProcessor.process(AggregateProcessor.java:201)
at
org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
at
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
at
org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:163)
at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
at
org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:334)
at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:220)
at
org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:46)
at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
at
org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:308)
at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
at
org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:334)
at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:220)
at
org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:46)
at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
at
org.apache.camel.processor.UnitOfWorkProcessor.processAsync(UnitOfWorkProcessor.java:150)
at
org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:117)
at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
at
org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:571)
at
org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:504)
at
org.apache.camel.processor.MulticastProcessor.process(MulticastProcessor.java:213)
at org.apache.camel.processor.Splitter.process(Splitter.java:98)
at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
at
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
at
org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:163)
at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
at
org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:334)
at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:220)
at
org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:46)
at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
at
org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:308)
at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:117)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
at
org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:46)
at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
at
org.apache.camel.processor.UnitOfWorkProcessor.processAsync(UnitOfWorkProcessor.java:150)
at
org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:117)
at
org.apache.camel.processor.RouteInflightRepositoryProcessor.processNext(RouteInflightRepositoryProcessor.java:48)
at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
at
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
at
org.apache.camel.component.seda.SedaConsumer.sendToConsumers(SedaConsumer.java:275)
at
org.apache.camel.component.seda.SedaConsumer.doRun(SedaConsumer.java:183)
at
org.apache.camel.component.seda.SedaConsumer.run(SedaConsumer.java:139)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:680)
Caused by: org.apache.camel.RuntimeCamelException:
java.lang.NumberFormatException: For input string:
"{{processor.posting.aggregation_timeout_millis}}"
at
org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1316)
at
org.apache.camel.util.ObjectHelper.invokeMethod(ObjectHelper.java:962)
at
org.apache.camel.impl.converter.StaticMethodTypeConverter.convertTo(StaticMethodTypeConverter.java:47)
at
org.apache.camel.impl.converter.BaseTypeConverterRegistry.doConvertTo(BaseTypeConverterRegistry.java:253)
at
org.apache.camel.impl.converter.BaseTypeConverterRegistry.convertTo(BaseTypeConverterRegistry.java:111)
... 59 more
Caused by: java.lang.NumberFormatException: For input string:
"{{processor.posting.aggregation_timeout_millis}}"
at
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Long.parseLong(Long.java:410)
at java.lang.Long.valueOf(Long.java:525)
at
org.apache.camel.converter.ObjectConverter.toLong(ObjectConverter.java:255)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.apache.camel.util.ObjectHelper.invokeMethod(ObjectHelper.java:958)
... 62 more
Here's my route:
<route id="PostingResults.HANDLER">
<from
uri="activemq:{{messaging.jms.namespace}}.POSTING_RESULT_HANDLER" />
<log
logName="com.ateb.messaging.myx.processor_posting.CamelRoutes"
loggingLevel="DEBUG" message="${in.header.CamelFileNameOnly}:
ATEB_FILETYPE->${in.header.ATEB_FILETYPE},
ATEB_CLIENT_ID->${in.header.ATEB_CLIENT_ID},
ATEB_FILENAME_TIMESTAMP->${in.header.ATEB_FILENAME_TIMESTAMP}"/>
<choice>
<when>
<simple>${in.header.ATEB_FILETYPE} ==
'POST_REQ'</simple>
<unmarshal ref="postingRequestBeanIO" />
</when>
<when>
<simple>${in.header.ATEB_FILETYPE} ==
'POST_RSLT'</simple>
<unmarshal ref="postingResultBeanIO" />
</when>
<otherwise>
<log
logName="com.ateb.messaging.myx.posting_results.CamelRoutes"
loggingLevel="WARN" message="${in.header.CamelFileNameOnly}: Unhandled
ATEB_FILETYPE ${in.header.ATEB_FILETYPE}, dropping"/>
<stop/>
</otherwise>
</choice>
<split>
<simple>${body}</simple>
<aggregate aggregationRepositoryRef="aggregatorRepository"
strategyRef="postingRequestResultAggregationStrategy">
<correlationExpression>
<simple>${in.header.ATEB_CLIENT_ID}-${body.clientStoreId}-${body.rxNumber}-${in.header.ATEB_FILENAME_DATESTAMP}</simple>
</correlationExpression>
<completionPredicate>
<simple>${in.body.isComplete}</simple>
</completionPredicate>
<completionTimeout>
<constant>{{processor.posting.aggregation_timeout_millis}}</constant>
</completionTimeout>
<filter>
<simple>${in.header.CamelAggregatedCompletedBy} ==
'timeout'</simple>
<log
logName="com.ateb.messaging.myx.posting_results.CamelRoutes"
loggingLevel="WARN" message="${in.header.CamelFileNameOnly}:
${in.header.ATEB_CLIENT_ID}-${body.clientStoreId}-${body.rxNumber}-${in.header.ATEB_FILENAME_DATESTAMP}]
Timed out waiting for aggregation"/>
<stop />
</filter>
<to uri="bean:postResults" />
</aggregate>
</split>
</route>
I saw in the docs that there's a custom namespace for using integer
properties in spring; do I need to do this for blueprint as well? Does it
even work for blueprint?
--sgp