You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by slew <sl...@googlemail.com> on 2010/08/06 10:51:57 UTC

VM Pipeline returns early

Hi,

I have a CXF web service which forwards via JBI to a camel route.

The camel route calls out to a number or other routes which do things such
as validation, auditing etc.  These calls are made using the VM component
since these sub-routes exist in other service assemblies.  What I'm finding
is that if VM routes are chained together, then I get a response to the web
service after the first one has finished.

As a simple example, if my route is like below:

        from("jbi:endpoint:urn:testcase/TestVMPipeline/Router?mep=in-out")
            .to("log:Received Message")
            .to("vm:testStep")
            .to("log:After Test Step")
            .setBody(constant("<Message xmlns=\"urn:testcase\">Want this one
returned</Message>"))
            .to("log:End of route");

        from("vm:testStep")
            .setBody(constant("<Message xmlns=\"urn:testcase\">Don't want
this one returned</Message>"));

I find that I get the response <Message xmlns=\"urn:testcase\">Don't want
this one returned</Message>, when I want <Message
xmlns=\"urn:testcase\">Want this one returned</Message>.  How can I make the
route block until all steps are complete?

I'm using Camel 2.3 (same behaviour with 2.2) running in ServiceMix 3.3.2.

I've attached the above test case, with a soapUI test project.
http://servicemix.396122.n5.nabble.com/file/n2266432/TestVMPipeline.zip
TestVMPipeline.zip 

Thanks for any advice,
Steve. 
-- 
View this message in context: http://servicemix.396122.n5.nabble.com/VM-Pipeline-returns-early-tp2266432p2266432.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Re: VM Pipeline returns early

Posted by slew <sl...@googlemail.com>.
Hi Ron,

Thanks for the response.  Willem Jiang has just given me a similar response
for another question I had when using vm, so seems I was just doing things
the wrong way.

I've had a quick try changing to use the jbi component instead, but my
exceptions aren't being propagated, but hopefully that's something I can
sort out.

Thanks again,
Steve.


rlg673 wrote:
> 
> Camel async components like "vm" are being overhauled in the Camel 2.5
> release. Any reason why you would not use the Camel jbi component instead
> of the Camel vm component in this scenario? The jbi component was designed
> for just this purpose and is likely much better tested within the SMX
> container than the Camel vm component.
> 
> /Ron
> 
> 
> 
> ----- Original Message ----
> From: slew <sl...@googlemail.com>
> To: users@servicemix.apache.org
> Sent: Fri, August 6, 2010 4:51:57 AM
> Subject: VM Pipeline returns early
> 
> 
> Hi,
> 
> I have a CXF web service which forwards via JBI to a camel route.
> 
> The camel route calls out to a number or other routes which do things such
> as validation, auditing etc.  These calls are made using the VM component
> since these sub-routes exist in other service assemblies.  What I'm
> finding
> is that if VM routes are chained together, then I get a response to the
> web
> service after the first one has finished.
> 
> As a simple example, if my route is like below:
> 
>         from("jbi:endpoint:urn:testcase/TestVMPipeline/Router?mep=in-out")
>             .to("log:Received Message")
>             .to("vm:testStep")
>             .to("log:After Test Step")
>             .setBody(constant("<Message xmlns=\"urn:testcase\">Want this
> one
> returned</Message>"))
>             .to("log:End of route");
> 
>         from("vm:testStep")
>             .setBody(constant("<Message xmlns=\"urn:testcase\">Don't want
> this one returned</Message>"));
> 
> I find that I get the response <Message xmlns=\"urn:testcase\">Don't want
> this one returned</Message>, when I want <Message
> xmlns=\"urn:testcase\">Want this one returned</Message>.  How can I make
> the
> route block until all steps are complete?
> 
> I'm using Camel 2.3 (same behaviour with 2.2) running in ServiceMix 3.3.2.
> 
> I've attached the above test case, with a soapUI test project.
> http://servicemix.396122.n5.nabble.com/file/n2266432/TestVMPipeline.zip
> TestVMPipeline.zip 
> 
> Thanks for any advice,
> Steve. 
> -- 
> View this message in context:
> http://servicemix.396122.n5.nabble.com/VM-Pipeline-returns-early-tp2266432p2266432.html
> Sent from the ServiceMix - User mailing list archive at Nabble.com.
> 
> 
> 
>       
> 
> 

-- 
View this message in context: http://servicemix.396122.n5.nabble.com/VM-Pipeline-returns-early-tp2266432p2266594.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Re: VM Pipeline returns early

Posted by Ron Gavlin <rg...@yahoo.com>.
Camel async components like "vm" are being overhauled in the Camel 2.5 release. Any reason why you would not use the Camel jbi component instead of the Camel vm component in this scenario? The jbi component was designed for just this purpose and is likely much better tested within the SMX container than the Camel vm component.

/Ron



----- Original Message ----
From: slew <sl...@googlemail.com>
To: users@servicemix.apache.org
Sent: Fri, August 6, 2010 4:51:57 AM
Subject: VM Pipeline returns early


Hi,

I have a CXF web service which forwards via JBI to a camel route.

The camel route calls out to a number or other routes which do things such
as validation, auditing etc.  These calls are made using the VM component
since these sub-routes exist in other service assemblies.  What I'm finding
is that if VM routes are chained together, then I get a response to the web
service after the first one has finished.

As a simple example, if my route is like below:

        from("jbi:endpoint:urn:testcase/TestVMPipeline/Router?mep=in-out")
            .to("log:Received Message")
            .to("vm:testStep")
            .to("log:After Test Step")
            .setBody(constant("<Message xmlns=\"urn:testcase\">Want this one
returned</Message>"))
            .to("log:End of route");

        from("vm:testStep")
            .setBody(constant("<Message xmlns=\"urn:testcase\">Don't want
this one returned</Message>"));

I find that I get the response <Message xmlns=\"urn:testcase\">Don't want
this one returned</Message>, when I want <Message
xmlns=\"urn:testcase\">Want this one returned</Message>.  How can I make the
route block until all steps are complete?

I'm using Camel 2.3 (same behaviour with 2.2) running in ServiceMix 3.3.2.

I've attached the above test case, with a soapUI test project.
http://servicemix.396122.n5.nabble.com/file/n2266432/TestVMPipeline.zip
TestVMPipeline.zip 

Thanks for any advice,
Steve. 
-- 
View this message in context: http://servicemix.396122.n5.nabble.com/VM-Pipeline-returns-early-tp2266432p2266432.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.