You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by angeloNZ <an...@nz.fujitsu.com> on 2009/06/04 14:11:45 UTC

Suggestions on setting different Throttler values per Client

Hi,

I'm using Camel alongside ServiceMix.  I want to get advise on how to
properly use the Throttler for a particular scenario.  I have a use case
where clients sending requests to ServiceMix will have different Quality of
Service values based on their gven credentials.  Once the request is
received, an LDAP server will be queried for the client's appropriate QoS
value.  This value is then intended to be used as the throttler value in the
DSL definition:

from("jbi:service:...").throttle(<retrieved QoS value>).to("...");

Question 1:  does this approach ensure that the different clients would be
throttled differently for the same endpoint? 

Question 2:  In this scenario the LDAP server is queried for the throttle
value every request and then set to the DSL each time.  I feel like this
isn't quite a good approach to throttling.  Wouldn't doing this somehow
reset the throttler each time per request?  What would be a good approach to
avoid resetting the throttle value each time and make successive requests
from the same client count towards the first throttle value set?


-- 
View this message in context: http://www.nabble.com/Suggestions-on-setting-different-Throttler-values-per-Client-tp23868691p23868691.html
Sent from the Camel - Users mailing list archive at Nabble.com.


Re: Suggestions on setting different Throttler values per Client

Posted by Claus Ibsen <cl...@gmail.com>.
Hi

Create ticket to track it: CAMEL-1669
https://issues.apache.org/activemq/browse/CAMEL-1669

Re: Suggestions on setting different Throttler values per Client

Posted by Claus Ibsen <cl...@gmail.com>.
Hi

Btw in Camel at runtime it all boils down to
org.apache.camel.Processor. So you can implement your own Processor
that acts as a dynamic throttler that can do grouping and different
QoS depending on some header values etc.

You just use .process(new MyThrottlerProcessor() instead of .throttle.



On Thu, Jun 4, 2009 at 3:16 PM, Claus Ibsen <cl...@gmail.com> wrote:
> Hi
>
> On Thu, Jun 4, 2009 at 2:11 PM, angeloNZ <an...@nz.fujitsu.com> wrote:
>>
>> Hi,
>>
>> I'm using Camel alongside ServiceMix.  I want to get advise on how to
>> properly use the Throttler for a particular scenario.  I have a use case
>> where clients sending requests to ServiceMix will have different Quality of
>> Service values based on their gven credentials.  Once the request is
>> received, an LDAP server will be queried for the client's appropriate QoS
>> value.  This value is then intended to be used as the throttler value in the
>> DSL definition:
>>
>> from("jbi:service:...").throttle(<retrieved QoS value>).to("...");
>>
>> Question 1:  does this approach ensure that the different clients would be
>> throttled differently for the same endpoint?
> No there is only 1 throttler so it will throttle the same for all
> messages going through it.
>
> You can use a Content Based Router to route to different routes where each route
> suits a particular QoS.
>
> The throttler is however a bit to static as it is configured once in
> the route and then uses
> the same values at runtime.
>
> I will add a ticket to improve it so you can
> - define the throttle values using an expression
>
> What the throttler is missing is some sort of group knowledge. If we
> added some correlation expression
> then you could use that to distringiush your clients.
>
> And with this correlation id Camel can use it as a key to obtain the
> QoS for the throtteling.
> This allows it to be dynamic at runtime and use different QoS for
> different messages.
>
> And all in the same route.
>
>
>>
>> Question 2:  In this scenario the LDAP server is queried for the throttle
>> value every request and then set to the DSL each time.  I feel like this
>> isn't quite a good approach to throttling.  Wouldn't doing this somehow
>> reset the throttler each time per request?  What would be a good approach to
>> avoid resetting the throttle value each time and make successive requests
>> from the same client count towards the first throttle value set?
> Yeah see above.
>
>
>
>>
>>
>> --
>> View this message in context: http://www.nabble.com/Suggestions-on-setting-different-Throttler-values-per-Client-tp23868691p23868691.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>
>>
>
>
>
> --
> Claus Ibsen
> Apache Camel Committer
>
> Open Source Integration: http://fusesource.com
> Blog: http://davsclaus.blogspot.com/
> Twitter: http://twitter.com/davsclaus
>



-- 
Claus Ibsen
Apache Camel Committer

Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus

Re: Suggestions on setting different Throttler values per Client

Posted by Claus Ibsen <cl...@gmail.com>.
Hi

On Thu, Jun 4, 2009 at 2:11 PM, angeloNZ <an...@nz.fujitsu.com> wrote:
>
> Hi,
>
> I'm using Camel alongside ServiceMix.  I want to get advise on how to
> properly use the Throttler for a particular scenario.  I have a use case
> where clients sending requests to ServiceMix will have different Quality of
> Service values based on their gven credentials.  Once the request is
> received, an LDAP server will be queried for the client's appropriate QoS
> value.  This value is then intended to be used as the throttler value in the
> DSL definition:
>
> from("jbi:service:...").throttle(<retrieved QoS value>).to("...");
>
> Question 1:  does this approach ensure that the different clients would be
> throttled differently for the same endpoint?
No there is only 1 throttler so it will throttle the same for all
messages going through it.

You can use a Content Based Router to route to different routes where each route
suits a particular QoS.

The throttler is however a bit to static as it is configured once in
the route and then uses
the same values at runtime.

I will add a ticket to improve it so you can
- define the throttle values using an expression

What the throttler is missing is some sort of group knowledge. If we
added some correlation expression
then you could use that to distringiush your clients.

And with this correlation id Camel can use it as a key to obtain the
QoS for the throtteling.
This allows it to be dynamic at runtime and use different QoS for
different messages.

And all in the same route.


>
> Question 2:  In this scenario the LDAP server is queried for the throttle
> value every request and then set to the DSL each time.  I feel like this
> isn't quite a good approach to throttling.  Wouldn't doing this somehow
> reset the throttler each time per request?  What would be a good approach to
> avoid resetting the throttle value each time and make successive requests
> from the same client count towards the first throttle value set?
Yeah see above.



>
>
> --
> View this message in context: http://www.nabble.com/Suggestions-on-setting-different-Throttler-values-per-Client-tp23868691p23868691.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>



-- 
Claus Ibsen
Apache Camel Committer

Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus