You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by bdeweer <be...@gmail.com> on 2017/01/10 10:22:59 UTC

synchrone and asynchrone question

Hello,

Today I encounter a strange situation with my project so could you please
explain what's the difference between :

<wireTap uri="vm:savePayload" /> (asynchrone to asynchrone component)
 
and

<to uri="vm:savePayload" /> (synchrone to asynchrone component)

and 

<wireTap uri="direct-vm:savePayload" /> (asynchrone to synchrone component)

As the name suggests, I need to save the payload of my route. A dedicated
bundle has this responsability.

When a route starts with <from uri="direct:ws2jms"> everything is ok with
any of the three above solution.

But when a route starts with <from uri="vm:jms2ws">

I strangely noticed that after the call to the instruction <to
uri="vm:savePayload" /> I m not able to retrieve properties from my .cfg
file with this instruction 

exchange.getContext().resolvePropertyPlaceholders("{{http.port}} in a bean

I got an IllegalArgumentException with this stacktrace : 

Stacktrace
---------------------------------------------------------------------------------------------------------------------------------------
java.lang.IllegalArgumentException: Property with key [http.port] not found
in properties from text: {{http.port}}
        at
org.apache.camel.component.properties.DefaultPropertiesParser$ParsingContext.getPropertyValue(DefaultPropertiesParser.java:268)
        at
org.apache.camel.component.properties.DefaultPropertiesParser$ParsingContext.readProperty(DefaultPropertiesParser.java:154)
        at
org.apache.camel.component.properties.DefaultPropertiesParser$ParsingContext.doParse(DefaultPropertiesParser.java:113)
        at
org.apache.camel.component.properties.DefaultPropertiesParser$ParsingContext.parse(DefaultPropertiesParser.java:97)
        at
org.apache.camel.component.properties.DefaultPropertiesParser.parseUri(DefaultPropertiesParser.java:62)
        at
org.apache.camel.component.properties.PropertiesComponent.parseUri(PropertiesComponent.java:209)
        at
org.apache.camel.component.properties.PropertiesComponent.parseUri(PropertiesComponent.java:160)
        at
org.apache.camel.impl.DefaultCamelContext.resolvePropertyPlaceholders(DefaultCamelContext.java:2348)
        at
com.oxit.flow.manager.TraceGeneratorManager.setTrace(TraceGeneratorManager.java:47)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)[:1.8.0_65]
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_65]
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_65]
        at java.lang.reflect.Method.invoke(Method.java:497)[:1.8.0_65]
        at
org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:458)[175:org.apache.camel.camel-core:2.18.1]
        at
org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:289)[175:org.apache.camel.camel-core:2.18.1]
        at
org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:262)[175:org.apache.camel.camel-core:2.18.1]
        at
org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:178)[175:org.apache.camel.camel-core:2.18.1]
        at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)[175:org.apache.camel.camel-core:2.18.1]
        at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:542)[175:org.apache.camel.camel-core:2.18.1]
        at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)[175:org.apache.camel.camel-core:2.18.1]
        at
org.apache.camel.processor.Pipeline.process(Pipeline.java:120)[175:org.apache.camel.camel-core:2.18.1]
        at
org.apache.camel.processor.Pipeline.process(Pipeline.java:83)[175:org.apache.camel.camel-core:2.18.1]
        at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)[175:org.apache.camel.camel-core:2.18.1]
        at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:97)[175:org.apache.camel.camel-core:2.18.1]
        at
org.apache.camel.processor.OnCompletionProcessor.doProcess(OnCompletionProcessor.java:151)[175:org.apache.camel.camel-core:2.18.1]
        at
org.apache.camel.processor.OnCompletionProcessor$OnCompletionSynchronizationAfterConsumer.onComplete(OnCompletionProcessor.java:248)[175:org.apache.camel.camel-core:2.18.1]
        at
org.apache.camel.util.UnitOfWorkHelper.doneSynchronizations(UnitOfWorkHelper.java:104)[175:org.apache.camel.camel-core:2.18.1]
        at
org.apache.camel.impl.DefaultUnitOfWork.done(DefaultUnitOfWork.java:230)[175:org.apache.camel.camel-core:2.18.1]
        at
org.apache.camel.util.UnitOfWorkHelper.doneUow(UnitOfWorkHelper.java:65)[175:org.apache.camel.camel-core:2.18.1]
        at
org.apache.camel.processor.CamelInternalProcessor$UnitOfWorkProcessorAdvice.after(CamelInternalProcessor.java:674)[175:org.apache.camel.camel-core:2.18.1]
        at
org.apache.camel.processor.CamelInternalProcessor$UnitOfWorkProcessorAdvice.after(CamelInternalProcessor.java:629)[175:org.apache.camel.camel-core:2.18.1]
        at
org.apache.camel.processor.CamelInternalProcessor$InternalCallback.done(CamelInternalProcessor.java:246)[175:org.apache.camel.camel-core:2.18.1]
        at
org.apache.camel.processor.CamelInternalProcessor$InternalCallback.done(CamelInternalProcessor.java:257)[175:org.apache.camel.camel-core:2.18.1]
        at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:573)[175:org.apache.camel.camel-core:2.18.1]
        at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)[175:org.apache.camel.camel-core:2.18.1]
        at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)[175:org.apache.camel.camel-core:2.18.1]
        at
org.apache.camel.component.seda.SedaConsumer.sendToConsumers(SedaConsumer.java:298)[175:org.apache.camel.camel-core:2.18.1]
        at
org.apache.camel.component.seda.SedaConsumer.doRun(SedaConsumer.java:207)[175:org.apache.camel.camel-core:2.18.1]
        at
org.apache.camel.component.seda.SedaConsumer.run(SedaConsumer.java:154)[175:org.apache.camel.camel-core:2.18.1]
        at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0_65]
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0_65]
        at java.lang.Thread.run(Thread.java:745)[:1.8.0_65]


I precise that I don't encounter this situation when my route starts with
<from uri="direct:ws2jms">


So the solution to me is to use the wireTap component. But why the
IllegalArgumentException when the route starts with a direct component? Is
it related to the Exception ?

What's the difference between wireTap uri="vm:blabla" /> (double asynchrone)
and <wireTap uri="direct-vm:blabla"> (simple asynchrone) ?

Thank you!!



Thank you







--
View this message in context: http://camel.465427.n5.nabble.com/synchrone-and-asynchrone-question-tp5792346.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: synchrone and asynchrone question

Posted by Claus Ibsen <cl...@gmail.com>.
What version of Camel do you use

