I don’t see how .pipeline().to(“A”).to(“B”).end() should not be equivalent to .pipeline(“A”, “B”), or to .to(“A”, “B”) which is - for what I understood from documentation - equivalent to the pipeline statement anyway. I am of course changing data in the A and C steps, please go look at the gist in my original email (and the output of the working example for that matter.)
I understand the intuition that the multicast sends the same message downstream; what is counter-intuitive to me is that it reaches *into* the pipelines rather than just their heads. Please read my code and the logs I added in my last post and let me know if this is expected - albeit backwards - behavior or whether it’s a bug. Best, Edoardo > On 1 Nov 2016, at 14:59, Brad Johnson <[email protected]> wrote: > > That's what you should see unless you change the data in A or in C. A and > C should both receive START. It is a multicast. If you change the value in > A you'll see that change in B but that will not be shown in C since C is at > the root of the multicast. If you change the data in C you'll see it in D. > > Another way to think of the multicast, if this helps, is that the first > elements in the multicast are like a pub/sub or JMS topic where each of the > subscribers receive exactly the same message. > > On Tue, Nov 1, 2016 at 4:49 AM, Edoardo Causarano < > [email protected]> wrote: > >> Hi all, >> >> these are the results I get, only the most explicit and verbose >> configuration returns the expected result. >> >> Working route: >> .pipeline().to("A").to("B").end() >> .pipeline().to("C").to("D").end() >> >> 10:41:12.644 [main] INFO route1 - after direct:start body=START >> 10:41:12.666 [main] DEBUG org.apache.camel.processor.SendProcessor - >>>> >> A Exchange[ID-Spitfire-local-50181-1477993271722-0-3] >> 10:41:12.667 [main] DEBUG com.esc.test.MulticastPipelinesTest - A got >> in=START >> 10:41:12.667 [main] DEBUG org.apache.camel.processor.SendProcessor - >>>> >> B Exchange[ID-Spitfire-local-50181-1477993271722-0-3] >> 10:41:12.667 [main] DEBUG com.esc.test.MulticastPipelinesTest - B got in=A >> 10:41:12.670 [main] DEBUG org.apache.camel.processor.SendProcessor - >>>> >> C Exchange[ID-Spitfire-local-50181-1477993271722-0-4] >> 10:41:12.671 [main] DEBUG com.esc.test.MulticastPipelinesTest - C got >> in=START >> 10:41:12.671 [main] DEBUG org.apache.camel.processor.SendProcessor - >>>> >> D Exchange[ID-Spitfire-local-50181-1477993271722-0-4] >> 10:41:12.671 [main] DEBUG com.esc.test.MulticastPipelinesTest - D got in=C >> >> >> Faulty routes: >> .pipeline("A", "B") >> .pipeline("C", "D”) >> >> or >> >> .to("A", "B") >> .to("C", "D") >> >> 10:43:46.383 [main] INFO route1 - after direct:start body=START >> 10:43:46.389 [main] DEBUG org.apache.camel.processor.SendProcessor - >>>> >> A Exchange[ID-Spitfire-local-50316-1477993425625-0-3] >> 10:43:46.389 [main] DEBUG com.esc.test.MulticastPipelinesTest - A got >> in=START >> 10:43:46.390 [main] DEBUG org.apache.camel.processor.SendProcessor - >>>> >> B Exchange[ID-Spitfire-local-50316-1477993425625-0-4] >> 10:43:46.390 [main] DEBUG com.esc.test.MulticastPipelinesTest - B got >> in=START >> 10:43:46.391 [main] DEBUG org.apache.camel.processor.SendProcessor - >>>> >> C Exchange[ID-Spitfire-local-50316-1477993425625-0-5] >> 10:43:46.391 [main] DEBUG com.esc.test.MulticastPipelinesTest - C got >> in=START >> 10:43:46.391 [main] DEBUG org.apache.camel.processor.SendProcessor - >>>> >> D Exchange[ID-Spitfire-local-50316-1477993425625-0-6] >> 10:43:46.391 [main] DEBUG com.esc.test.MulticastPipelinesTest - D got >> in=START >> >> >> Best, >> Edoardo >> >>> On 31 Oct 2016, at 15:04, DariusX <[email protected]> wrote: >>> >>> Your example was: >>> multicast() >>> .pipeline("A", "B") >>> .pipeline("C", "D") >>> .end() >>> >>> You send "START" as the body to this. So, you should expect "START" to be >>> the in.body for both "A" and "C". >>> >>> The in body for "B" will depend on what "A" does. Example: if "A" >> transforms >>> the body to a constant "Hello from A", then that is what "B" will get as >> its >>> in.body. >>> >>> Similarly, "D" will get whatever "C" decides to send along. >>> >>> If neither A nor C make any changes to the body, then you should expect >>> "START" to be the in.body for all four. >>> >>> >>> >>> >>> >>> -- >>> View this message in context: http://camel.465427.n5.nabble. >> com/Question-on-multicast-to-pipelines-tp5789396p5789518.html >>> Sent from the Camel - Users mailing list archive at Nabble.com. >> >>
