camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Willem.Jiang" <willem.ji...@gmail.com>
Subject Re: Delay() causes unexpected results
Date Wed, 26 Jan 2011 02:38:19 GMT

Please call the end() after you call the delay() function, then you will get
same result as not using delay() function.
As you know delay is a delegate processor,  end() will tell him there is no
other processor it should be delegated to call. 

Willem


marbor wrote:
> 
> Hi all:
> 
> I have a DSL that works as expected, but when I add delay()'s, it doesn't. 
>  Is this a bug or do I not understand the delay() function?
> 
> Test Class:
> 
> public class ChoiceTesting extends CamelTestSupport {
> 
>     @Override
>     protected RouteBuilder createRouteBuilder() throws Exception {
>         return new RouteBuilder() {
>             @Override
>             public void configure() throws Exception {
>                 from("direct:start")
>                     .log("Starting testing")
>                     .multicast().stopOnException()
>                         .pipeline()
>                             .log("In the beginning!  Body=${body}")
>                             .to("direct:dummy")
>                             .choice()
>                                 .when(header("KEY").isNotEqualTo("VALUE"))
>                                     .log("choice 1")
>                                     .wireTap("direct:dummy")
>                                     //.delay(500)
>                                     .choice()
>  .when(header("KEY").isNotEqualTo("VALUE"))
>                                             .log("choice 2")
>                                             .to("direct:dummy")
>                                             //.delay(500)
>                                             .choice()
>  .when(header("KEY").isEqualTo("VALUE"))
>                                                     .log("choice 3")
>                                                     .throwException(new 
> RuntimeException("Some Error"))
>                                             .end()
>                                     .end()
>                             .end()
>                         .end()
>                         .to("direct:middle")
>                         .pipeline()
>                             .log("In the end!  Body=${body}")
>                         .end();
> 
>                 from("direct:middle")
>                     .log("In the middle!  Body=${body}");
> 
>                 from("direct:dummy")
>                     .setBody().constant("DUMMY");
>             }
>         };
>     }
> 
>     @Test
>     public void run() {
>         template.sendBody("direct:start", "X");
>     }
> }
> 
> Produces the expected output of:
> 
> 2011-01-24 15:16:42,891 INFO  route1 - Starting testing
> 2011-01-24 15:16:42,891 INFO  route1 - In the beginning!  Body=X
> 2011-01-24 15:16:42,891 INFO  route1 - choice 1
> 2011-01-24 15:16:42,891 INFO  route1 - choice 2
> 2011-01-24 15:16:42,891 INFO  route2 - In the middle!  Body=X
> 2011-01-24 15:16:42,891 INFO  route1 - In the end!  Body=X
> 
> But when I uncomment the delay() calls, the output changes to:
> 
> 2011-01-24 15:23:55,477 INFO  route1 - Starting testing
> 2011-01-24 15:23:55,477 INFO  route1 - In the beginning!  Body=X
> 2011-01-24 15:23:55,477 INFO  route1 - choice 1
> 2011-01-24 15:23:55,977 INFO  route1 - choice 2
> 2011-01-24 15:23:56,477 INFO  route2 - In the middle!  Body=DUMMY
> 2011-01-24 15:23:56,477 INFO  route1 - In the end!  Body=DUMMY
> 
> I'm using Camel 2.5.0.
> 
> Thanks in advance,
> Mark
> 
> Mark Borner
> Java Developer - ZStream Xpress
> 
> ----
> This email is intended for the named recipient only. It may contain 
> information which is confidential, commercially sensitive, or 
> copyright. If you are not the intended recipient you must not 
> reproduce or distribute any part of the email, disclose its contents, 
> or take any action in reliance. If you have received this email in 
> error, please contact the sender and delete the message. It is your 
> responsibility to scan this email and any attachments for viruses and 
> other defects. To the extent permitted by law, Zurich and its 
> associates will not be liable for any loss or damage arising in any 
> way from this communication including any file attachments. We may 
> monitor email you send to us, either as a reply to this email or any 
> email you send to us, to confirm our systems are protected and for 
> compliance with company policies. Although we take reasonable 
> precautions to protect the confidentiality of our email systems, we 
> do not warrant the confidentiality or security of email or 
> attachments we receive.
> 
-- 
View this message in context: http://camel.465427.n5.nabble.com/Delay-causes-unexpected-results-tp3354254p3357308.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Mime
View raw message