How to maintain a seperate Datastructure to choose processor in my custom load balancer

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

How to maintain a seperate Datastructure to choose processor in my custom load balancer

kishorecj
Hi Sir,

          My requirement is ,
    a group of tomcats are mapped to a particular appid and route should happen based on incoming request  with appid .

          hashmap looks like
                                  tomcat1
                      app1 -   tomcat2
                                   tomcat3
                                   
                                   tomcat4
                       app2 -   tomcat5

so if incoming request comes with appid=app1  then my custom loadbalancer should route to one of tomcat1-tomcat3.

adding tomcat's will happen at runtime[dynamic adding support].
whenever a new tomcat gets added to a particular applicationid then i am creating a HttpEndpoint processor and adding it in into hashmap.

when i get a request trying to get the processor and calling processor.process(exchange).
but it is retrying 3 times and failing.

Please help me in solving this problem or share some idea where i might be wrong.
Reply | Threaded
Open this post in threaded view
|

Re: How to maintain a seperate Datastructure to choose processor in my custom load balancer

Willem.Jiang
Administrator
Hi,

I'm not sure how you create the process for the new created endpoint, you may need to start or stop the endpoint and producer yourself.
I think it could be much easy if you use the recipient-list[1] to change the endpoint dynamically.

[1]http://camel.apache.org/recipient-list.html 

--
Willem Jiang

Red Hat, Inc.
FuseSource is now part of Red Hat
Web: http://www.fusesource.com | http://www.redhat.com
Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/) (English)
          http://jnn.javaeye.com (http://jnn.javaeye.com/) (Chinese)
Twitter: willemjiang
Weibo: willemjiang





On Thursday, October 18, 2012 at 1:38 PM, kishorecj wrote:

> Hi Sir,
>
> My requirement is ,
> a group of tomcats are mapped to a particular appid and route should
> happen based on incoming request with appid .
>
> hashmap looks like
> tomcat1
> app1 - tomcat2
> tomcat3
>
> tomcat4
> app2 - tomcat5
>
> so if incoming request comes with appid=app1 then my custom loadbalancer
> should route to one of tomcat1-tomcat3.
>
> adding tomcat's will happen at runtime[dynamic adding support].
> whenever a new tomcat gets added to a particular applicationid then i am
> creating a HttpEndpoint processor and adding it in into hashmap.
>
> when i get a request trying to get the processor and calling
> processor.process(exchange).
> but it is retrying 3 times and failing.
>
> Please help me in solving this problem or share some idea where i might be
> wrong.
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/How-to-maintain-a-seperate-Datastructure-to-choose-processor-in-my-custom-load-balancer-tp5721214.html
> Sent from the Camel - Users mailing list archive at Nabble.com (http://Nabble.com).



Reply | Threaded
Open this post in threaded view
|

Re: How to maintain a seperate Datastructure to choose processor in my custom load balancer

Claus Ibsen-2
In reply to this post by kishorecj
On Thu, Oct 18, 2012 at 7:38 AM, kishorecj <[hidden email]> wrote:

> Hi Sir,
>
>           My requirement is ,
>     a group of tomcats are mapped to a particular appid and route should
> happen based on incoming request  with appid .
>
>           hashmap looks like
>                                   tomcat1
>                       app1 -   tomcat2
>                                    tomcat3
>
>                                    tomcat4
>                        app2 -   tomcat5
>
> so if incoming request comes with appid=app1  then my custom loadbalancer
> should route to one of tomcat1-tomcat3.
>
> adding tomcat's will happen at runtime[dynamic adding support].
> whenever a new tomcat gets added to a particular applicationid then i am
> creating a HttpEndpoint processor and adding it in into hashmap.
>
> when i get a request trying to get the processor and calling
> processor.process(exchange).
> but it is retrying 3 times and failing.
>
> Please help me in solving this problem or share some idea where i might be
> wrong.
>

You can do this with a custom load balancer. And when a new tomcat is
added, then as you say create the endpoint, and then the producer, and
remember to start the producer.

And when you invoke process on the chosen producer, you may want to
have retry logic in case it fails. And maybe pickup another of the
tomcats within that group.

Some of that logic you can use the Camel error handler, where you can
let it retry the load balancer X number of times etc.

And btw when a tomcat is taking out, then you need to stop the
associated producer.

>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/How-to-maintain-a-seperate-Datastructure-to-choose-processor-in-my-custom-load-balancer-tp5721214.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



--
Claus Ibsen
-----------------
Red Hat, Inc.
FuseSource is now part of Red Hat
Email: [hidden email]
Web: http://fusesource.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen
Reply | Threaded
Open this post in threaded view
|

Re: How to maintain a seperate Datastructure to choose processor in my custom load balancer

Claus Ibsen-2
In reply to this post by kishorecj
Another alternative is to use a dynamic router, or recipient list.
Instead of the load balancer.


On Thu, Oct 18, 2012 at 7:38 AM, kishorecj <[hidden email]> wrote:

> Hi Sir,
>
>           My requirement is ,
>     a group of tomcats are mapped to a particular appid and route should
> happen based on incoming request  with appid .
>
>           hashmap looks like
>                                   tomcat1
>                       app1 -   tomcat2
>                                    tomcat3
>
>                                    tomcat4
>                        app2 -   tomcat5
>
> so if incoming request comes with appid=app1  then my custom loadbalancer
> should route to one of tomcat1-tomcat3.
>
> adding tomcat's will happen at runtime[dynamic adding support].
> whenever a new tomcat gets added to a particular applicationid then i am
> creating a HttpEndpoint processor and adding it in into hashmap.
>
> when i get a request trying to get the processor and calling
> processor.process(exchange).
> but it is retrying 3 times and failing.
>
> Please help me in solving this problem or share some idea where i might be
> wrong.
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/How-to-maintain-a-seperate-Datastructure-to-choose-processor-in-my-custom-load-balancer-tp5721214.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



--
Claus Ibsen
-----------------
Red Hat, Inc.
FuseSource is now part of Red Hat
Email: [hidden email]
Web: http://fusesource.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen
Reply | Threaded
Open this post in threaded view
|

Re: How to maintain a seperate Datastructure to choose processor in my custom load balancer

kishorecj
In reply to this post by Willem.Jiang
thank you sir. will go through recipient-list and see how to implement.