You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Jitesh Adsul <ji...@gmail.com> on 2022/10/24 10:09:59 UTC

How to interrupt camel multicast for subset of enpoints/subroute

Hello folks !!!

I have requirement to poll two ftp folders say "output" and "error" for
file. Actual file could come in either of two folders(not both). I tried
multicast (even used completionSize of 1) but process keeps waiting as
camel waits for both output and error endpoint routes to complete.

//sample code

from("direct:got_filename_to_poll")

.multicast() .parallelProcessing(true) .to("ftp:output", "ftp:error") .end()

.to("direct:process_extracted_file")

Is there any way to interrupt "ftp:error" sub-route if I get response from
"ftp:output" sub-route(or vice versa) or is there any other option to solve
this problem without compromising response time, example adding timeout on
slow response will slow down overall response time.



Thanks & Regards

Jitesh

Re: How to interrupt camel multicast for subset of enpoints/subroute

Posted by ski n <ra...@gmail.com>.
Hi Jitesh,

You can separate the polling of the two FTP into two separate routes:

//normal route
from("ftp://[username@]hostname[:port]/output")
  //code for normal output
.to("direct:process_extracted_file");
//error route
from("ftp://[username@]hostname[:port]/error")
  //code for error output
.to("direct:process_extracted_file");

They can be in the same routebuilder class.

Raymond


On Mon, Oct 24, 2022 at 12:18 PM Jitesh Adsul <ji...@gmail.com>
wrote:

> Hello folks !!!
>
> I have requirement to poll two ftp folders say "output" and "error" for
> file. Actual file could come in either of two folders(not both). I tried
> multicast (even used completionSize of 1) but process keeps waiting as
> camel waits for both output and error endpoint routes to complete.
>
> //sample code
>
> from("direct:got_filename_to_poll")
>
> .multicast() .parallelProcessing(true) .to("ftp:output", "ftp:error")
> .end()
>
> .to("direct:process_extracted_file")
>
> Is there any way to interrupt "ftp:error" sub-route if I get response from
> "ftp:output" sub-route(or vice versa) or is there any other option to solve
> this problem without compromising response time, example adding timeout on
> slow response will slow down overall response time.
>
>
>
> Thanks & Regards
>
> Jitesh
>