On Tue, Jan 10, 2017 at 11:22 AM, bdeweer <be...@gmail.com> wrote:
> Hello,
>
> Today I encounter a strange situation with my project so could you please
> explain what's the difference between :
>
> <wireTap uri="vm:savePayload" /> (asynchrone to asynchrone component)
>
> and
>
> <to uri="vm:savePayload" /> (synchrone to asynchrone component)
>
> and
>
> <wireTap uri="direct-vm:savePayload" /> (asynchrone to synchrone component)
>
> As the name suggests, I need to save the payload of my route. A dedicated
> bundle has this responsability.
>
> When a route starts with <from uri="direct:ws2jms"> everything is ok with
> any of the three above solution.
>
> But when a route starts with <from uri="vm:jms2ws">
>
> I strangely noticed that after the call to the instruction <to
> uri="vm:savePayload" /> I m not able to retrieve properties from my .cfg
> file with this instruction
>
> exchange.getContext().resolvePropertyPlaceholders("{{http.port}} in a bean
>
> I got an IllegalArgumentException with this stacktrace :
>
> Stacktrace
> ---------------------------------------------------------------------------------------------------------------------------------------
> java.lang.IllegalArgumentException: Property with key [http.port] not found
> in properties from text: {{http.port}}
>         at
> org.apache.camel.component.properties.DefaultPropertiesParser$ParsingContext.getPropertyValue(DefaultPropertiesParser.java:268)
>         at
> org.apache.camel.component.properties.DefaultPropertiesParser$ParsingContext.readProperty(DefaultPropertiesParser.java:154)
>         at
> org.apache.camel.component.properties.DefaultPropertiesParser$ParsingContext.doParse(DefaultPropertiesParser.java:113)
>         at
> org.apache.camel.component.properties.DefaultPropertiesParser$ParsingContext.parse(DefaultPropertiesParser.java:97)
>         at
> org.apache.camel.component.properties.DefaultPropertiesParser.parseUri(DefaultPropertiesParser.java:62)
>         at
> org.apache.camel.component.properties.PropertiesComponent.parseUri(PropertiesComponent.java:209)
>         at
> org.apache.camel.component.properties.PropertiesComponent.parseUri(PropertiesComponent.java:160)
>         at
> org.apache.camel.impl.DefaultCamelContext.resolvePropertyPlaceholders(DefaultCamelContext.java:2348)
>         at
> com.oxit.flow.manager.TraceGeneratorManager.setTrace(TraceGeneratorManager.java:47)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)[:1.8.0_65]
>         at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_65]
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_65]
>         at java.lang.reflect.Method.invoke(Method.java:497)[:1.8.0_65]
>         at
> org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:458)[175:org.apache.camel.camel-core:2.18.1]
>         at
> org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:289)[175:org.apache.camel.camel-core:2.18.1]
>         at
> org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:262)[175:org.apache.camel.camel-core:2.18.1]
>         at
> org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:178)[175:org.apache.camel.camel-core:2.18.1]
>         at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)[175:org.apache.camel.camel-core:2.18.1]
>         at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:542)[175:org.apache.camel.camel-core:2.18.1]
>         at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)[175:org.apache.camel.camel-core:2.18.1]
>         at
> org.apache.camel.processor.Pipeline.process(Pipeline.java:120)[175:org.apache.camel.camel-core:2.18.1]
>         at
> org.apache.camel.processor.Pipeline.process(Pipeline.java:83)[175:org.apache.camel.camel-core:2.18.1]
>         at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)[175:org.apache.camel.camel-core:2.18.1]
>         at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:97)[175:org.apache.camel.camel-core:2.18.1]
>         at
> org.apache.camel.processor.OnCompletionProcessor.doProcess(OnCompletionProcessor.java:151)[175:org.apache.camel.camel-core:2.18.1]
>         at
> org.apache.camel.processor.OnCompletionProcessor$OnCompletionSynchronizationAfterConsumer.onComplete(OnCompletionProcessor.java:248)[175:org.apache.camel.camel-core:2.18.1]
>         at
> org.apache.camel.util.UnitOfWorkHelper.doneSynchronizations(UnitOfWorkHelper.java:104)[175:org.apache.camel.camel-core:2.18.1]
>         at
> org.apache.camel.impl.DefaultUnitOfWork.done(DefaultUnitOfWork.java:230)[175:org.apache.camel.camel-core:2.18.1]
>         at
> org.apache.camel.util.UnitOfWorkHelper.doneUow(UnitOfWorkHelper.java:65)[175:org.apache.camel.camel-core:2.18.1]
>         at
> org.apache.camel.processor.CamelInternalProcessor$UnitOfWorkProcessorAdvice.after(CamelInternalProcessor.java:674)[175:org.apache.camel.camel-core:2.18.1]
>         at
> org.apache.camel.processor.CamelInternalProcessor$UnitOfWorkProcessorAdvice.after(CamelInternalProcessor.java:629)[175:org.apache.camel.camel-core:2.18.1]
>         at
> org.apache.camel.processor.CamelInternalProcessor$InternalCallback.done(CamelInternalProcessor.java:246)[175:org.apache.camel.camel-core:2.18.1]
>         at
> org.apache.camel.processor.CamelInternalProcessor$InternalCallback.done(CamelInternalProcessor.java:257)[175:org.apache.camel.camel-core:2.18.1]
>         at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:573)[175:org.apache.camel.camel-core:2.18.1]
>         at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)[175:org.apache.camel.camel-core:2.18.1]
>         at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)[175:org.apache.camel.camel-core:2.18.1]
>         at
> org.apache.camel.component.seda.SedaConsumer.sendToConsumers(SedaConsumer.java:298)[175:org.apache.camel.camel-core:2.18.1]
>         at
> org.apache.camel.component.seda.SedaConsumer.doRun(SedaConsumer.java:207)[175:org.apache.camel.camel-core:2.18.1]
>         at
> org.apache.camel.component.seda.SedaConsumer.run(SedaConsumer.java:154)[175:org.apache.camel.camel-core:2.18.1]
>         at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0_65]
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0_65]
>         at java.lang.Thread.run(Thread.java:745)[:1.8.0_65]
>
>
> I precise that I don't encounter this situation when my route starts with
> <from uri="direct:ws2jms">
>
>
> So the solution to me is to use the wireTap component. But why the
> IllegalArgumentException when the route starts with a direct component? Is
> it related to the Exception ?
>
> What's the difference between wireTap uri="vm:blabla" /> (double asynchrone)
> and <wireTap uri="direct-vm:blabla"> (simple asynchrone) ?
>
> Thank you!!
>
>
>
> Thank you
>
>
>
>
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/synchrone-and-asynchrone-question-tp5792346.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Re: synchrone and asynchrone question

Posted by Claus Ibsen <cl...@gmail.com>.
Just mind about when an exchange cross camel contexts its different
and then it cannot use placeholders from the old camel context.

So make sure you have those cfg configured in all your camel context
you use for vm

On Tue, Jan 10, 2017 at 11:38 AM, bdeweer <be...@gmail.com> wrote:
> Camel 2.18.1 With Karaf 4 and blueprint
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/synchrone-and-asynchrone-question-tp5792346p5792348.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Re: synchrone and asynchrone question

Posted by bdeweer <be...@gmail.com>.
Camel 2.18.1 With Karaf 4 and blueprint



--
View this message in context: http://camel.465427.n5.nabble.com/synchrone-and-asynchrone-question-tp5792346p5792348.html
Sent from the Camel - Users mailing list archive at Nabble.com.